Esempio n. 1
0
FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, FX_BOOL bRTL, FX_BOOL bVertical) {
  FX_DWORD dwProps = FX_GetUnicodeProperties(wch);
  FX_DWORD dwTemp = (dwProps & 0xFF800000);
  if (bRTL && dwTemp < 0xFF800000) {
    size_t idx = dwTemp >> 23;
    if (idx < kFXTextLayoutBidiMirrorSize) {
      wch = kFXTextLayoutBidiMirror[idx];
      dwProps = FX_GetUnicodeProperties(wch);
    }
  }
Esempio n. 2
0
bool CFX_BidiChar::AppendChar(FX_WCHAR wch) {
  uint32_t dwProps = FX_GetUnicodeProperties(wch);
  int32_t iBidiCls = (dwProps & FX_BIDICLASSBITSMASK) >> FX_BIDICLASSBITS;
  Direction direction = NEUTRAL;
  switch (iBidiCls) {
    case FX_BIDICLASS_L:
    case FX_BIDICLASS_AN:
    case FX_BIDICLASS_EN:
      direction = LEFT;
      break;
    case FX_BIDICLASS_R:
    case FX_BIDICLASS_AL:
      direction = RIGHT;
      break;
  }

  bool bChangeDirection = (direction != m_CurrentSegment.direction);
  if (bChangeDirection)
    StartNewSegment(direction);

  m_CurrentSegment.count++;
  return bChangeDirection;
}
Esempio n. 3
0
wchar_t GetFormChar(wchar_t wch, wchar_t prev, wchar_t next) {
  CFX_Char c(wch, FX_GetUnicodeProperties(wch));
  CFX_Char p(prev, FX_GetUnicodeProperties(prev));
  CFX_Char n(next, FX_GetUnicodeProperties(next));
  return GetFormChar(&c, &p, &n);
}
Esempio n. 4
0
FX_BOOL FX_IsCtrlCode(FX_WCHAR ch) {
  FX_DWORD dwRet = (FX_GetUnicodeProperties(ch) & FX_CHARTYPEBITSMASK);
  return dwRet == FX_CHARTYPE_Tab || dwRet == FX_CHARTYPE_Control;
}