// Copyright 2014 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com

#include "xfa/fde/css/fde_cssdatatable.h"

#include "core/fxcrt/include/fx_ext.h"
#include "xfa/fgas/crt/fgas_codepage.h"
#include "xfa/fgas/crt/fgas_system.h"

namespace {

uint8_t Hex2Dec(uint8_t hexHigh, uint8_t hexLow) {
  return (FXSYS_toHexDigit(hexHigh) << 4) + FXSYS_toHexDigit(hexLow);
}

}  // namespace

FX_BOOL FDE_CSSLengthToFloat(const FDE_CSSLENGTH& len,
                             FX_FLOAT fPercentBase,
                             FX_FLOAT& fResult) {
  switch (len.GetUnit()) {
    case FDE_CSSLENGTHUNIT_Point:
      fResult = len.GetValue();
      return TRUE;
    case FDE_CSSLENGTHUNIT_Percent:
      fResult = len.GetValue() * fPercentBase;
      return TRUE;
    default:
      return FALSE;
  }
}
CFX_FloatRect FDE_CSSBoundaryToRect(IFDE_CSSBoundaryStyle* pBoundStyle,
                                    FX_FLOAT fContainerWidth,
                                    FX_BOOL bPadding,
                                    FX_BOOL bBorder,
                                    FX_BOOL bMargin) {
  ASSERT(pBoundStyle != NULL);
  FX_FLOAT fResult;
  const FDE_CSSRECT* pRect;
  CFX_FloatRect rect(0, 0, 0, 0);
  if (bPadding) {
    pRect = pBoundStyle->GetPaddingWidth();
    if (pRect != NULL) {
      if (FDE_CSSLengthToFloat(pRect->left, fContainerWidth, fResult)) {
        rect.left += fResult;
      }
      if (FDE_CSSLengthToFloat(pRect->top, fContainerWidth, fResult)) {
        rect.top += fResult;
      }
      if (FDE_CSSLengthToFloat(pRect->right, fContainerWidth, fResult)) {
        rect.right += fResult;
      }
      if (FDE_CSSLengthToFloat(pRect->bottom, fContainerWidth, fResult)) {
        rect.bottom += fResult;
      }
    }
  }
  if (bBorder) {
    pRect = pBoundStyle->GetBorderWidth();
    if (pRect != NULL) {
      if (FDE_CSSLengthToFloat(pRect->left, fContainerWidth, fResult)) {
        rect.left += fResult;
      }
      if (FDE_CSSLengthToFloat(pRect->top, fContainerWidth, fResult)) {
        rect.top += fResult;
      }
      if (FDE_CSSLengthToFloat(pRect->right, fContainerWidth, fResult)) {
        rect.right += fResult;
      }
      if (FDE_CSSLengthToFloat(pRect->bottom, fContainerWidth, fResult)) {
        rect.bottom += fResult;
      }
    }
  }
  if (bMargin) {
    pRect = pBoundStyle->GetMarginWidth();
    if (pRect != NULL) {
      if (FDE_CSSLengthToFloat(pRect->left, fContainerWidth, fResult)) {
        rect.left += fResult;
      }
      if (FDE_CSSLengthToFloat(pRect->top, fContainerWidth, fResult)) {
        rect.top += fResult;
      }
      if (FDE_CSSLengthToFloat(pRect->right, fContainerWidth, fResult)) {
        rect.right += fResult;
      }
      if (FDE_CSSLengthToFloat(pRect->bottom, fContainerWidth, fResult)) {
        rect.bottom += fResult;
      }
    }
  }
  return rect;
}
uint32_t FDE_CSSFontStyleToFDE(IFDE_CSSFontStyle* pFontStyle) {
  ASSERT(pFontStyle != NULL);
  uint32_t dwFontStyle = FX_FONTSTYLE_Normal;
  if (pFontStyle->GetFontStyle() == FDE_CSSFONTSTYLE_Italic) {
    dwFontStyle |= FX_FONTSTYLE_Italic;
  }
  if (pFontStyle->GetFontWeight() >= 700) {
    dwFontStyle |= FX_FONTSTYLE_Bold;
  }
  return dwFontStyle;
}
static const FDE_CSSPROPERTYTABLE g_FDE_CSSProperties[] = {
    {FDE_CSSPROPERTY_WritingMode, L"writing-mode", 0x01878076,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_ColumnRuleWidth, L"column-rule-width", 0x0200FB00,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_BorderLeft, L"border-left", 0x04080036,
     FDE_CSSVALUETYPE_Shorthand},
    {FDE_CSSPROPERTY_ColumnRule, L"column-rule", 0x04C83DF3,
     FDE_CSSVALUETYPE_Shorthand},
    {FDE_CSSPROPERTY_Height, L"height", 0x05A5C519,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_CounterReset, L"counter-reset", 0x0894F9B0,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber | FDE_CSSVALUETYPE_MaybeString},
    {FDE_CSSPROPERTY_Content, L"content", 0x097BE91B,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeURI | FDE_CSSVALUETYPE_MaybeString},
    {FDE_CSSPROPERTY_RubyPosition, L"ruby-position", 0x09ACD024,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_BackgroundColor, L"background-color", 0x09E8E8AC,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeColor},
    {FDE_CSSPROPERTY_Width, L"width", 0x0A8A8F80,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_Src, L"src", 0x0BD37048,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeURI},
    {FDE_CSSPROPERTY_Top, L"top", 0x0BEDAF33, FDE_CSSVALUETYPE_Primitive |
                                                  FDE_CSSVALUETYPE_MaybeEnum |
                                                  FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_Margin, L"margin", 0x0CB016BE,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_BorderColor, L"border-color", 0x0CBB528A,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeColor},
    {FDE_CSSPROPERTY_Widows, L"widows", 0x1026C59D,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_BorderBottomColor, L"border-bottom-color", 0x121E22EC,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeColor},
    {FDE_CSSPROPERTY_TextIndent, L"text-indent", 0x169ADB74,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_Right, L"right", 0x193ADE3E,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_TextEmphasisStyle, L"text-emphasis-style", 0x20DBAF4A,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeString},
    {FDE_CSSPROPERTY_PaddingLeft, L"padding-left", 0x228CF02F,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_ColumnWidth, L"column-width", 0x24C9AC9B,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_MarginLeft, L"margin-left", 0x297C5656,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeNumber |
         FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_Border, L"border", 0x2A23349E, FDE_CSSVALUETYPE_Shorthand},
    {FDE_CSSPROPERTY_BorderTop, L"border-top", 0x2B866ADE,
     FDE_CSSVALUETYPE_Shorthand},
    {FDE_CSSPROPERTY_RubyOverhang, L"ruby-overhang", 0x2CCA0D89,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_PageBreakBefore, L"page-break-before", 0x3119B36F,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_MaxHeight, L"max-height", 0x343597EC,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_MinWidth, L"min-width", 0x35832871,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_BorderLeftColor, L"border-left-color", 0x35C64022,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeColor},
    {FDE_CSSPROPERTY_Bottom, L"bottom", 0x399F02B5,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_Quotes, L"quotes", 0x3D8C6A01,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeString},
    {FDE_CSSPROPERTY_MaxWidth, L"max-width", 0x3EA274F3,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_PaddingRight, L"padding-right", 0x3F616AC2,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_ListStyleImage, L"list-style-image", 0x42A8A86A,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeURI},
    {FDE_CSSPROPERTY_WhiteSpace, L"white-space", 0x42F0429A,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_BorderBottom, L"border-bottom", 0x452CE780,
     FDE_CSSVALUETYPE_Shorthand},
    {FDE_CSSPROPERTY_ListStyleType, L"list-style-type", 0x48094789,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_WordBreak, L"word-break", 0x4D74A3CE,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_OverflowX, L"overflow-x", 0x4ECEBF99,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_OverflowY, L"overflow-y", 0x4ECEBF9A,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_BorderTopColor, L"border-top-color", 0x5109B8CA,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeColor},
    {FDE_CSSPROPERTY_FontFamily, L"font-family", 0x574686E6,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeString},
    {FDE_CSSPROPERTY_Cursor, L"cursor", 0x59DFCA5E,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeString},
    {FDE_CSSPROPERTY_RubyAlign, L"ruby-align", 0x6077BDFA,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_ColumnRuleColor, L"column-rule-color", 0x65DDFD9F,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeColor},
    {FDE_CSSPROPERTY_FontWeight, L"font-weight", 0x6692F60C,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_BorderRightStyle, L"border-right-style", 0x6920DDA7,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_MinHeight, L"min-height", 0x6AAE312A,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_Color, L"color", 0x6E67921F,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeColor},
    {FDE_CSSPROPERTY_LetterSpacing, L"letter-spacing", 0x70536102,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_EmptyCells, L"empty-cells", 0x7531528F,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_TextAlign, L"text-align", 0x7553F1BD,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_RubySpan, L"ruby-span", 0x76FCFCE1,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeFunction},
    {FDE_CSSPROPERTY_Position, L"position", 0x814F82B5,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_BorderStyle, L"border-style", 0x82A4CD5C,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_BorderBottomStyle, L"border-bottom-style", 0x88079DBE,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_BorderCollapse, L"border-collapse", 0x8883C7FE,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_ColumnCount, L"column-count", 0x89936A64,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_BorderRightWidth, L"border-right-width", 0x8F5A6036,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_UnicodeBidi, L"unicode-bidi", 0x91670F6C,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_VerticalAlign, L"vertical-align", 0x934A87D2,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_PaddingTop, L"padding-top", 0x959D22B7,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_Columns, L"columns", 0x96FA5D81,
     FDE_CSSVALUETYPE_Shorthand},
    {FDE_CSSPROPERTY_Overflow, L"overflow", 0x97B76B54,
     FDE_CSSVALUETYPE_Shorthand},
    {FDE_CSSPROPERTY_TableLayout, L"table-layout", 0x9B1CB4B3,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_FontVariant, L"font-variant", 0x9C785779,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_ListStyle, L"list-style", 0x9E6C471A,
     FDE_CSSVALUETYPE_Shorthand},
    {FDE_CSSPROPERTY_BackgroundPosition, L"background-position", 0xA8846D22,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_BorderWidth, L"border-width", 0xA8DE4FEB,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_TextEmphasisColor, L"text-emphasis-color", 0xAAF23478,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeColor},
    {FDE_CSSPROPERTY_BorderLeftStyle, L"border-left-style", 0xABAFBAF4,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_PageBreakInside, L"page-break-inside", 0xACB695F8,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_TextEmphasis, L"text-emphasis", 0xAD0E580C,
     FDE_CSSVALUETYPE_Shorthand},
    {FDE_CSSPROPERTY_BorderBottomWidth, L"border-bottom-width", 0xAE41204D,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_ColumnGap, L"column-gap", 0xB5C1BA73,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_Orphans, L"orphans", 0xB716467B,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_BorderRight, L"border-right", 0xB78E9EA9,
     FDE_CSSVALUETYPE_Shorthand},
    {FDE_CSSPROPERTY_FontSize, L"font-size", 0xB93956DF,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_PageBreakAfter, L"page-break-after", 0xBC358AEE,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_CaptionSide, L"caption-side", 0xC03F3560,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_BackgroundRepeat, L"background-repeat", 0xC2C2FDCE,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_BorderTopStyle, L"border-top-style", 0xC6F3339C,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_BorderSpacing, L"border-spacing", 0xC72030F0,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_TextTransform, L"text-transform", 0xC88EEA6E,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_FontStyle, L"font-style", 0xCB1950F5,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_Font, L"font", 0xCD308B77, FDE_CSSVALUETYPE_Shorthand},
    {FDE_CSSPROPERTY_LineHeight, L"line-height", 0xCFCACE2E,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_MarginRight, L"margin-right", 0xD13C58C9,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeNumber |
         FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_Float, L"float", 0xD1532876,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_BorderLeftWidth, L"border-left-width", 0xD1E93D83,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_Display, L"display", 0xD4224C36,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_Clear, L"clear", 0xD8ED1467,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_ColumnRuleStyle, L"column-rule-style", 0xDBC77871,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_TextCombine, L"text-combine", 0xDC5207CF,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_ListStylePosition, L"list-style-position", 0xE1A1DE3C,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_Visibility, L"visibility", 0xE29F5168,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_PaddingBottom, L"padding-bottom", 0xE555B3B9,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_BackgroundAttachment, L"background-attachment", 0xE77981F6,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_BackgroundImage, L"background-image", 0xE9AEB710,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeURI},
    {FDE_CSSPROPERTY_LineBreak, L"line-break", 0xEA2D1D9A,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_Background, L"background", 0xEB49DD40,
     FDE_CSSVALUETYPE_Shorthand},
    {FDE_CSSPROPERTY_BorderTopWidth, L"border-top-width", 0xED2CB62B,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_WordSpacing, L"word-spacing", 0xEDA63BAE,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_BorderRightColor, L"border-right-color", 0xF33762D5,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeColor},
    {FDE_CSSPROPERTY_CounterIncrement, L"counter-increment", 0xF4CFB1B2,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber | FDE_CSSVALUETYPE_MaybeString},
    {FDE_CSSPROPERTY_Left, L"left", 0xF5AD782B,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum |
         FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_TextDecoration, L"text-decoration", 0xF7C634BA,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_Padding, L"padding", 0xF8C373F7,
     FDE_CSSVALUETYPE_List | FDE_CSSVALUETYPE_MaybeNumber},
    {FDE_CSSPROPERTY_MarginBottom, L"margin-bottom", 0xF93485A0,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeNumber |
         FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_MarginTop, L"margin-top", 0xFE51DCFE,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeNumber |
         FDE_CSSVALUETYPE_MaybeEnum},
    {FDE_CSSPROPERTY_Direction, L"direction", 0xFE746E61,
     FDE_CSSVALUETYPE_Primitive | FDE_CSSVALUETYPE_MaybeEnum},
};
static const FDE_CSSPROPERTYVALUETABLE g_FDE_CSSPropertyValues[] = {
    {FDE_CSSPROPERTYVALUE_Bolder, L"bolder", 0x009F1058},
    {FDE_CSSPROPERTYVALUE_LowerLatin, L"lower-latin", 0x016014CE},
    {FDE_CSSPROPERTYVALUE_Lowercase, L"lowercase", 0x02ACB805},
    {FDE_CSSPROPERTYVALUE_LowerGreek, L"lower-greek", 0x03D81D64},
    {FDE_CSSPROPERTYVALUE_Sesame, L"sesame", 0x0432ECDE},
    {FDE_CSSPROPERTYVALUE_None, L"none", 0x048B6670},
    {FDE_CSSPROPERTYVALUE_NwResize, L"nw-resize", 0x054B4BE4},
    {FDE_CSSPROPERTYVALUE_WResize, L"w-resize", 0x0A2F8D76},
    {FDE_CSSPROPERTYVALUE_Dot, L"dot", 0x0A48CB27},
    {FDE_CSSPROPERTYVALUE_End, L"end", 0x0A631437},
    {FDE_CSSPROPERTYVALUE_Ltr, L"ltr", 0x0B1B56D2},
    {FDE_CSSPROPERTYVALUE_Pre, L"pre", 0x0B848587},
    {FDE_CSSPROPERTYVALUE_Rtl, L"rtl", 0x0BB92C52},
    {FDE_CSSPROPERTYVALUE_Sub, L"sub", 0x0BD37FAA},
    {FDE_CSSPROPERTYVALUE_Top, L"top", 0x0BEDAF33},
    {FDE_CSSPROPERTYVALUE_Visible, L"visible", 0x0F55D7EE},
    {FDE_CSSPROPERTYVALUE_Filled, L"filled", 0x10827DD0},
    {FDE_CSSPROPERTYVALUE_SwResize, L"sw-resize", 0x10B548E9},
    {FDE_CSSPROPERTYVALUE_NoRepeat, L"no-repeat", 0x1235C18B},
    {FDE_CSSPROPERTYVALUE_Default, L"default", 0x14DA2125},
    {FDE_CSSPROPERTYVALUE_Transparent, L"transparent", 0x17B64DB2},
    {FDE_CSSPROPERTYVALUE_Ridge, L"ridge", 0x18EBEE4B},
    {FDE_CSSPROPERTYVALUE_Right, L"right", 0x193ADE3E},
    {FDE_CSSPROPERTYVALUE_HorizontalTb, L"horizontal-tb", 0x1A66A86D},
    {FDE_CSSPROPERTYVALUE_DistributeLetter, L"distribute-letter", 0x1EDBD75C},
    {FDE_CSSPROPERTYVALUE_DoubleCircle, L"double-circle", 0x1FF082BA},
    {FDE_CSSPROPERTYVALUE_Ruby, L"ruby", 0x20D66C02},
    {FDE_CSSPROPERTYVALUE_Collapse, L"collapse", 0x2128D673},
    {FDE_CSSPROPERTYVALUE_Normal, L"normal", 0x247CF3E9},
    {FDE_CSSPROPERTYVALUE_Avoid, L"avoid", 0x24E684B3},
    {FDE_CSSPROPERTYVALUE_UpperRoman, L"upper-roman", 0x28BAC2B6},
    {FDE_CSSPROPERTYVALUE_Auto, L"auto", 0x2B35B6D9},
    {FDE_CSSPROPERTYVALUE_Text, L"text", 0x2D08AF85},
    {FDE_CSSPROPERTYVALUE_XSmall, L"x-small", 0x2D2FCAFE},
    {FDE_CSSPROPERTYVALUE_Thin, L"thin", 0x2D574D53},
    {FDE_CSSPROPERTYVALUE_Repeat, L"repeat", 0x306614A1},
    {FDE_CSSPROPERTYVALUE_Small, L"small", 0x316A3739},
    {FDE_CSSPROPERTYVALUE_NeResize, L"ne-resize", 0x31FD5E12},
    {FDE_CSSPROPERTYVALUE_NoContent, L"no-content", 0x33A1C545},
    {FDE_CSSPROPERTYVALUE_Outside, L"outside", 0x36DF693D},
    {FDE_CSSPROPERTYVALUE_EResize, L"e-resize", 0x36E19FA4},
    {FDE_CSSPROPERTYVALUE_TableRow, L"table-row", 0x3912A02D},
    {FDE_CSSPROPERTYVALUE_Bottom, L"bottom", 0x399F02B5},
    {FDE_CSSPROPERTYVALUE_Underline, L"underline", 0x3A0273A6},
    {FDE_CSSPROPERTYVALUE_CjkIdeographic, L"cjk-ideographic", 0x3A641CC4},
    {FDE_CSSPROPERTYVALUE_SeResize, L"se-resize", 0x3D675B17},
    {FDE_CSSPROPERTYVALUE_Fixed, L"fixed", 0x3D7DEB10},
    {FDE_CSSPROPERTYVALUE_Double, L"double", 0x3D98515B},
    {FDE_CSSPROPERTYVALUE_Solid, L"solid", 0x40623B5B},
    {FDE_CSSPROPERTYVALUE_RubyBaseGroup, L"ruby-base-group", 0x41014E84},
    {FDE_CSSPROPERTYVALUE_OpenQuote, L"open-quote", 0x44A41E8D},
    {FDE_CSSPROPERTYVALUE_Lighter, L"lighter", 0x45BEB7AF},
    {FDE_CSSPROPERTYVALUE_LowerRoman, L"lower-roman", 0x5044D253},
    {FDE_CSSPROPERTYVALUE_Strict, L"strict", 0x52F4EBD9},
    {FDE_CSSPROPERTYVALUE_TableCaption, L"table-caption", 0x5325CD63},
    {FDE_CSSPROPERTYVALUE_Oblique, L"oblique", 0x53EBDDB1},
    {FDE_CSSPROPERTYVALUE_Decimal, L"decimal", 0x54034C2F},
    {FDE_CSSPROPERTYVALUE_Loose, L"loose", 0x54D3A1E2},
    {FDE_CSSPROPERTYVALUE_Hebrew, L"hebrew", 0x565792DD},
    {FDE_CSSPROPERTYVALUE_Hidden, L"hidden", 0x573CB40C},
    {FDE_CSSPROPERTYVALUE_Dashed, L"dashed", 0x58A3DD29},
    {FDE_CSSPROPERTYVALUE_Embed, L"embed", 0x59C8F27D},
    {FDE_CSSPROPERTYVALUE_TableRowGroup, L"table-row-group", 0x5A43BD07},
    {FDE_CSSPROPERTYVALUE_TableColumn, L"table-column", 0x5E705DA3},
    {FDE_CSSPROPERTYVALUE_Static, L"static", 0x5E7555E8},
    {FDE_CSSPROPERTYVALUE_Outset, L"outset", 0x61236164},
    {FDE_CSSPROPERTYVALUE_DecimalLeadingZero, L"decimal-leading-zero",
     0x61DFC55D},
    {FDE_CSSPROPERTYVALUE_KeepWords, L"keep-words", 0x63964801},
    {FDE_CSSPROPERTYVALUE_KatakanaIroha, L"katakana-iroha", 0x65D7C91C},
    {FDE_CSSPROPERTYVALUE_Super, L"super", 0x6A4F842F},
    {FDE_CSSPROPERTYVALUE_Center, L"center", 0x6C51AFC1},
    {FDE_CSSPROPERTYVALUE_TableHeaderGroup, L"table-header-group", 0x706103D8},
    {FDE_CSSPROPERTYVALUE_Inside, L"inside", 0x709CB0FC},
    {FDE_CSSPROPERTYVALUE_XxLarge, L"xx-large", 0x70BB1508},
    {FDE_CSSPROPERTYVALUE_Triangle, L"triangle", 0x7524EDF6},
    {FDE_CSSPROPERTYVALUE_RubyTextGroup, L"ruby-text-group", 0x78C2B98E},
    {FDE_CSSPROPERTYVALUE_Circle, L"circle", 0x7ABEC0D2},
    {FDE_CSSPROPERTYVALUE_Hiragana, L"hiragana", 0x7BF5E25B},
    {FDE_CSSPROPERTYVALUE_RepeatX, L"repeat-x", 0x7C8F3226},
    {FDE_CSSPROPERTYVALUE_RepeatY, L"repeat-y", 0x7C8F3227},
    {FDE_CSSPROPERTYVALUE_Move, L"move", 0x7DA03417},
    {FDE_CSSPROPERTYVALUE_HiraganaIroha, L"hiragana-iroha", 0x7EE863FB},
    {FDE_CSSPROPERTYVALUE_RubyBase, L"ruby-base", 0x7FD1B1EA},
    {FDE_CSSPROPERTYVALUE_Scroll, L"scroll", 0x84787AEF},
    {FDE_CSSPROPERTYVALUE_Smaller, L"smaller", 0x849769F0},
    {FDE_CSSPROPERTYVALUE_TableFooterGroup, L"table-footer-group", 0x85BDD97E},
    {FDE_CSSPROPERTYVALUE_Baseline, L"baseline", 0x87436BA3},
    {FDE_CSSPROPERTYVALUE_Separate, L"separate", 0x877C66B5},
    {FDE_CSSPROPERTYVALUE_Armenian, L"armenian", 0x889BE4EB},
    {FDE_CSSPROPERTYVALUE_Open, L"open", 0x8B90E1F2},
    {FDE_CSSPROPERTYVALUE_Relative, L"relative", 0x8C995B5C},
    {FDE_CSSPROPERTYVALUE_Thick, L"thick", 0x8CC35EB3},
    {FDE_CSSPROPERTYVALUE_Justify, L"justify", 0x8D269CAE},
    {FDE_CSSPROPERTYVALUE_Middle, L"middle", 0x947FA00F},
    {FDE_CSSPROPERTYVALUE_Always, L"always", 0x959AB231},
    {FDE_CSSPROPERTYVALUE_DistributeSpace, L"distribute-space", 0x97A20E58},
    {FDE_CSSPROPERTYVALUE_LineEdge, L"line-edge", 0x9A845D2A},
    {FDE_CSSPROPERTYVALUE_PreWrap, L"pre-wrap", 0x9D59588E},
    {FDE_CSSPROPERTYVALUE_Medium, L"medium", 0xA084A381},
    {FDE_CSSPROPERTYVALUE_NResize, L"n-resize", 0xA088968D},
    {FDE_CSSPROPERTYVALUE_ListItem, L"list-item", 0xA32382B8},
    {FDE_CSSPROPERTYVALUE_Show, L"show", 0xA66C10C1},
    {FDE_CSSPROPERTYVALUE_Currentcolor, L"currentColor", 0xA7883922},
    {FDE_CSSPROPERTYVALUE_NoCloseQuote, L"no-close-quote", 0xA79CBFFB},
    {FDE_CSSPROPERTYVALUE_VerticalLr, L"vertical-lr", 0xA8673F65},
    {FDE_CSSPROPERTYVALUE_VerticalRl, L"vertical-rl", 0xA8675E25},
    {FDE_CSSPROPERTYVALUE_Pointer, L"pointer", 0xA90929C1},
    {FDE_CSSPROPERTYVALUE_XxSmall, L"xx-small", 0xADE1FC76},
    {FDE_CSSPROPERTYVALUE_Bold, L"bold", 0xB18313A1},
    {FDE_CSSPROPERTYVALUE_Both, L"both", 0xB1833CAD},
    {FDE_CSSPROPERTYVALUE_SmallCaps, L"small-caps", 0xB299428D},
    {FDE_CSSPROPERTYVALUE_Katakana, L"katakana", 0xB421A4BC},
    {FDE_CSSPROPERTYVALUE_After, L"after", 0xB6B44172},
    {FDE_CSSPROPERTYVALUE_Horizontal, L"horizontal", 0xB7732DEA},
    {FDE_CSSPROPERTYVALUE_Dotted, L"dotted", 0xB88652A4},
    {FDE_CSSPROPERTYVALUE_Disc, L"disc", 0xBEBC18C3},
    {FDE_CSSPROPERTYVALUE_Georgian, L"georgian", 0xBEF99E8C},
    {FDE_CSSPROPERTYVALUE_Inline, L"inline", 0xC02D649F},
    {FDE_CSSPROPERTYVALUE_Overline, L"overline", 0xC0EC9FA4},
    {FDE_CSSPROPERTYVALUE_Wait, L"wait", 0xC1613BB5},
    {FDE_CSSPROPERTYVALUE_BreakAll, L"break-all", 0xC3145BAB},
    {FDE_CSSPROPERTYVALUE_UpperAlpha, L"upper-alpha", 0xC52D4A9F},
    {FDE_CSSPROPERTYVALUE_Capitalize, L"capitalize", 0xC5321D46},
    {FDE_CSSPROPERTYVALUE_Nowrap, L"nowrap", 0xC7994417},
    {FDE_CSSPROPERTYVALUE_TextBottom, L"text-bottom", 0xC7D08D87},
    {FDE_CSSPROPERTYVALUE_NoOpenQuote, L"no-open-quote", 0xC8CD7877},
    {FDE_CSSPROPERTYVALUE_Groove, L"groove", 0xCB24A412},
    {FDE_CSSPROPERTYVALUE_Progress, L"progress", 0xCD1D9835},
    {FDE_CSSPROPERTYVALUE_Larger, L"larger", 0xCD3C409D},
    {FDE_CSSPROPERTYVALUE_CloseQuote, L"close-quote", 0xCF8696D1},
    {FDE_CSSPROPERTYVALUE_TableCell, L"table-cell", 0xCFB5E595},
    {FDE_CSSPROPERTYVALUE_PreLine, L"pre-line", 0xD04FEDBC},
    {FDE_CSSPROPERTYVALUE_Absolute, L"absolute", 0xD0B2D55F},
    {FDE_CSSPROPERTYVALUE_InlineTable, L"inline-table", 0xD131F494},
    {FDE_CSSPROPERTYVALUE_BidiOverride, L"bidi-override", 0xD161FDE5},
    {FDE_CSSPROPERTYVALUE_InlineBlock, L"inline-block", 0xD26A8BD7},
    {FDE_CSSPROPERTYVALUE_Inset, L"inset", 0xD6F23243},
    {FDE_CSSPROPERTYVALUE_Crosshair, L"crosshair", 0xD6F8018E},
    {FDE_CSSPROPERTYVALUE_UpperLatin, L"upper-latin", 0xD9D60531},
    {FDE_CSSPROPERTYVALUE_Help, L"help", 0xDA002969},
    {FDE_CSSPROPERTYVALUE_Hide, L"hide", 0xDA69395A},
    {FDE_CSSPROPERTYVALUE_Uppercase, L"uppercase", 0xDAD595A8},
    {FDE_CSSPROPERTYVALUE_SResize, L"s-resize", 0xDB3AADF2},
    {FDE_CSSPROPERTYVALUE_Table, L"table", 0xDB9BE968},
    {FDE_CSSPROPERTYVALUE_Blink, L"blink", 0xDC36E390},
    {FDE_CSSPROPERTYVALUE_Block, L"block", 0xDCD480AB},
    {FDE_CSSPROPERTYVALUE_Start, L"start", 0xE1D9D5AE},
    {FDE_CSSPROPERTYVALUE_TableColumnGroup, L"table-column-group", 0xE2258EFD},
    {FDE_CSSPROPERTYVALUE_Italic, L"italic", 0xE31D5396},
    {FDE_CSSPROPERTYVALUE_LineThrough, L"line-through", 0xE4C5A276},
    {FDE_CSSPROPERTYVALUE_KeepAll, L"keep-all", 0xE704A72B},
    {FDE_CSSPROPERTYVALUE_LowerAlpha, L"lower-alpha", 0xECB75A3C},
    {FDE_CSSPROPERTYVALUE_RunIn, L"run-in", 0xEEC930B9},
    {FDE_CSSPROPERTYVALUE_Square, L"square", 0xEF85D351},
    {FDE_CSSPROPERTYVALUE_XLarge, L"x-large", 0xF008E390},
    {FDE_CSSPROPERTYVALUE_Large, L"large", 0xF4434FCB},
    {FDE_CSSPROPERTYVALUE_Before, L"before", 0xF4FFCE73},
    {FDE_CSSPROPERTYVALUE_Left, L"left", 0xF5AD782B},
    {FDE_CSSPROPERTYVALUE_TextTop, L"text-top", 0xFCB58D45},
    {FDE_CSSPROPERTYVALUE_RubyText, L"ruby-text", 0xFCC77174},
    {FDE_CSSPROPERTYVALUE_NoDisplay, L"no-display", 0xFE482860},
};
static const FDE_CSSMEDIATYPETABLE g_FDE_CSSMediaTypes[] = {
    {0xF09, 0x02},  {0x4880, 0x20}, {0x536A, 0x80},
    {0x741D, 0x10}, {0x76ED, 0x08}, {0x7CFB, 0x01},
    {0x9578, 0x04}, {0xC8E1, 0x40}, {0xD0F9, 0xFF},
};
static const FDE_CSSLENGTHUNITTABLE g_FDE_CSSLengthUnits[] = {
    {0x0672, 3},  {0x067D, 4}, {0x1AF7, 8}, {0x2F7A, 7},
    {0x3ED3, 10}, {0x3EE4, 9}, {0x3EE8, 5}, {0xFC30, 6},
};
static const FDE_CSSCOLORTABLE g_FDE_CSSColors[] = {
    {0x031B47FE, 0xff000080}, {0x0BB8DF5B, 0xffff0000},
    {0x0D82A78C, 0xff800000}, {0x2ACC82E8, 0xff00ffff},
    {0x2D083986, 0xff008080}, {0x4A6A6195, 0xffc0c0c0},
    {0x546A8EF3, 0xff808080}, {0x65C9169C, 0xffffa500},
    {0x8422BB61, 0xffffffff}, {0x9271A558, 0xff800080},
    {0xA65A3EE3, 0xffff00ff}, {0xB1345708, 0xff0000ff},
    {0xB6D2CF1F, 0xff808000}, {0xD19B5E1C, 0xffffff00},
    {0xDB64391D, 0xff000000}, {0xF616D507, 0xff00ff00},
    {0xF6EFFF31, 0xff008000},
};
static const FDE_CSSPERSUDOTABLE g_FDE_CSSPersudoType[] = {
    {FDE_CSSPERSUDO_After, L":after", 0x16EE1FEC},
    {FDE_CSSPERSUDO_Before, L":before", 0x7DCDDE2D},
};
FDE_LPCCSSPERSUDOTABLE FDE_GetCSSPersudoByEnum(FDE_CSSPERSUDO ePersudo) {
  return (ePersudo < FDE_CSSPERSUDO_NONE) ? (g_FDE_CSSPersudoType + ePersudo)
                                          : NULL;
}
const FDE_CSSPROPERTYTABLE* FDE_GetCSSPropertyByName(
    const CFX_WideStringC& wsName) {
  ASSERT(!wsName.IsEmpty());
  uint32_t dwHash = FX_HashCode_GetW(wsName, true);
  int32_t iEnd = FDE_CSSPROPERTY_MAX - 1;
  int32_t iMid, iStart = 0;
  uint32_t dwMid;
  do {
    iMid = (iStart + iEnd) / 2;
    dwMid = g_FDE_CSSProperties[iMid].dwHash;
    if (dwHash == dwMid) {
      return g_FDE_CSSProperties + iMid;
    } else if (dwHash > dwMid) {
      iStart = iMid + 1;
    } else {
      iEnd = iMid - 1;
    }
  } while (iStart <= iEnd);
  return NULL;
}
const FDE_CSSPROPERTYTABLE* FDE_GetCSSPropertyByEnum(FDE_CSSPROPERTY eName) {
  return (eName < FDE_CSSPROPERTY_MAX) ? (g_FDE_CSSProperties + eName) : NULL;
}
const FDE_CSSPROPERTYVALUETABLE* FDE_GetCSSPropertyValueByName(
    const CFX_WideStringC& wsName) {
  ASSERT(!wsName.IsEmpty());
  uint32_t dwHash = FX_HashCode_GetW(wsName, true);
  int32_t iEnd = FDE_CSSPROPERTYVALUE_MAX - 1;
  int32_t iMid, iStart = 0;
  uint32_t dwMid;
  do {
    iMid = (iStart + iEnd) / 2;
    dwMid = g_FDE_CSSPropertyValues[iMid].dwHash;
    if (dwHash == dwMid) {
      return g_FDE_CSSPropertyValues + iMid;
    } else if (dwHash > dwMid) {
      iStart = iMid + 1;
    } else {
      iEnd = iMid - 1;
    }
  } while (iStart <= iEnd);
  return NULL;
}
const FDE_CSSPROPERTYVALUETABLE* FDE_GetCSSPropertyValueByEnum(
    FDE_CSSPROPERTYVALUE eName) {
  return (eName < FDE_CSSPROPERTYVALUE_MAX) ? (g_FDE_CSSPropertyValues + eName)
                                            : NULL;
}
FDE_LPCCSSMEDIATYPETABLE FDE_GetCSSMediaTypeByName(
    const CFX_WideStringC& wsName) {
  ASSERT(!wsName.IsEmpty());
  uint16_t wHash = FX_HashCode_GetW(wsName, true);
  int32_t iEnd =
      sizeof(g_FDE_CSSMediaTypes) / sizeof(FDE_CSSMEDIATYPETABLE) - 1;
  int32_t iMid, iStart = 0;
  uint16_t uMid;
  do {
    iMid = (iStart + iEnd) / 2;
    uMid = g_FDE_CSSMediaTypes[iMid].wHash;
    if (wHash == uMid) {
      return g_FDE_CSSMediaTypes + iMid;
    } else if (wHash > uMid) {
      iStart = iMid + 1;
    } else {
      iEnd = iMid - 1;
    }
  } while (iStart <= iEnd);
  return NULL;
}
FDE_LPCCSSLENGTHUNITTABLE FDE_GetCSSLengthUnitByName(
    const CFX_WideStringC& wsName) {
  ASSERT(!wsName.IsEmpty());
  uint16_t wHash = FX_HashCode_GetW(wsName, true);
  int32_t iEnd =
      sizeof(g_FDE_CSSLengthUnits) / sizeof(FDE_CSSLENGTHUNITTABLE) - 1;
  int32_t iMid, iStart = 0;
  uint16_t wMid;
  do {
    iMid = (iStart + iEnd) / 2;
    wMid = g_FDE_CSSLengthUnits[iMid].wHash;
    if (wHash == wMid) {
      return g_FDE_CSSLengthUnits + iMid;
    } else if (wHash > wMid) {
      iStart = iMid + 1;
    } else {
      iEnd = iMid - 1;
    }
  } while (iStart <= iEnd);
  return NULL;
}
FDE_LPCCSSCOLORTABLE FDE_GetCSSColorByName(const CFX_WideStringC& wsName) {
  ASSERT(!wsName.IsEmpty());
  uint32_t dwHash = FX_HashCode_GetW(wsName, true);
  int32_t iEnd = sizeof(g_FDE_CSSColors) / sizeof(FDE_CSSCOLORTABLE) - 1;
  int32_t iMid, iStart = 0;
  uint32_t dwMid;
  do {
    iMid = (iStart + iEnd) / 2;
    dwMid = g_FDE_CSSColors[iMid].dwHash;
    if (dwHash == dwMid) {
      return g_FDE_CSSColors + iMid;
    } else if (dwHash > dwMid) {
      iStart = iMid + 1;
    } else {
      iEnd = iMid - 1;
    }
  } while (iStart <= iEnd);
  return NULL;
}

FX_BOOL FDE_ParseCSSNumber(const FX_WCHAR* pszValue,
                           int32_t iValueLen,
                           FX_FLOAT& fValue,
                           FDE_CSSPRIMITIVETYPE& eUnit) {
  ASSERT(pszValue && iValueLen > 0);
  int32_t iUsedLen = 0;
  fValue = FX_wcstof(pszValue, iValueLen, &iUsedLen);
  if (iUsedLen <= 0)
    return FALSE;

  iValueLen -= iUsedLen;
  pszValue += iUsedLen;
  eUnit = FDE_CSSPRIMITIVETYPE_Number;
  if (iValueLen >= 1 && *pszValue == '%') {
    eUnit = FDE_CSSPRIMITIVETYPE_Percent;
  } else if (iValueLen == 2) {
    FDE_LPCCSSLENGTHUNITTABLE pUnit =
        FDE_GetCSSLengthUnitByName(CFX_WideStringC(pszValue, 2));
    if (pUnit)
      eUnit = (FDE_CSSPRIMITIVETYPE)pUnit->wValue;
  }
  return TRUE;
}

FX_BOOL FDE_ParseCSSString(const FX_WCHAR* pszValue,
                           int32_t iValueLen,
                           int32_t& iOffset,
                           int32_t& iLength) {
  ASSERT(pszValue != NULL && iValueLen > 0);
  iOffset = 0;
  iLength = iValueLen;
  if (iValueLen >= 2) {
    FX_WCHAR first = pszValue[0], last = pszValue[iValueLen - 1];
    if ((first == '\"' && last == '\"') || (first == '\'' && last == '\'')) {
      iOffset = 1, iLength -= 2;
    }
  }
  return iValueLen > 0;
}

FX_BOOL FDE_ParseCSSURI(const FX_WCHAR* pszValue,
                        int32_t iValueLen,
                        int32_t& iOffset,
                        int32_t& iLength) {
  ASSERT(pszValue != NULL && iValueLen > 0);
  if (iValueLen < 6 || pszValue[iValueLen - 1] != ')' ||
      FX_wcsnicmp(L"url(", pszValue, 4)) {
    return FALSE;
  }
  if (FDE_ParseCSSString(pszValue + 4, iValueLen - 5, iOffset, iLength)) {
    iOffset += 4;
    return TRUE;
  }
  return FALSE;
}

FX_BOOL FDE_ParseCSSColor(const FX_WCHAR* pszValue,
                          int32_t iValueLen,
                          FX_ARGB& dwColor) {
  ASSERT(pszValue && iValueLen > 0);

  if (*pszValue == '#') {
    switch (iValueLen) {
      case 4: {
        uint8_t red = Hex2Dec((uint8_t)pszValue[1], (uint8_t)pszValue[1]);
        uint8_t green = Hex2Dec((uint8_t)pszValue[2], (uint8_t)pszValue[2]);
        uint8_t blue = Hex2Dec((uint8_t)pszValue[3], (uint8_t)pszValue[3]);
        dwColor = ArgbEncode(255, red, green, blue);
        return TRUE;
      }
      case 7: {
        uint8_t red = Hex2Dec((uint8_t)pszValue[1], (uint8_t)pszValue[2]);
        uint8_t green = Hex2Dec((uint8_t)pszValue[3], (uint8_t)pszValue[4]);
        uint8_t blue = Hex2Dec((uint8_t)pszValue[5], (uint8_t)pszValue[6]);
        dwColor = ArgbEncode(255, red, green, blue);
        return TRUE;
      }
      default:
        return FALSE;
    }
  }

  if (iValueLen >= 10) {
    if (pszValue[iValueLen - 1] != ')' || FX_wcsnicmp(L"rgb(", pszValue, 4))
      return FALSE;

    uint8_t rgb[3] = {0};
    FX_FLOAT fValue;
    FDE_CSSPRIMITIVETYPE eType;
    CFDE_CSSValueListParser list(pszValue + 4, iValueLen - 5, ',');
    for (int32_t i = 0; i < 3; ++i) {
      if (!list.NextValue(eType, pszValue, iValueLen))
        return FALSE;
      if (eType != FDE_CSSPRIMITIVETYPE_Number)
        return FALSE;
      if (!FDE_ParseCSSNumber(pszValue, iValueLen, fValue, eType))
        return FALSE;

      rgb[i] = eType == FDE_CSSPRIMITIVETYPE_Percent
                   ? FXSYS_round(fValue * 2.55f)
                   : FXSYS_round(fValue);
    }
    dwColor = ArgbEncode(255, rgb[0], rgb[1], rgb[2]);
    return TRUE;
  }

  FDE_LPCCSSCOLORTABLE pColor =
      FDE_GetCSSColorByName(CFX_WideStringC(pszValue, iValueLen));
  if (!pColor)
    return FALSE;

  dwColor = pColor->dwValue;
  return TRUE;
}

CFDE_CSSValueList::CFDE_CSSValueList(IFX_MemoryAllocator* pStaticStore,
                                     const CFDE_CSSValueArray& list) {
  m_iCount = list.GetSize();
  int32_t iByteCount = m_iCount * sizeof(IFDE_CSSValue*);
  m_ppList = (IFDE_CSSValue**)pStaticStore->Alloc(iByteCount);
  FXSYS_memcpy(m_ppList, list.GetData(), iByteCount);
}
FX_BOOL CFDE_CSSValueListParser::NextValue(FDE_CSSPRIMITIVETYPE& eType,
                                           const FX_WCHAR*& pStart,
                                           int32_t& iLength) {
  while (m_pCur < m_pEnd && (*m_pCur <= ' ' || *m_pCur == m_Separator)) {
    ++m_pCur;
  }
  if (m_pCur >= m_pEnd) {
    return FALSE;
  }
  eType = FDE_CSSPRIMITIVETYPE_Unknown;
  pStart = m_pCur;
  iLength = 0;
  FX_WCHAR wch = *m_pCur;
  if (wch == '#') {
    iLength = SkipTo(' ');
    if (iLength == 4 || iLength == 7) {
      eType = FDE_CSSPRIMITIVETYPE_RGB;
    }
  } else if ((wch >= '0' && wch <= '9') || wch == '.' || wch == '-' ||
             wch == '+') {
    while (m_pCur < m_pEnd && (*m_pCur > ' ' && *m_pCur != m_Separator)) {
      ++m_pCur;
    }
    iLength = m_pCur - pStart;
    if (iLength > 0) {
      eType = FDE_CSSPRIMITIVETYPE_Number;
    }
  } else if (wch == '\"' || wch == '\'') {
    pStart++;
    iLength = SkipTo(wch) - 1;
    m_pCur++;
    eType = FDE_CSSPRIMITIVETYPE_String;
  } else if (m_pEnd - m_pCur > 5 && m_pCur[3] == '(') {
    if (FX_wcsnicmp(L"url", m_pCur, 3) == 0) {
      wch = m_pCur[4];
      if (wch == '\"' || wch == '\'') {
        pStart += 5;
        iLength = SkipTo(wch) - 6;
        m_pCur += 2;
      } else {
        pStart += 4;
        iLength = SkipTo(')') - 4;
        m_pCur++;
      }
      eType = FDE_CSSPRIMITIVETYPE_URI;
    } else if (FX_wcsnicmp(L"rgb", m_pCur, 3) == 0) {
      iLength = SkipTo(')') + 1;
      m_pCur++;
      eType = FDE_CSSPRIMITIVETYPE_RGB;
    }
  } else {
    iLength = SkipTo(m_Separator, TRUE, TRUE);
    eType = FDE_CSSPRIMITIVETYPE_String;
  }
  return m_pCur <= m_pEnd && iLength > 0;
}
int32_t CFDE_CSSValueListParser::SkipTo(FX_WCHAR wch,
                                        FX_BOOL bWSSeparator,
                                        FX_BOOL bBrContinue) {
  const FX_WCHAR* pStart = m_pCur;
  if (!bBrContinue) {
    if (bWSSeparator) {
      while ((++m_pCur < m_pEnd) && (*m_pCur != wch) && (*m_pCur > ' ')) {
        continue;
      }
    } else {
      while (++m_pCur < m_pEnd && *m_pCur != wch) {
        continue;
      }
    }

  } else {
    int32_t iBracketCount = 0;
    if (bWSSeparator) {
      while ((m_pCur < m_pEnd) && (*m_pCur != wch) && (*m_pCur > ' ')) {
        if (*m_pCur == '(') {
          iBracketCount++;
        } else if (*m_pCur == ')') {
          iBracketCount--;
        }
        m_pCur++;
      }
    } else {
      while (m_pCur < m_pEnd && *m_pCur != wch) {
        if (*m_pCur == '(') {
          iBracketCount++;
        } else if (*m_pCur == ')') {
          iBracketCount--;
        }
        m_pCur++;
      }
    }
    while (iBracketCount > 0 && m_pCur < m_pEnd) {
      if (*m_pCur == ')') {
        iBracketCount--;
      }
      m_pCur++;
    }
  }
  return m_pCur - pStart;
}
