diff options
Diffstat (limited to 'src/bytecode/bytecode.h')
-rw-r--r-- | src/bytecode/bytecode.h | 93 |
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 |