summaryrefslogtreecommitdiff
path: root/src/bytecode
diff options
context:
space:
mode:
Diffstat (limited to 'src/bytecode')
-rw-r--r--src/bytecode/bytecode.h52
-rw-r--r--src/bytecode/opcodes.h65
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