diff options
Diffstat (limited to 'core/fxcrt/css/cfx_css.h')
-rw-r--r-- | core/fxcrt/css/cfx_css.h | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/core/fxcrt/css/cfx_css.h b/core/fxcrt/css/cfx_css.h new file mode 100644 index 0000000000..7b1d7d3f99 --- /dev/null +++ b/core/fxcrt/css/cfx_css.h @@ -0,0 +1,242 @@ +// 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 + +#ifndef CORE_FXCRT_CSS_CFX_CSS_H_ +#define CORE_FXCRT_CSS_CFX_CSS_H_ + +#include "core/fxcrt/cfx_seekablestreamproxy.h" +#include "core/fxge/fx_dib.h" + +enum CFX_CSSVALUETYPE { + CFX_CSSVALUETYPE_Primitive = 1 << 0, + CFX_CSSVALUETYPE_List = 1 << 1, + CFX_CSSVALUETYPE_Shorthand = 1 << 2, + // Note the values below this comment must be > 0x0F so we can mask the above. + CFX_CSSVALUETYPE_MaybeNumber = 1 << 4, + CFX_CSSVALUETYPE_MaybeEnum = 1 << 5, + CFX_CSSVALUETYPE_MaybeString = 1 << 7, + CFX_CSSVALUETYPE_MaybeColor = 1 << 8 +}; + +enum class CFX_CSSPrimitiveType : uint8_t { + Unknown = 0, + Number, + String, + RGB, + Enum, + Function, + List, +}; + +enum class CFX_CSSPropertyValue : uint8_t { + Bolder = 0, + None, + Dot, + Sub, + Top, + Right, + Normal, + Auto, + Text, + XSmall, + Thin, + Small, + Bottom, + Underline, + Double, + Lighter, + Oblique, + Super, + Center, + XxLarge, + Smaller, + Baseline, + Thick, + Justify, + Middle, + Medium, + ListItem, + XxSmall, + Bold, + SmallCaps, + Inline, + Overline, + TextBottom, + Larger, + InlineTable, + InlineBlock, + Blink, + Block, + Italic, + LineThrough, + XLarge, + Large, + Left, + TextTop, + LAST_MARKER +}; + +enum class CFX_CSSProperty : uint8_t { + BorderLeft = 0, + Top, + Margin, + TextIndent, + Right, + PaddingLeft, + MarginLeft, + Border, + BorderTop, + Bottom, + PaddingRight, + BorderBottom, + FontFamily, + FontWeight, + Color, + LetterSpacing, + TextAlign, + BorderRightWidth, + VerticalAlign, + PaddingTop, + FontVariant, + BorderWidth, + BorderBottomWidth, + BorderRight, + FontSize, + BorderSpacing, + FontStyle, + Font, + LineHeight, + MarginRight, + BorderLeftWidth, + Display, + PaddingBottom, + BorderTopWidth, + WordSpacing, + Left, + TextDecoration, + Padding, + MarginBottom, + MarginTop, + LAST_MARKER +}; + +enum class CFX_CSSSelectorType : uint8_t { Element = 0, Descendant }; + +enum class CFX_CSSLengthUnit : uint8_t { + Auto, + None, + Normal, + Point, + Percent, +}; + +enum class CFX_CSSDisplay : uint8_t { + None, + ListItem, + Block, + Inline, + InlineBlock, + InlineTable, +}; + +enum class CFX_CSSFontStyle : uint8_t { + Normal, + Italic, +}; + +enum class CFX_CSSTextAlign : uint8_t { + Left, + Right, + Center, + Justify, + JustifyAll, +}; + +enum class CFX_CSSVerticalAlign : uint8_t { + Baseline, + Sub, + Super, + Top, + TextTop, + Middle, + Bottom, + TextBottom, + Number, +}; + +enum class CFX_CSSFontVariant : uint8_t { + Normal, + SmallCaps, +}; + +enum CFX_CSSTEXTDECORATION { + CFX_CSSTEXTDECORATION_None = 0, + CFX_CSSTEXTDECORATION_Underline = 1 << 0, + CFX_CSSTEXTDECORATION_Overline = 1 << 1, + CFX_CSSTEXTDECORATION_LineThrough = 1 << 2, + CFX_CSSTEXTDECORATION_Blink = 1 << 3, + CFX_CSSTEXTDECORATION_Double = 1 << 4, +}; + +class CFX_CSSLength { + public: + CFX_CSSLength() {} + + explicit CFX_CSSLength(CFX_CSSLengthUnit eUnit) : m_unit(eUnit) {} + + CFX_CSSLength(CFX_CSSLengthUnit eUnit, float fValue) + : m_unit(eUnit), m_fValue(fValue) {} + + CFX_CSSLength& Set(CFX_CSSLengthUnit eUnit) { + m_unit = eUnit; + return *this; + } + + CFX_CSSLength& Set(CFX_CSSLengthUnit eUnit, float fValue) { + m_unit = eUnit; + m_fValue = fValue; + return *this; + } + + CFX_CSSLengthUnit GetUnit() const { return m_unit; } + + float GetValue() const { return m_fValue; } + bool NonZero() const { return static_cast<int>(m_fValue) != 0; } + + private: + CFX_CSSLengthUnit m_unit; + float m_fValue; +}; + +class CFX_CSSRect { + public: + CFX_CSSRect() {} + + CFX_CSSRect(CFX_CSSLengthUnit eUnit, float val) + : left(eUnit, val), + top(eUnit, val), + right(eUnit, val), + bottom(eUnit, val) {} + + CFX_CSSRect& Set(CFX_CSSLengthUnit eUnit) { + left.Set(eUnit); + top.Set(eUnit); + right.Set(eUnit); + bottom.Set(eUnit); + return *this; + } + CFX_CSSRect& Set(CFX_CSSLengthUnit eUnit, float fValue) { + left.Set(eUnit, fValue); + top.Set(eUnit, fValue); + right.Set(eUnit, fValue); + bottom.Set(eUnit, fValue); + return *this; + } + + CFX_CSSLength left, top, right, bottom; +}; + +#endif // CORE_FXCRT_CSS_CFX_CSS_H_ |