diff options
Diffstat (limited to 'src/bytecode')
-rw-r--r-- | src/bytecode/bytecode.h | 52 | ||||
-rw-r--r-- | src/bytecode/opcodes.h | 65 |
2 files changed, 92 insertions, 25 deletions
diff --git a/src/bytecode/bytecode.h b/src/bytecode/bytecode.h index 7518281..ccfdcac 100644 --- a/src/bytecode/bytecode.h +++ b/src/bytecode/bytecode.h @@ -18,9 +18,20 @@ typedef uint32_t css_code_t; typedef enum css_properties_e opcode_t; +enum flag_value { + FLAG_VALUE__NONE = 0, + FLAG_VALUE_INHERIT = 1, + FLAG_VALUE_INITIAL = 2, + FLAG_VALUE_REVERT = 3, + FLAG_VALUE_UNSET = 4, +}; + enum flag { - FLAG_IMPORTANT = (1<<0), - FLAG_INHERIT = (1<<1) + FLAG_IMPORTANT = (1 << 0), + FLAG_INHERIT = (FLAG_VALUE_INHERIT << 1), + FLAG_INITIAL = (FLAG_VALUE_INITIAL << 1), + FLAG_REVERT = (FLAG_VALUE_REVERT << 1), + FLAG_UNSET = (FLAG_VALUE_UNSET << 1), }; @@ -34,19 +45,16 @@ typedef enum unit { UNIT_MM = (1u << 8) + 5, UNIT_PT = (1u << 8) + 6, UNIT_PC = (1u << 8) + 7, - UNIT_CAP = (1u << 8) + 8, - UNIT_CH = (1u << 8) + 9, - UNIT_IC = (1u << 8) + 10, - UNIT_REM = (1u << 8) + 11, - UNIT_LH = (1u << 8) + 12, - UNIT_RLH = (1u << 8) + 13, - UNIT_VH = (1u << 8) + 14, - UNIT_VW = (1u << 8) + 15, - UNIT_VI = (1u << 8) + 16, - UNIT_VB = (1u << 8) + 17, - UNIT_VMIN = (1u << 8) + 18, - UNIT_VMAX = (1u << 8) + 19, - UNIT_Q = (1u << 8) + 20, + UNIT_CH = (1u << 8) + 8, + UNIT_REM = (1u << 8) + 9, + UNIT_LH = (1u << 8) + 10, + UNIT_VH = (1u << 8) + 11, + UNIT_VW = (1u << 8) + 12, + UNIT_VI = (1u << 8) + 13, + UNIT_VB = (1u << 8) + 14, + UNIT_VMIN = (1u << 8) + 15, + UNIT_VMAX = (1u << 8) + 16, + UNIT_Q = (1u << 8) + 17, UNIT_PCT = (1 << 9), @@ -98,12 +106,22 @@ static inline uint16_t getValue(css_code_t OPV) static inline bool isImportant(css_code_t OPV) { - return getFlags(OPV) & 0x1; + return getFlags(OPV) & FLAG_IMPORTANT; +} + +static inline enum flag_value getFlagValue(css_code_t OPV) +{ + return (getFlags(OPV) >> 1) & 0x7; +} + +static inline bool hasFlagValue(css_code_t OPV) +{ + return getFlagValue(OPV) != FLAG_VALUE__NONE; } static inline bool isInherit(css_code_t OPV) { - return getFlags(OPV) & 0x2; + return getFlagValue(OPV) == FLAG_VALUE_INHERIT; } #endif diff --git a/src/bytecode/opcodes.h b/src/bytecode/opcodes.h index 82bf75f..7a1377b 100644 --- a/src/bytecode/opcodes.h +++ b/src/bytecode/opcodes.h @@ -29,11 +29,11 @@ enum op_align_items { }; enum op_align_self { - ALIGN_SELF_STRETCH = 0x0000, - ALIGN_SELF_FLEX_START = 0x0001, - ALIGN_SELF_FLEX_END = 0x0002, - ALIGN_SELF_CENTER = 0x0003, - ALIGN_SELF_BASELINE = 0x0004, + ALIGN_SELF_STRETCH = ALIGN_ITEMS_STRETCH, + ALIGN_SELF_FLEX_START = ALIGN_ITEMS_FLEX_START, + ALIGN_SELF_FLEX_END = ALIGN_ITEMS_FLEX_END, + ALIGN_SELF_CENTER = ALIGN_ITEMS_CENTER, + ALIGN_SELF_BASELINE = ALIGN_ITEMS_BASELINE, ALIGN_SELF_AUTO = 0x0005 }; @@ -332,7 +332,9 @@ enum op_display { DISPLAY_TABLE_CAPTION = 0x000e, DISPLAY_NONE = 0x000f, DISPLAY_FLEX = 0x0010, - DISPLAY_INLINE_FLEX = 0x0011 + DISPLAY_INLINE_FLEX = 0x0011, + DISPLAY_GRID = 0x0012, + DISPLAY_INLINE_GRID = 0x0013 }; enum op_elevation { @@ -349,6 +351,11 @@ enum op_empty_cells { EMPTY_CELLS_HIDE = 0x0001 }; +enum op_fill_opacity { + FILL_OPACITY_SET = 0x0080 +}; + + enum op_flex_basis { FLEX_BASIS_AUTO = 0x0000, FLEX_BASIS_CONTENT = 0x0001, @@ -491,7 +498,44 @@ enum op_list_style_type { LIST_STYLE_TYPE_GEORGIAN = 0x000b, LIST_STYLE_TYPE_LOWER_ALPHA = 0x000c, LIST_STYLE_TYPE_UPPER_ALPHA = 0x000d, - LIST_STYLE_TYPE_NONE = 0x000e + LIST_STYLE_TYPE_NONE = 0x000e, + LIST_STYLE_TYPE_BINARY = 0x000f, + LIST_STYLE_TYPE_OCTAL = 0x0010, + LIST_STYLE_TYPE_LOWER_HEXADECIMAL = 0x0011, + LIST_STYLE_TYPE_UPPER_HEXADECIMAL = 0x0012, + LIST_STYLE_TYPE_ARABIC_INDIC = 0x0013, + LIST_STYLE_TYPE_LOWER_ARMENIAN = 0x0014, + LIST_STYLE_TYPE_UPPER_ARMENIAN = 0x0015, + LIST_STYLE_TYPE_BENGALI = 0x0016, + LIST_STYLE_TYPE_CAMBODIAN = 0x0017, + LIST_STYLE_TYPE_KHMER = 0x0018, + LIST_STYLE_TYPE_CJK_DECIMAL = 0x0019, + LIST_STYLE_TYPE_DEVANAGARI = 0x001a, + LIST_STYLE_TYPE_GUJARATI = 0x001b, + LIST_STYLE_TYPE_GURMUKHI = 0x001c, + LIST_STYLE_TYPE_HEBREW = 0x001d, + LIST_STYLE_TYPE_KANNADA = 0x001e, + LIST_STYLE_TYPE_LAO = 0x001f, + LIST_STYLE_TYPE_MALAYALAM = 0x0020, + LIST_STYLE_TYPE_MONGOLIAN = 0x0021, + LIST_STYLE_TYPE_MYANMAR = 0x0022, + LIST_STYLE_TYPE_ORIYA = 0x0023, + LIST_STYLE_TYPE_PERSIAN = 0x0024, + LIST_STYLE_TYPE_TAMIL = 0x0025, + LIST_STYLE_TYPE_TELUGU = 0x0026, + LIST_STYLE_TYPE_THAI = 0x0027, + LIST_STYLE_TYPE_TIBETAN = 0x0028, + LIST_STYLE_TYPE_CJK_EARTHLY_BRANCH = 0x0029, + LIST_STYLE_TYPE_CJK_HEAVENLY_STEM = 0x002a, + LIST_STYLE_TYPE_HIAGANA = 0x002b, + LIST_STYLE_TYPE_HIAGANA_IROHA = 0x002c, + LIST_STYLE_TYPE_KATAKANA = 0x002d, + LIST_STYLE_TYPE_KATAKANA_IROHA = 0x002e, + LIST_STYLE_TYPE_JAPANESE_INFORMAL = 0x002f, + LIST_STYLE_TYPE_JAPANESE_FORMAL = 0x0030, + LIST_STYLE_TYPE_KOREAN_HANGUL_FORMAL = 0x0031, + LIST_STYLE_TYPE_KOREAN_HANJA_INFORMAL = 0x0032, + LIST_STYLE_TYPE_KOREAN_HANJA_FORMAL = 0x0033 }; enum op_margin { @@ -626,7 +670,8 @@ enum op_position { POSITION_STATIC = 0x0000, POSITION_RELATIVE = 0x0001, POSITION_ABSOLUTE = 0x0002, - POSITION_FIXED = 0x0003 + POSITION_FIXED = 0x0003, + POSITION_STICKY = 0x0004 }; enum op_quotes { @@ -681,6 +726,10 @@ enum op_stress { STRESS_SET = 0x0080 }; +enum op_stroke_opacity { + STROKE_OPACITY_SET = 0x0080 +}; + enum op_table_layout { TABLE_LAYOUT_AUTO = 0x0000, TABLE_LAYOUT_FIXED = 0x0001 |