| // Copyright 2014 The PDFium Authors | |
| // 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 <stdint.h> | |
| #include <type_traits> | |
| 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 | |
| }; | |
| using CFX_CSSValueTypeMask = std::underlying_type<CFX_CSSVALUETYPE>::type; | |
| #undef CSS_PROP____ | |
| #define CSS_PROP____(a, b, c, d) a, | |
| enum class CFX_CSSProperty : uint8_t { | |
| #include "core/fxcrt/css/properties.inc" | |
| }; | |
| #undef CSS_PROP____ | |
| #undef CSS_PROP_VALUE____ | |
| #define CSS_PROP_VALUE____(a, b, c) a, | |
| enum class CFX_CSSPropertyValue : uint8_t { | |
| #include "core/fxcrt/css/property_values.inc" | |
| }; | |
| #undef CSS_PROP_VALUE____ | |
| 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 class CFX_CSSTEXTDECORATION : uint8_t { | |
| kNone = 0, | |
| kUnderline = 1 << 0, | |
| kOverline = 1 << 1, | |
| kLineThrough = 1 << 2, | |
| kBlink = 1 << 3, | |
| kDouble = 1 << 4, | |
| }; | |
| class CFX_CSSLength { | |
| public: | |
| CFX_CSSLength() = default; | |
| 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() = default; | |
| 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; | |
| CFX_CSSLength top; | |
| CFX_CSSLength right; | |
| CFX_CSSLength bottom; | |
| }; | |
| #endif // CORE_FXCRT_CSS_CFX_CSS_H_ |