summaryrefslogtreecommitdiff
path: root/src/bytecode/bytecode.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/bytecode/bytecode.h')
-rw-r--r--src/bytecode/bytecode.h93
1 files changed, 66 insertions, 27 deletions
diff --git a/src/bytecode/bytecode.h b/src/bytecode/bytecode.h
index 656d7a5..ccfdcac 100644
--- a/src/bytecode/bytecode.h
+++ b/src/bytecode/bytecode.h
@@ -18,35 +18,64 @@ 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),
};
+
typedef enum unit {
- UNIT_PX = 0,
- UNIT_EX = 1,
- UNIT_EM = 2,
- UNIT_IN = 3,
- UNIT_CM = 4,
- UNIT_MM = 5,
- UNIT_PT = 6,
- UNIT_PC = 7,
-
- UNIT_PCT = (1 << 8),
-
- UNIT_ANGLE = (1 << 9),
- UNIT_DEG = (1 << 9) + 0,
- UNIT_GRAD = (1 << 9) + 1,
- UNIT_RAD = (1 << 9) + 2,
-
- UNIT_TIME = (1 << 10),
- UNIT_MS = (1 << 10) + 0,
- UNIT_S = (1 << 10) + 1,
-
- UNIT_FREQ = (1 << 11),
- UNIT_HZ = (1 << 11) + 0,
- UNIT_KHZ = (1 << 11) + 1
+ UNIT_LENGTH = (1u << 8),
+ UNIT_PX = (1u << 8) + 0,
+ UNIT_EX = (1u << 8) + 1,
+ UNIT_EM = (1u << 8) + 2,
+ UNIT_IN = (1u << 8) + 3,
+ UNIT_CM = (1u << 8) + 4,
+ UNIT_MM = (1u << 8) + 5,
+ UNIT_PT = (1u << 8) + 6,
+ UNIT_PC = (1u << 8) + 7,
+ 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),
+
+ UNIT_ANGLE = (1 << 10),
+ UNIT_DEG = (1 << 10) + 0,
+ UNIT_GRAD = (1 << 10) + 1,
+ UNIT_RAD = (1 << 10) + 2,
+ UNIT_TURN = (1 << 10) + 3,
+
+ UNIT_TIME = (1 << 11),
+ UNIT_MS = (1 << 11) + 0,
+ UNIT_S = (1 << 11) + 1,
+
+ UNIT_FREQ = (1 << 12),
+ UNIT_HZ = (1 << 12) + 0,
+ UNIT_KHZ = (1 << 12) + 1,
+
+ UNIT_RESOLUTION = (1 << 13),
+ UNIT_DPI = (1 << 13) + 0,
+ UNIT_DPCM = (1 << 13) + 1,
+ UNIT_DPPX = (1 << 13) + 2,
} unit;
typedef uint32_t colour;
@@ -77,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