diff options
Diffstat (limited to 'src/select/autogenerated_propset.h')
-rw-r--r-- | src/select/autogenerated_propset.h | 2002 |
1 files changed, 932 insertions, 1070 deletions
diff --git a/src/select/autogenerated_propset.h b/src/select/autogenerated_propset.h index 94fc887..4e0d29d 100644 --- a/src/select/autogenerated_propset.h +++ b/src/select/autogenerated_propset.h @@ -7,874 +7,10 @@ /** Default values are 'initial value', unless the property is inherited, * in which case it is 'inherit'. */ -static const css_computed_uncommon default_uncommon = { - .i = { - .bits = { - (CSS_BORDER_SPACING_SET << 21) | ( - CSS_OUTLINE_WIDTH_MEDIUM << 13) | ( - CSS_COLUMN_RULE_WIDTH_MEDIUM << 5) | - CSS_CURSOR_AUTO, - (CSS_COLUMN_WIDTH_AUTO << 25) | (CSS_COLUMN_GAP_NORMAL - << 18) | (CSS_LETTER_SPACING_NORMAL << - 11) | (CSS_WORD_SPACING_NORMAL << 4) | - CSS_BREAK_BEFORE_AUTO, - (CSS_CLIP_AUTO << 6) | (CSS_COLUMN_RULE_STYLE_NONE << - 2) | - CSS_COLUMN_RULE_COLOR_CURRENT_COLOR, - (CSS_BREAK_AFTER_AUTO << 28) | (CSS_BREAK_INSIDE_AUTO - << 24) | (CSS_CONTENT_NORMAL << 22) | ( - CSS_WRITING_MODE_HORIZONTAL_TB << 20) | - (CSS_COLUMN_FILL_BALANCE << 18) | ( - CSS_COLUMN_SPAN_NONE << 16) | ( - CSS_COLUMN_COUNT_AUTO << 14) | ( - CSS_OUTLINE_COLOR_INVERT << 12) | ( - CSS_COUNTER_INCREMENT_NONE << 11) | ( - CSS_COUNTER_RESET_NONE << 10) - }, - .border_spacing_a = 0, - .border_spacing_b = 0, - .clip_a = 0, - .clip_b = 0, - .clip_c = 0, - .clip_d = 0, - .column_count = 0, - .column_gap = 0, - .column_rule_color = 0, - .column_rule_width = 0, - .column_width = 0, - .letter_spacing = 0, - .outline_color = 0, - .outline_width = 0, - .word_spacing = 0 - }, - .content = NULL, - .counter_increment = NULL, - .counter_reset = NULL, - .cursor = NULL, - .next = NULL, - .count = 0, - .bin = UINT32_MAX -}; - -#define ENSURE_UNCOMMON do { \ - if (style->i.uncommon == NULL) { \ - style->i.uncommon = malloc(sizeof( \ - css_computed_uncommon)); \ - if (style->i.uncommon == NULL) \ - return CSS_NOMEM; \ - \ - memcpy(style->i.uncommon, &default_uncommon, sizeof( \ - css_computed_uncommon)); \ - } \ -} while(0) \ - - -#define BORDER_SPACING_INDEX 0 -#define BORDER_SPACING_SHIFT 21 -#define BORDER_SPACING_MASK 0xffe00000 -static inline css_error set_border_spacing(css_computed_style *style, uint8_t - type, css_fixed length_a, css_unit unit_a, css_fixed length_b, - css_unit unit_b) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[BORDER_SPACING_INDEX]; - - /* 11bits: aaaaabbbbbt : unit_a | unit_b | type */ - *bits = (*bits & ~BORDER_SPACING_MASK) | ((((uint32_t)type & 0x1) | ( - unit_b << 1) | (unit_a << 6)) << BORDER_SPACING_SHIFT); - - style->i.uncommon->i.border_spacing_a = length_a; - - style->i.uncommon->i.border_spacing_b = length_b; - - return CSS_OK; -} -#undef BORDER_SPACING_INDEX -#undef BORDER_SPACING_SHIFT -#undef BORDER_SPACING_MASK - -#define BREAK_AFTER_INDEX 3 -#define BREAK_AFTER_SHIFT 28 -#define BREAK_AFTER_MASK 0xf0000000 - -static inline css_error set_break_after(css_computed_style *style, uint8_t type) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[BREAK_AFTER_INDEX]; - - /* 4bits: tttt : type */ - *bits = (*bits & ~BREAK_AFTER_MASK) | (((uint32_t)type & 0xf) << - BREAK_AFTER_SHIFT); - - return CSS_OK; -} -#undef BREAK_AFTER_INDEX -#undef BREAK_AFTER_SHIFT -#undef BREAK_AFTER_MASK - -#define BREAK_BEFORE_INDEX 1 -#define BREAK_BEFORE_SHIFT 0 -#define BREAK_BEFORE_MASK 0xf - -static inline css_error set_break_before(css_computed_style *style, uint8_t - type) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[BREAK_BEFORE_INDEX]; - - /* 4bits: tttt : type */ - *bits = (*bits & ~BREAK_BEFORE_MASK) | (((uint32_t)type & 0xf) << - BREAK_BEFORE_SHIFT); - - return CSS_OK; -} -#undef BREAK_BEFORE_INDEX -#undef BREAK_BEFORE_SHIFT -#undef BREAK_BEFORE_MASK - -#define BREAK_INSIDE_INDEX 3 -#define BREAK_INSIDE_SHIFT 24 -#define BREAK_INSIDE_MASK 0xf000000 - -static inline css_error set_break_inside(css_computed_style *style, uint8_t - type) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[BREAK_INSIDE_INDEX]; - - /* 4bits: tttt : type */ - *bits = (*bits & ~BREAK_INSIDE_MASK) | (((uint32_t)type & 0xf) << - BREAK_INSIDE_SHIFT); - - return CSS_OK; -} -#undef BREAK_INSIDE_INDEX -#undef BREAK_INSIDE_SHIFT -#undef BREAK_INSIDE_MASK - -#define CLIP_INDEX 2 -#define CLIP_SHIFT 6 -#define CLIP_MASK 0xffffffc0 -static inline css_error set_clip( - css_computed_style *style, uint8_t type, - css_computed_clip_rect *rect) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[CLIP_INDEX]; - - /* - 26bits: tt tttr rrrr bbbb blll llTR BLyy: - units: top | right | bottom | left - opcodes: top | right | bottom | left | type - */ - *bits = (*bits & ~CLIP_MASK) | - ((type & 0x3) << CLIP_SHIFT); - - if (type == CSS_CLIP_RECT) { - *bits |= (((rect->top_auto ? 0x20 : 0) | - (rect->right_auto ? 0x10 : 0) | - (rect->bottom_auto ? 0x8 : 0) | - (rect->left_auto ? 0x4 : 0)) << CLIP_SHIFT); - - *bits |= (((rect->tunit << 5) | rect->runit) - << (CLIP_SHIFT + 16)); - - *bits |= (((rect->bunit << 5) | rect->lunit) - << (CLIP_SHIFT + 6)); - - style->i.uncommon->i.clip_a = rect->top; - style->i.uncommon->i.clip_b = rect->right; - style->i.uncommon->i.clip_c = rect->bottom; - style->i.uncommon->i.clip_d = rect->left; - } - - return CSS_OK; -} -#undef CLIP_INDEX -#undef CLIP_SHIFT -#undef CLIP_MASK - -#define COLUMN_COUNT_INDEX 3 -#define COLUMN_COUNT_SHIFT 14 -#define COLUMN_COUNT_MASK 0xc000 - -static inline css_error set_column_count(css_computed_style *style, uint8_t - type, int32_t integer) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_COUNT_INDEX]; - - /* 2bits: tt : type */ - *bits = (*bits & ~COLUMN_COUNT_MASK) | (((uint32_t)type & 0x3) << - COLUMN_COUNT_SHIFT); - - style->i.uncommon->i.column_count = integer; - - return CSS_OK; -} -#undef COLUMN_COUNT_INDEX -#undef COLUMN_COUNT_SHIFT -#undef COLUMN_COUNT_MASK - -#define COLUMN_FILL_INDEX 3 -#define COLUMN_FILL_SHIFT 18 -#define COLUMN_FILL_MASK 0xc0000 - -static inline css_error set_column_fill(css_computed_style *style, uint8_t type) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_FILL_INDEX]; - - /* 2bits: tt : type */ - *bits = (*bits & ~COLUMN_FILL_MASK) | (((uint32_t)type & 0x3) << - COLUMN_FILL_SHIFT); - - return CSS_OK; -} -#undef COLUMN_FILL_INDEX -#undef COLUMN_FILL_SHIFT -#undef COLUMN_FILL_MASK - -#define COLUMN_GAP_INDEX 1 -#define COLUMN_GAP_SHIFT 18 -#define COLUMN_GAP_MASK 0x1fc0000 - -static inline css_error set_column_gap(css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_GAP_INDEX]; - - /* 7bits: uuuuutt : unit | type */ - *bits = (*bits & ~COLUMN_GAP_MASK) | ((((uint32_t)type & 0x3) | (unit - << 2)) << COLUMN_GAP_SHIFT); - - style->i.uncommon->i.column_gap = length; - - return CSS_OK; -} -#undef COLUMN_GAP_INDEX -#undef COLUMN_GAP_SHIFT -#undef COLUMN_GAP_MASK - -#define COLUMN_RULE_COLOR_INDEX 2 -#define COLUMN_RULE_COLOR_SHIFT 0 -#define COLUMN_RULE_COLOR_MASK 0x3 - -static inline css_error set_column_rule_color(css_computed_style *style, - uint8_t type, css_color color) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_RULE_COLOR_INDEX]; - - /* 2bits: tt : type */ - *bits = (*bits & ~COLUMN_RULE_COLOR_MASK) | (((uint32_t)type & 0x3) << - COLUMN_RULE_COLOR_SHIFT); - - style->i.uncommon->i.column_rule_color = color; - - return CSS_OK; -} -#undef COLUMN_RULE_COLOR_INDEX -#undef COLUMN_RULE_COLOR_SHIFT -#undef COLUMN_RULE_COLOR_MASK - -#define COLUMN_RULE_STYLE_INDEX 2 -#define COLUMN_RULE_STYLE_SHIFT 2 -#define COLUMN_RULE_STYLE_MASK 0x3c - -static inline css_error set_column_rule_style(css_computed_style *style, - uint8_t type) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_RULE_STYLE_INDEX]; - - /* 4bits: tttt : type */ - *bits = (*bits & ~COLUMN_RULE_STYLE_MASK) | (((uint32_t)type & 0xf) << - COLUMN_RULE_STYLE_SHIFT); - - return CSS_OK; -} -#undef COLUMN_RULE_STYLE_INDEX -#undef COLUMN_RULE_STYLE_SHIFT -#undef COLUMN_RULE_STYLE_MASK - -#define COLUMN_RULE_WIDTH_INDEX 0 -#define COLUMN_RULE_WIDTH_SHIFT 5 -#define COLUMN_RULE_WIDTH_MASK 0x1fe0 - -static inline css_error set_column_rule_width(css_computed_style *style, - uint8_t type, css_fixed length, css_unit unit) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_RULE_WIDTH_INDEX]; - - /* 8bits: uuuuuttt : unit | type */ - *bits = (*bits & ~COLUMN_RULE_WIDTH_MASK) | ((((uint32_t)type & 0x7) | ( - unit << 3)) << COLUMN_RULE_WIDTH_SHIFT); - - style->i.uncommon->i.column_rule_width = length; - - return CSS_OK; -} -#undef COLUMN_RULE_WIDTH_INDEX -#undef COLUMN_RULE_WIDTH_SHIFT -#undef COLUMN_RULE_WIDTH_MASK - -#define COLUMN_SPAN_INDEX 3 -#define COLUMN_SPAN_SHIFT 16 -#define COLUMN_SPAN_MASK 0x30000 - -static inline css_error set_column_span(css_computed_style *style, uint8_t type) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_SPAN_INDEX]; - - /* 2bits: tt : type */ - *bits = (*bits & ~COLUMN_SPAN_MASK) | (((uint32_t)type & 0x3) << - COLUMN_SPAN_SHIFT); - - return CSS_OK; -} -#undef COLUMN_SPAN_INDEX -#undef COLUMN_SPAN_SHIFT -#undef COLUMN_SPAN_MASK - -#define COLUMN_WIDTH_INDEX 1 -#define COLUMN_WIDTH_SHIFT 25 -#define COLUMN_WIDTH_MASK 0xfe000000 - -static inline css_error set_column_width(css_computed_style *style, uint8_t - type, css_fixed length, css_unit unit) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_WIDTH_INDEX]; - - /* 7bits: uuuuutt : unit | type */ - *bits = (*bits & ~COLUMN_WIDTH_MASK) | ((((uint32_t)type & 0x3) | (unit - << 2)) << COLUMN_WIDTH_SHIFT); - - style->i.uncommon->i.column_width = length; - - return CSS_OK; -} -#undef COLUMN_WIDTH_INDEX -#undef COLUMN_WIDTH_SHIFT -#undef COLUMN_WIDTH_MASK - -#define CONTENT_INDEX 3 -#define CONTENT_SHIFT 22 -#define CONTENT_MASK 0xc00000 -static inline css_error set_content( - css_computed_style *style, uint8_t type, - css_computed_content_item *content) -{ - uint32_t *bits; - css_computed_content_item *oldcontent; - css_computed_content_item *c; - - ENSURE_UNCOMMON; - - /* 2bits: type */ - bits = &style->i.uncommon->i.bits[CONTENT_INDEX]; - oldcontent = style->i.uncommon->content; - - *bits = (*bits & ~CONTENT_MASK) | - ((type & 0x3) << CONTENT_SHIFT); - - for (c = content; c != NULL && - c->type != CSS_COMPUTED_CONTENT_NONE; c++) { - switch (c->type) { - case CSS_COMPUTED_CONTENT_STRING: - c->data.string = lwc_string_ref(c->data.string); - break; - case CSS_COMPUTED_CONTENT_URI: - c->data.uri = lwc_string_ref(c->data.uri); - break; - case CSS_COMPUTED_CONTENT_ATTR: - c->data.attr = lwc_string_ref(c->data.attr); - break; - case CSS_COMPUTED_CONTENT_COUNTER: - c->data.counter.name = - lwc_string_ref(c->data.counter.name); - break; - case CSS_COMPUTED_CONTENT_COUNTERS: - c->data.counters.name = - lwc_string_ref(c->data.counters.name); - c->data.counters.sep = - lwc_string_ref(c->data.counters.sep); - break; - default: - break; - } - } - - style->i.uncommon->content = content; - - /* Free existing array */ - if (oldcontent != NULL) { - for (c = oldcontent; - c->type != CSS_COMPUTED_CONTENT_NONE; c++) { - switch (c->type) { - case CSS_COMPUTED_CONTENT_STRING: - lwc_string_unref(c->data.string); - break; - case CSS_COMPUTED_CONTENT_URI: - lwc_string_unref(c->data.uri); - break; - case CSS_COMPUTED_CONTENT_ATTR: - lwc_string_unref(c->data.attr); - break; - case CSS_COMPUTED_CONTENT_COUNTER: - lwc_string_unref(c->data.counter.name); - break; - case CSS_COMPUTED_CONTENT_COUNTERS: - lwc_string_unref(c->data.counters.name); - lwc_string_unref(c->data.counters.sep); - break; - default: - break; - } - } - - if (oldcontent != content) - free(oldcontent); - } - - return CSS_OK; -} -#undef CONTENT_INDEX -#undef CONTENT_SHIFT -#undef CONTENT_MASK - -#define COUNTER_INCREMENT_INDEX 3 -#define COUNTER_INCREMENT_SHIFT 11 -#define COUNTER_INCREMENT_MASK 0x800 - -static inline css_error set_counter_increment(css_computed_style *style, - uint8_t type, css_computed_counter *counter_arr) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COUNTER_INCREMENT_INDEX]; - - /* 1bit: t : type */ - *bits = (*bits & ~COUNTER_INCREMENT_MASK) | (((uint32_t)type & 0x1) << - COUNTER_INCREMENT_SHIFT); - - css_computed_counter *old_counter_arr = - style->i.uncommon->counter_increment; - css_computed_counter *c; - - for (c = counter_arr; c != NULL && c->name != NULL; c++) - c->name = lwc_string_ref(c->name); - - style->i.uncommon->counter_increment = counter_arr; - - /* Free existing array */ - if (old_counter_arr != NULL) { - for (c = old_counter_arr; c->name != NULL; c++) - lwc_string_unref(c->name); - - if (old_counter_arr != counter_arr) - free(old_counter_arr); - } - - return CSS_OK; -} -#undef COUNTER_INCREMENT_INDEX -#undef COUNTER_INCREMENT_SHIFT -#undef COUNTER_INCREMENT_MASK - -#define COUNTER_RESET_INDEX 3 -#define COUNTER_RESET_SHIFT 10 -#define COUNTER_RESET_MASK 0x400 - -static inline css_error set_counter_reset(css_computed_style *style, uint8_t - type, css_computed_counter *counter_arr) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COUNTER_RESET_INDEX]; - - /* 1bit: t : type */ - *bits = (*bits & ~COUNTER_RESET_MASK) | (((uint32_t)type & 0x1) << - COUNTER_RESET_SHIFT); - - css_computed_counter *old_counter_arr = - style->i.uncommon->counter_reset; - css_computed_counter *c; - - for (c = counter_arr; c != NULL && c->name != NULL; c++) - c->name = lwc_string_ref(c->name); - - style->i.uncommon->counter_reset = counter_arr; - - /* Free existing array */ - if (old_counter_arr != NULL) { - for (c = old_counter_arr; c->name != NULL; c++) - lwc_string_unref(c->name); - - if (old_counter_arr != counter_arr) - free(old_counter_arr); - } - - return CSS_OK; -} -#undef COUNTER_RESET_INDEX -#undef COUNTER_RESET_SHIFT -#undef COUNTER_RESET_MASK - -#define CURSOR_INDEX 0 -#define CURSOR_SHIFT 0 -#define CURSOR_MASK 0x1f - -static inline css_error set_cursor(css_computed_style *style, uint8_t type, - lwc_string **string_arr) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[CURSOR_INDEX]; - - /* 5bits: ttttt : type */ - *bits = (*bits & ~CURSOR_MASK) | (((uint32_t)type & 0x1f) << - CURSOR_SHIFT); - - lwc_string **old_string_arr = style->i.uncommon->cursor; - lwc_string **s; - - for (s = string_arr; s != NULL && *s != NULL; s++) - *s = lwc_string_ref(*s); - - style->i.uncommon->cursor = string_arr; - - /* Free existing array */ - if (old_string_arr != NULL) { - for (s = old_string_arr; *s != NULL; s++) - lwc_string_unref(*s); - - if (old_string_arr != string_arr) - free(old_string_arr); - } - - return CSS_OK; -} -#undef CURSOR_INDEX -#undef CURSOR_SHIFT -#undef CURSOR_MASK - -#define LETTER_SPACING_INDEX 1 -#define LETTER_SPACING_SHIFT 11 -#define LETTER_SPACING_MASK 0x3f800 - -static inline css_error set_letter_spacing(css_computed_style *style, uint8_t - type, css_fixed length, css_unit unit) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[LETTER_SPACING_INDEX]; - - /* 7bits: uuuuutt : unit | type */ - *bits = (*bits & ~LETTER_SPACING_MASK) | ((((uint32_t)type & 0x3) | ( - unit << 2)) << LETTER_SPACING_SHIFT); - - style->i.uncommon->i.letter_spacing = length; - - return CSS_OK; -} -#undef LETTER_SPACING_INDEX -#undef LETTER_SPACING_SHIFT -#undef LETTER_SPACING_MASK - -#define OUTLINE_COLOR_INDEX 3 -#define OUTLINE_COLOR_SHIFT 12 -#define OUTLINE_COLOR_MASK 0x3000 - -static inline css_error set_outline_color(css_computed_style *style, uint8_t - type, css_color color) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[OUTLINE_COLOR_INDEX]; - - /* 2bits: tt : type */ - *bits = (*bits & ~OUTLINE_COLOR_MASK) | (((uint32_t)type & 0x3) << - OUTLINE_COLOR_SHIFT); - - style->i.uncommon->i.outline_color = color; - - return CSS_OK; -} -#undef OUTLINE_COLOR_INDEX -#undef OUTLINE_COLOR_SHIFT -#undef OUTLINE_COLOR_MASK - -#define OUTLINE_WIDTH_INDEX 0 -#define OUTLINE_WIDTH_SHIFT 13 -#define OUTLINE_WIDTH_MASK 0x1fe000 - -static inline css_error set_outline_width(css_computed_style *style, uint8_t - type, css_fixed length, css_unit unit) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[OUTLINE_WIDTH_INDEX]; - - /* 8bits: uuuuuttt : unit | type */ - *bits = (*bits & ~OUTLINE_WIDTH_MASK) | ((((uint32_t)type & 0x7) | ( - unit << 3)) << OUTLINE_WIDTH_SHIFT); - - style->i.uncommon->i.outline_width = length; - - return CSS_OK; -} -#undef OUTLINE_WIDTH_INDEX -#undef OUTLINE_WIDTH_SHIFT -#undef OUTLINE_WIDTH_MASK - -#define WORD_SPACING_INDEX 1 -#define WORD_SPACING_SHIFT 4 -#define WORD_SPACING_MASK 0x7f0 - -static inline css_error set_word_spacing(css_computed_style *style, uint8_t - type, css_fixed length, css_unit unit) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[WORD_SPACING_INDEX]; - - /* 7bits: uuuuutt : unit | type */ - *bits = (*bits & ~WORD_SPACING_MASK) | ((((uint32_t)type & 0x3) | (unit - << 2)) << WORD_SPACING_SHIFT); - - style->i.uncommon->i.word_spacing = length; - - return CSS_OK; -} -#undef WORD_SPACING_INDEX -#undef WORD_SPACING_SHIFT -#undef WORD_SPACING_MASK - -#define WRITING_MODE_INDEX 3 -#define WRITING_MODE_SHIFT 20 -#define WRITING_MODE_MASK 0x300000 - -static inline css_error set_writing_mode(css_computed_style *style, uint8_t - type) -{ - uint32_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[WRITING_MODE_INDEX]; - - /* 2bits: tt : type */ - *bits = (*bits & ~WRITING_MODE_MASK) | (((uint32_t)type & 0x3) << - WRITING_MODE_SHIFT); - - return CSS_OK; -} -#undef WRITING_MODE_INDEX -#undef WRITING_MODE_SHIFT -#undef WRITING_MODE_MASK -static const css_computed_page default_page = { - .bits = { - (CSS_PAGE_BREAK_BEFORE_AUTO << 29) | (CSS_PAGE_BREAK_AFTER_AUTO - << 26) | (CSS_PAGE_BREAK_INSIDE_AUTO << 24) | ( - CSS_WIDOWS_SET << 23) | (CSS_ORPHANS_SET << 22) - }, - .orphans = 2, - .widows = 2 -}; - -#define ENSURE_PAGE do { \ - if (style->page == NULL) { \ - style->page = malloc(sizeof(css_computed_page)); \ - if (style->page == NULL) \ - return CSS_NOMEM; \ - \ - memcpy(style->page, &default_page, sizeof( \ - css_computed_page)); \ - } \ -} while(0) \ - - -#define ORPHANS_INDEX 0 -#define ORPHANS_SHIFT 22 -#define ORPHANS_MASK 0x400000 - -static inline css_error set_orphans(css_computed_style *style, uint8_t type, - int32_t integer) -{ - uint32_t *bits; - - ENSURE_PAGE; - - bits = &style->page->bits[ORPHANS_INDEX]; - - /* 1bit: t : type */ - *bits = (*bits & ~ORPHANS_MASK) | (((uint32_t)type & 0x1) << - ORPHANS_SHIFT); - - style->page->orphans = integer; - - return CSS_OK; -} -#undef ORPHANS_INDEX -#undef ORPHANS_SHIFT -#undef ORPHANS_MASK - -#define PAGE_BREAK_AFTER_INDEX 0 -#define PAGE_BREAK_AFTER_SHIFT 26 -#define PAGE_BREAK_AFTER_MASK 0x1c000000 - -static inline css_error set_page_break_after(css_computed_style *style, uint8_t - type) -{ - uint32_t *bits; - - ENSURE_PAGE; - - bits = &style->page->bits[PAGE_BREAK_AFTER_INDEX]; - - /* 3bits: ttt : type */ - *bits = (*bits & ~PAGE_BREAK_AFTER_MASK) | (((uint32_t)type & 0x7) << - PAGE_BREAK_AFTER_SHIFT); - - return CSS_OK; -} -#undef PAGE_BREAK_AFTER_INDEX -#undef PAGE_BREAK_AFTER_SHIFT -#undef PAGE_BREAK_AFTER_MASK - -#define PAGE_BREAK_BEFORE_INDEX 0 -#define PAGE_BREAK_BEFORE_SHIFT 29 -#define PAGE_BREAK_BEFORE_MASK 0xe0000000 - -static inline css_error set_page_break_before(css_computed_style *style, - uint8_t type) -{ - uint32_t *bits; - - ENSURE_PAGE; - - bits = &style->page->bits[PAGE_BREAK_BEFORE_INDEX]; - - /* 3bits: ttt : type */ - *bits = (*bits & ~PAGE_BREAK_BEFORE_MASK) | (((uint32_t)type & 0x7) << - PAGE_BREAK_BEFORE_SHIFT); - - return CSS_OK; -} -#undef PAGE_BREAK_BEFORE_INDEX -#undef PAGE_BREAK_BEFORE_SHIFT -#undef PAGE_BREAK_BEFORE_MASK - -#define PAGE_BREAK_INSIDE_INDEX 0 -#define PAGE_BREAK_INSIDE_SHIFT 24 -#define PAGE_BREAK_INSIDE_MASK 0x3000000 - -static inline css_error set_page_break_inside(css_computed_style *style, - uint8_t type) -{ - uint32_t *bits; - - ENSURE_PAGE; - - bits = &style->page->bits[PAGE_BREAK_INSIDE_INDEX]; - - /* 2bits: tt : type */ - *bits = (*bits & ~PAGE_BREAK_INSIDE_MASK) | (((uint32_t)type & 0x3) << - PAGE_BREAK_INSIDE_SHIFT); - - return CSS_OK; -} -#undef PAGE_BREAK_INSIDE_INDEX -#undef PAGE_BREAK_INSIDE_SHIFT -#undef PAGE_BREAK_INSIDE_MASK - -#define WIDOWS_INDEX 0 -#define WIDOWS_SHIFT 23 -#define WIDOWS_MASK 0x800000 - -static inline css_error set_widows(css_computed_style *style, uint8_t type, - int32_t integer) -{ - uint32_t *bits; - - ENSURE_PAGE; - - bits = &style->page->bits[WIDOWS_INDEX]; - - /* 1bit: t : type */ - *bits = (*bits & ~WIDOWS_MASK) | (((uint32_t)type & 0x1) << - WIDOWS_SHIFT); - - style->page->widows = integer; - - return CSS_OK; -} -#undef WIDOWS_INDEX -#undef WIDOWS_SHIFT -#undef WIDOWS_MASK - -#define ALIGN_CONTENT_INDEX 8 -#define ALIGN_CONTENT_SHIFT 14 -#define ALIGN_CONTENT_MASK 0x1c000 +#define ALIGN_CONTENT_INDEX 13 +#define ALIGN_CONTENT_SHIFT 1 +#define ALIGN_CONTENT_MASK 0xe static inline css_error set_align_content(css_computed_style *style, uint8_t type) @@ -893,9 +29,9 @@ static inline css_error set_align_content(css_computed_style *style, uint8_t #undef ALIGN_CONTENT_SHIFT #undef ALIGN_CONTENT_MASK -#define ALIGN_ITEMS_INDEX 8 -#define ALIGN_ITEMS_SHIFT 23 -#define ALIGN_ITEMS_MASK 0x3800000 +#define ALIGN_ITEMS_INDEX 9 +#define ALIGN_ITEMS_SHIFT 17 +#define ALIGN_ITEMS_MASK 0xe0000 static inline css_error set_align_items(css_computed_style *style, uint8_t type) { @@ -913,9 +49,9 @@ static inline css_error set_align_items(css_computed_style *style, uint8_t type) #undef ALIGN_ITEMS_SHIFT #undef ALIGN_ITEMS_MASK -#define ALIGN_SELF_INDEX 8 -#define ALIGN_SELF_SHIFT 20 -#define ALIGN_SELF_MASK 0x700000 +#define ALIGN_SELF_INDEX 9 +#define ALIGN_SELF_SHIFT 5 +#define ALIGN_SELF_MASK 0xe0 static inline css_error set_align_self(css_computed_style *style, uint8_t type) { @@ -933,9 +69,9 @@ static inline css_error set_align_self(css_computed_style *style, uint8_t type) #undef ALIGN_SELF_SHIFT #undef ALIGN_SELF_MASK -#define BACKGROUND_ATTACHMENT_INDEX 9 -#define BACKGROUND_ATTACHMENT_SHIFT 6 -#define BACKGROUND_ATTACHMENT_MASK 0xc0 +#define BACKGROUND_ATTACHMENT_INDEX 10 +#define BACKGROUND_ATTACHMENT_SHIFT 10 +#define BACKGROUND_ATTACHMENT_MASK 0xc00 static inline css_error set_background_attachment(css_computed_style *style, uint8_t type) @@ -954,9 +90,9 @@ static inline css_error set_background_attachment(css_computed_style *style, #undef BACKGROUND_ATTACHMENT_SHIFT #undef BACKGROUND_ATTACHMENT_MASK -#define BACKGROUND_COLOR_INDEX 9 -#define BACKGROUND_COLOR_SHIFT 14 -#define BACKGROUND_COLOR_MASK 0xc000 +#define BACKGROUND_COLOR_INDEX 11 +#define BACKGROUND_COLOR_SHIFT 2 +#define BACKGROUND_COLOR_MASK 0xc static inline css_error set_background_color(css_computed_style *style, uint8_t type, css_color color) @@ -977,9 +113,9 @@ static inline css_error set_background_color(css_computed_style *style, uint8_t #undef BACKGROUND_COLOR_SHIFT #undef BACKGROUND_COLOR_MASK -#define BACKGROUND_IMAGE_INDEX 10 -#define BACKGROUND_IMAGE_SHIFT 25 -#define BACKGROUND_IMAGE_MASK 0x2000000 +#define BACKGROUND_IMAGE_INDEX 14 +#define BACKGROUND_IMAGE_SHIFT 28 +#define BACKGROUND_IMAGE_MASK 0x10000000 static inline css_error set_background_image(css_computed_style *style, uint8_t type, lwc_string *string) @@ -1009,7 +145,7 @@ static inline css_error set_background_image(css_computed_style *style, uint8_t #undef BACKGROUND_IMAGE_SHIFT #undef BACKGROUND_IMAGE_MASK -#define BACKGROUND_POSITION_INDEX 5 +#define BACKGROUND_POSITION_INDEX 12 #define BACKGROUND_POSITION_SHIFT 21 #define BACKGROUND_POSITION_MASK 0xffe00000 @@ -1036,9 +172,9 @@ static inline css_error set_background_position(css_computed_style *style, #undef BACKGROUND_POSITION_SHIFT #undef BACKGROUND_POSITION_MASK -#define BACKGROUND_REPEAT_INDEX 8 -#define BACKGROUND_REPEAT_SHIFT 17 -#define BACKGROUND_REPEAT_MASK 0xe0000 +#define BACKGROUND_REPEAT_INDEX 10 +#define BACKGROUND_REPEAT_SHIFT 26 +#define BACKGROUND_REPEAT_MASK 0x1c000000 static inline css_error set_background_repeat(css_computed_style *style, uint8_t type) @@ -1057,9 +193,9 @@ static inline css_error set_background_repeat(css_computed_style *style, #undef BACKGROUND_REPEAT_SHIFT #undef BACKGROUND_REPEAT_MASK -#define BORDER_BOTTOM_COLOR_INDEX 9 -#define BORDER_BOTTOM_COLOR_SHIFT 4 -#define BORDER_BOTTOM_COLOR_MASK 0x30 +#define BORDER_BOTTOM_COLOR_INDEX 10 +#define BORDER_BOTTOM_COLOR_SHIFT 8 +#define BORDER_BOTTOM_COLOR_MASK 0x300 static inline css_error set_border_bottom_color(css_computed_style *style, uint8_t type, css_color color) @@ -1080,9 +216,9 @@ static inline css_error set_border_bottom_color(css_computed_style *style, #undef BORDER_BOTTOM_COLOR_SHIFT #undef BORDER_BOTTOM_COLOR_MASK -#define BORDER_BOTTOM_STYLE_INDEX 6 -#define BORDER_BOTTOM_STYLE_SHIFT 6 -#define BORDER_BOTTOM_STYLE_MASK 0x3c0 +#define BORDER_BOTTOM_STYLE_INDEX 13 +#define BORDER_BOTTOM_STYLE_SHIFT 8 +#define BORDER_BOTTOM_STYLE_MASK 0xf00 static inline css_error set_border_bottom_style(css_computed_style *style, uint8_t type) @@ -1102,8 +238,8 @@ static inline css_error set_border_bottom_style(css_computed_style *style, #undef BORDER_BOTTOM_STYLE_MASK #define BORDER_BOTTOM_WIDTH_INDEX 0 -#define BORDER_BOTTOM_WIDTH_SHIFT 16 -#define BORDER_BOTTOM_WIDTH_MASK 0xff0000 +#define BORDER_BOTTOM_WIDTH_SHIFT 8 +#define BORDER_BOTTOM_WIDTH_MASK 0xff00 static inline css_error set_border_bottom_width(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -1124,9 +260,9 @@ static inline css_error set_border_bottom_width(css_computed_style *style, #undef BORDER_BOTTOM_WIDTH_SHIFT #undef BORDER_BOTTOM_WIDTH_MASK -#define BORDER_COLLAPSE_INDEX 9 -#define BORDER_COLLAPSE_SHIFT 26 -#define BORDER_COLLAPSE_MASK 0xc000000 +#define BORDER_COLLAPSE_INDEX 10 +#define BORDER_COLLAPSE_SHIFT 14 +#define BORDER_COLLAPSE_MASK 0xc000 static inline css_error set_border_collapse(css_computed_style *style, uint8_t type) @@ -1145,9 +281,9 @@ static inline css_error set_border_collapse(css_computed_style *style, uint8_t #undef BORDER_COLLAPSE_SHIFT #undef BORDER_COLLAPSE_MASK -#define BORDER_LEFT_COLOR_INDEX 9 -#define BORDER_LEFT_COLOR_SHIFT 24 -#define BORDER_LEFT_COLOR_MASK 0x3000000 +#define BORDER_LEFT_COLOR_INDEX 11 +#define BORDER_LEFT_COLOR_SHIFT 12 +#define BORDER_LEFT_COLOR_MASK 0x3000 static inline css_error set_border_left_color(css_computed_style *style, uint8_t type, css_color color) @@ -1168,9 +304,9 @@ static inline css_error set_border_left_color(css_computed_style *style, #undef BORDER_LEFT_COLOR_SHIFT #undef BORDER_LEFT_COLOR_MASK -#define BORDER_LEFT_STYLE_INDEX 4 -#define BORDER_LEFT_STYLE_SHIFT 0 -#define BORDER_LEFT_STYLE_MASK 0xf +#define BORDER_LEFT_STYLE_INDEX 13 +#define BORDER_LEFT_STYLE_SHIFT 20 +#define BORDER_LEFT_STYLE_MASK 0xf00000 static inline css_error set_border_left_style(css_computed_style *style, uint8_t type) @@ -1190,8 +326,8 @@ static inline css_error set_border_left_style(css_computed_style *style, #undef BORDER_LEFT_STYLE_MASK #define BORDER_LEFT_WIDTH_INDEX 0 -#define BORDER_LEFT_WIDTH_SHIFT 0 -#define BORDER_LEFT_WIDTH_MASK 0xff +#define BORDER_LEFT_WIDTH_SHIFT 16 +#define BORDER_LEFT_WIDTH_MASK 0xff0000 static inline css_error set_border_left_width(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -1212,9 +348,9 @@ static inline css_error set_border_left_width(css_computed_style *style, #undef BORDER_LEFT_WIDTH_SHIFT #undef BORDER_LEFT_WIDTH_MASK -#define BORDER_RIGHT_COLOR_INDEX 9 -#define BORDER_RIGHT_COLOR_SHIFT 30 -#define BORDER_RIGHT_COLOR_MASK 0xc0000000 +#define BORDER_RIGHT_COLOR_INDEX 10 +#define BORDER_RIGHT_COLOR_SHIFT 16 +#define BORDER_RIGHT_COLOR_MASK 0x30000 static inline css_error set_border_right_color(css_computed_style *style, uint8_t type, css_color color) @@ -1235,9 +371,9 @@ static inline css_error set_border_right_color(css_computed_style *style, #undef BORDER_RIGHT_COLOR_SHIFT #undef BORDER_RIGHT_COLOR_MASK -#define BORDER_RIGHT_STYLE_INDEX 6 -#define BORDER_RIGHT_STYLE_SHIFT 14 -#define BORDER_RIGHT_STYLE_MASK 0x3c000 +#define BORDER_RIGHT_STYLE_INDEX 7 +#define BORDER_RIGHT_STYLE_SHIFT 0 +#define BORDER_RIGHT_STYLE_MASK 0xf static inline css_error set_border_right_style(css_computed_style *style, uint8_t type) @@ -1256,9 +392,9 @@ static inline css_error set_border_right_style(css_computed_style *style, #undef BORDER_RIGHT_STYLE_SHIFT #undef BORDER_RIGHT_STYLE_MASK -#define BORDER_RIGHT_WIDTH_INDEX 0 -#define BORDER_RIGHT_WIDTH_SHIFT 8 -#define BORDER_RIGHT_WIDTH_MASK 0xff00 +#define BORDER_RIGHT_WIDTH_INDEX 1 +#define BORDER_RIGHT_WIDTH_SHIFT 15 +#define BORDER_RIGHT_WIDTH_MASK 0x7f8000 static inline css_error set_border_right_width(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -1279,7 +415,33 @@ static inline css_error set_border_right_width(css_computed_style *style, #undef BORDER_RIGHT_WIDTH_SHIFT #undef BORDER_RIGHT_WIDTH_MASK -#define BORDER_TOP_COLOR_INDEX 8 +#define BORDER_SPACING_INDEX 12 +#define BORDER_SPACING_SHIFT 10 +#define BORDER_SPACING_MASK 0x1ffc00 + +static inline css_error set_border_spacing(css_computed_style *style, uint8_t + type, css_fixed length_a, css_unit unit_a, css_fixed length_b, + css_unit unit_b) +{ + uint32_t *bits; + + bits = &style->i.bits[BORDER_SPACING_INDEX]; + + /* 11bits: aaaaabbbbbt : unit_a | unit_b | type */ + *bits = (*bits & ~BORDER_SPACING_MASK) | ((((uint32_t)type & 0x1) | ( + unit_b << 1) | (unit_a << 6)) << BORDER_SPACING_SHIFT); + + style->i.border_spacing_a = length_a; + + style->i.border_spacing_b = length_b; + + return CSS_OK; +} +#undef BORDER_SPACING_INDEX +#undef BORDER_SPACING_SHIFT +#undef BORDER_SPACING_MASK + +#define BORDER_TOP_COLOR_INDEX 10 #define BORDER_TOP_COLOR_SHIFT 0 #define BORDER_TOP_COLOR_MASK 0x3 @@ -1302,9 +464,9 @@ static inline css_error set_border_top_color(css_computed_style *style, uint8_t #undef BORDER_TOP_COLOR_SHIFT #undef BORDER_TOP_COLOR_MASK -#define BORDER_TOP_STYLE_INDEX 6 -#define BORDER_TOP_STYLE_SHIFT 10 -#define BORDER_TOP_STYLE_MASK 0x3c00 +#define BORDER_TOP_STYLE_INDEX 5 +#define BORDER_TOP_STYLE_SHIFT 0 +#define BORDER_TOP_STYLE_MASK 0xf static inline css_error set_border_top_style(css_computed_style *style, uint8_t type) @@ -1346,7 +508,7 @@ static inline css_error set_border_top_width(css_computed_style *style, uint8_t #undef BORDER_TOP_WIDTH_SHIFT #undef BORDER_TOP_WIDTH_MASK -#define BOTTOM_INDEX 4 +#define BOTTOM_INDEX 6 #define BOTTOM_SHIFT 11 #define BOTTOM_MASK 0x3f800 @@ -1370,8 +532,8 @@ static inline css_error set_bottom(css_computed_style *style, uint8_t type, #undef BOTTOM_MASK #define BOX_SIZING_INDEX 9 -#define BOX_SIZING_SHIFT 12 -#define BOX_SIZING_MASK 0x3000 +#define BOX_SIZING_SHIFT 0 +#define BOX_SIZING_MASK 0x3 static inline css_error set_box_sizing(css_computed_style *style, uint8_t type) { @@ -1389,9 +551,71 @@ static inline css_error set_box_sizing(css_computed_style *style, uint8_t type) #undef BOX_SIZING_SHIFT #undef BOX_SIZING_MASK -#define CAPTION_SIDE_INDEX 9 -#define CAPTION_SIDE_SHIFT 20 -#define CAPTION_SIDE_MASK 0x300000 +#define BREAK_AFTER_INDEX 6 +#define BREAK_AFTER_SHIFT 0 +#define BREAK_AFTER_MASK 0xf + +static inline css_error set_break_after(css_computed_style *style, uint8_t type) +{ + uint32_t *bits; + + bits = &style->i.bits[BREAK_AFTER_INDEX]; + + /* 4bits: tttt : type */ + *bits = (*bits & ~BREAK_AFTER_MASK) | (((uint32_t)type & 0xf) << + BREAK_AFTER_SHIFT); + + return CSS_OK; +} +#undef BREAK_AFTER_INDEX +#undef BREAK_AFTER_SHIFT +#undef BREAK_AFTER_MASK + +#define BREAK_BEFORE_INDEX 13 +#define BREAK_BEFORE_SHIFT 12 +#define BREAK_BEFORE_MASK 0xf000 + +static inline css_error set_break_before(css_computed_style *style, uint8_t + type) +{ + uint32_t *bits; + + bits = &style->i.bits[BREAK_BEFORE_INDEX]; + + /* 4bits: tttt : type */ + *bits = (*bits & ~BREAK_BEFORE_MASK) | (((uint32_t)type & 0xf) << + BREAK_BEFORE_SHIFT); + + return CSS_OK; +} +#undef BREAK_BEFORE_INDEX +#undef BREAK_BEFORE_SHIFT +#undef BREAK_BEFORE_MASK + +#define BREAK_INSIDE_INDEX 4 +#define BREAK_INSIDE_SHIFT 0 +#define BREAK_INSIDE_MASK 0xf + +static inline css_error set_break_inside(css_computed_style *style, uint8_t + type) +{ + uint32_t *bits; + + bits = &style->i.bits[BREAK_INSIDE_INDEX]; + + /* 4bits: tttt : type */ + *bits = (*bits & ~BREAK_INSIDE_MASK) | (((uint32_t)type & 0xf) << + BREAK_INSIDE_SHIFT); + + return CSS_OK; +} +#undef BREAK_INSIDE_INDEX +#undef BREAK_INSIDE_SHIFT +#undef BREAK_INSIDE_MASK + +#define CAPTION_SIDE_INDEX 11 +#define CAPTION_SIDE_SHIFT 14 +#define CAPTION_SIDE_MASK 0xc000 static inline css_error set_caption_side(css_computed_style *style, uint8_t type) @@ -1410,9 +634,9 @@ static inline css_error set_caption_side(css_computed_style *style, uint8_t #undef CAPTION_SIDE_SHIFT #undef CAPTION_SIDE_MASK -#define CLEAR_INDEX 8 -#define CLEAR_SHIFT 2 -#define CLEAR_MASK 0x1c +#define CLEAR_INDEX 9 +#define CLEAR_SHIFT 20 +#define CLEAR_MASK 0x700000 static inline css_error set_clear(css_computed_style *style, uint8_t type) { @@ -1429,9 +653,52 @@ static inline css_error set_clear(css_computed_style *style, uint8_t type) #undef CLEAR_SHIFT #undef CLEAR_MASK -#define COLOR_INDEX 10 -#define COLOR_SHIFT 24 -#define COLOR_MASK 0x1000000 +#define CLIP_INDEX 2 +#define CLIP_SHIFT 6 +#define CLIP_MASK 0xffffffc0 +static inline css_error set_clip( + css_computed_style *style, uint8_t type, + css_computed_clip_rect *rect) +{ + uint32_t *bits; + + bits = &style->i.bits[CLIP_INDEX]; + + /* + 26bits: tt tttr rrrr bbbb blll llTR BLyy: + units: top | right | bottom | left + opcodes: top | right | bottom | left | type + */ + *bits = (*bits & ~CLIP_MASK) | + ((type & 0x3) << CLIP_SHIFT); + + if (type == CSS_CLIP_RECT) { + *bits |= (((rect->top_auto ? 0x20 : 0) | + (rect->right_auto ? 0x10 : 0) | + (rect->bottom_auto ? 0x8 : 0) | + (rect->left_auto ? 0x4 : 0)) << CLIP_SHIFT); + + *bits |= (((rect->tunit << 5) | rect->runit) + << (CLIP_SHIFT + 16)); + + *bits |= (((rect->bunit << 5) | rect->lunit) + << (CLIP_SHIFT + 6)); + + style->i.clip_a = rect->top; + style->i.clip_b = rect->right; + style->i.clip_c = rect->bottom; + style->i.clip_d = rect->left; + } + + return CSS_OK; +} +#undef CLIP_INDEX +#undef CLIP_SHIFT +#undef CLIP_MASK + +#define COLOR_INDEX 14 +#define COLOR_SHIFT 23 +#define COLOR_MASK 0x800000 static inline css_error set_color(css_computed_style *style, uint8_t type, css_color color) @@ -1451,9 +718,382 @@ static inline css_error set_color(css_computed_style *style, uint8_t type, #undef COLOR_SHIFT #undef COLOR_MASK -#define DIRECTION_INDEX 9 -#define DIRECTION_SHIFT 22 -#define DIRECTION_MASK 0xc00000 +#define COLUMN_COUNT_INDEX 10 +#define COLUMN_COUNT_SHIFT 2 +#define COLUMN_COUNT_MASK 0xc + +static inline css_error set_column_count(css_computed_style *style, uint8_t + type, int32_t integer) +{ + uint32_t *bits; + + bits = &style->i.bits[COLUMN_COUNT_INDEX]; + + /* 2bits: tt : type */ + *bits = (*bits & ~COLUMN_COUNT_MASK) | (((uint32_t)type & 0x3) << + COLUMN_COUNT_SHIFT); + + style->i.column_count = integer; + + return CSS_OK; +} +#undef COLUMN_COUNT_INDEX +#undef COLUMN_COUNT_SHIFT +#undef COLUMN_COUNT_MASK + +#define COLUMN_FILL_INDEX 11 +#define COLUMN_FILL_SHIFT 16 +#define COLUMN_FILL_MASK 0x30000 + +static inline css_error set_column_fill(css_computed_style *style, uint8_t type) +{ + uint32_t *bits; + + bits = &style->i.bits[COLUMN_FILL_INDEX]; + + /* 2bits: tt : type */ + *bits = (*bits & ~COLUMN_FILL_MASK) | (((uint32_t)type & 0x3) << + COLUMN_FILL_SHIFT); + + return CSS_OK; +} +#undef COLUMN_FILL_INDEX +#undef COLUMN_FILL_SHIFT +#undef COLUMN_FILL_MASK + +#define COLUMN_GAP_INDEX 5 +#define COLUMN_GAP_SHIFT 25 +#define COLUMN_GAP_MASK 0xfe000000 + +static inline css_error set_column_gap(css_computed_style *style, uint8_t type, + css_fixed length, css_unit unit) +{ + uint32_t *bits; + + bits = &style->i.bits[COLUMN_GAP_INDEX]; + + /* 7bits: uuuuutt : unit | type */ + *bits = (*bits & ~COLUMN_GAP_MASK) | ((((uint32_t)type & 0x3) | (unit + << 2)) << COLUMN_GAP_SHIFT); + + style->i.column_gap = length; + + return CSS_OK; +} +#undef COLUMN_GAP_INDEX +#undef COLUMN_GAP_SHIFT +#undef COLUMN_GAP_MASK + +#define COLUMN_RULE_COLOR_INDEX 11 +#define COLUMN_RULE_COLOR_SHIFT 30 +#define COLUMN_RULE_COLOR_MASK 0xc0000000 + +static inline css_error set_column_rule_color(css_computed_style *style, + uint8_t type, css_color color) +{ + uint32_t *bits; + + bits = &style->i.bits[COLUMN_RULE_COLOR_INDEX]; + + /* 2bits: tt : type */ + *bits = (*bits & ~COLUMN_RULE_COLOR_MASK) | (((uint32_t)type & 0x3) << + COLUMN_RULE_COLOR_SHIFT); + + style->i.column_rule_color = color; + + return CSS_OK; +} +#undef COLUMN_RULE_COLOR_INDEX +#undef COLUMN_RULE_COLOR_SHIFT +#undef COLUMN_RULE_COLOR_MASK + +#define COLUMN_RULE_STYLE_INDEX 13 +#define COLUMN_RULE_STYLE_SHIFT 16 +#define COLUMN_RULE_STYLE_MASK 0xf0000 + +static inline css_error set_column_rule_style(css_computed_style *style, + uint8_t type) +{ + uint32_t *bits; + + bits = &style->i.bits[COLUMN_RULE_STYLE_INDEX]; + + /* 4bits: tttt : type */ + *bits = (*bits & ~COLUMN_RULE_STYLE_MASK) | (((uint32_t)type & 0xf) << + COLUMN_RULE_STYLE_SHIFT); + + return CSS_OK; +} +#undef COLUMN_RULE_STYLE_INDEX +#undef COLUMN_RULE_STYLE_SHIFT +#undef COLUMN_RULE_STYLE_MASK + +#define COLUMN_RULE_WIDTH_INDEX 1 +#define COLUMN_RULE_WIDTH_SHIFT 7 +#define COLUMN_RULE_WIDTH_MASK 0x7f80 + +static inline css_error set_column_rule_width(css_computed_style *style, + uint8_t type, css_fixed length, css_unit unit) +{ + uint32_t *bits; + + bits = &style->i.bits[COLUMN_RULE_WIDTH_INDEX]; + + /* 8bits: uuuuuttt : unit | type */ + *bits = (*bits & ~COLUMN_RULE_WIDTH_MASK) | ((((uint32_t)type & 0x7) | ( + unit << 3)) << COLUMN_RULE_WIDTH_SHIFT); + + style->i.column_rule_width = length; + + return CSS_OK; +} +#undef COLUMN_RULE_WIDTH_INDEX +#undef COLUMN_RULE_WIDTH_SHIFT +#undef COLUMN_RULE_WIDTH_MASK + +#define COLUMN_SPAN_INDEX 11 +#define COLUMN_SPAN_SHIFT 24 +#define COLUMN_SPAN_MASK 0x3000000 + +static inline css_error set_column_span(css_computed_style *style, uint8_t type) +{ + uint32_t *bits; + + bits = &style->i.bits[COLUMN_SPAN_INDEX]; + + /* 2bits: tt : type */ + *bits = (*bits & ~COLUMN_SPAN_MASK) | (((uint32_t)type & 0x3) << + COLUMN_SPAN_SHIFT); + + return CSS_OK; +} +#undef COLUMN_SPAN_INDEX +#undef COLUMN_SPAN_SHIFT +#undef COLUMN_SPAN_MASK + +#define COLUMN_WIDTH_INDEX 6 +#define COLUMN_WIDTH_SHIFT 18 +#define COLUMN_WIDTH_MASK 0x1fc0000 + +static inline css_error set_column_width(css_computed_style *style, uint8_t + type, css_fixed length, css_unit unit) +{ + uint32_t *bits; + + bits = &style->i.bits[COLUMN_WIDTH_INDEX]; + + /* 7bits: uuuuutt : unit | type */ + *bits = (*bits & ~COLUMN_WIDTH_MASK) | ((((uint32_t)type & 0x3) | (unit + << 2)) << COLUMN_WIDTH_SHIFT); + + style->i.column_width = length; + + return CSS_OK; +} +#undef COLUMN_WIDTH_INDEX +#undef COLUMN_WIDTH_SHIFT +#undef COLUMN_WIDTH_MASK + +#define CONTENT_INDEX 11 +#define CONTENT_SHIFT 8 +#define CONTENT_MASK 0x300 +static inline css_error set_content( + css_computed_style *style, uint8_t type, + css_computed_content_item *content) +{ + uint32_t *bits; + css_computed_content_item *oldcontent; + css_computed_content_item *c; + + /* 2bits: type */ + bits = &style->i.bits[CONTENT_INDEX]; + oldcontent = style->content; + + *bits = (*bits & ~CONTENT_MASK) | + ((type & 0x3) << CONTENT_SHIFT); + + for (c = content; c != NULL && + c->type != CSS_COMPUTED_CONTENT_NONE; c++) { + switch (c->type) { + case CSS_COMPUTED_CONTENT_STRING: + c->data.string = lwc_string_ref(c->data.string); + break; + case CSS_COMPUTED_CONTENT_URI: + c->data.uri = lwc_string_ref(c->data.uri); + break; + case CSS_COMPUTED_CONTENT_ATTR: + c->data.attr = lwc_string_ref(c->data.attr); + break; + case CSS_COMPUTED_CONTENT_COUNTER: + c->data.counter.name = + lwc_string_ref(c->data.counter.name); + break; + case CSS_COMPUTED_CONTENT_COUNTERS: + c->data.counters.name = + lwc_string_ref(c->data.counters.name); + c->data.counters.sep = + lwc_string_ref(c->data.counters.sep); + break; + default: + break; + } + } + + style->content = content; + + /* Free existing array */ + if (oldcontent != NULL) { + for (c = oldcontent; + c->type != CSS_COMPUTED_CONTENT_NONE; c++) { + switch (c->type) { + case CSS_COMPUTED_CONTENT_STRING: + lwc_string_unref(c->data.string); + break; + case CSS_COMPUTED_CONTENT_URI: + lwc_string_unref(c->data.uri); + break; + case CSS_COMPUTED_CONTENT_ATTR: + lwc_string_unref(c->data.attr); + break; + case CSS_COMPUTED_CONTENT_COUNTER: + lwc_string_unref(c->data.counter.name); + break; + case CSS_COMPUTED_CONTENT_COUNTERS: + lwc_string_unref(c->data.counters.name); + lwc_string_unref(c->data.counters.sep); + break; + default: + break; + } + } + + if (oldcontent != content) + free(oldcontent); + } + + return CSS_OK; +} +#undef CONTENT_INDEX +#undef CONTENT_SHIFT +#undef CONTENT_MASK + +#define COUNTER_INCREMENT_INDEX 14 +#define COUNTER_INCREMENT_SHIFT 22 +#define COUNTER_INCREMENT_MASK 0x400000 + +static inline css_error set_counter_increment(css_computed_style *style, + uint8_t type, css_computed_counter *counter_arr) +{ + uint32_t *bits; + + bits = &style->i.bits[COUNTER_INCREMENT_INDEX]; + + /* 1bit: t : type */ + *bits = (*bits & ~COUNTER_INCREMENT_MASK) | (((uint32_t)type & 0x1) << + COUNTER_INCREMENT_SHIFT); + + css_computed_counter *old_counter_arr = style->counter_increment; + css_computed_counter *c; + + for (c = counter_arr; c != NULL && c->name != NULL; c++) + c->name = lwc_string_ref(c->name); + + style->counter_increment = counter_arr; + + /* Free existing array */ + if (old_counter_arr != NULL) { + for (c = old_counter_arr; c->name != NULL; c++) + lwc_string_unref(c->name); + + if (old_counter_arr != counter_arr) + free(old_counter_arr); + } + + return CSS_OK; +} +#undef COUNTER_INCREMENT_INDEX +#undef COUNTER_INCREMENT_SHIFT +#undef COUNTER_INCREMENT_MASK + +#define COUNTER_RESET_INDEX 14 +#define COUNTER_RESET_SHIFT 27 +#define COUNTER_RESET_MASK 0x8000000 + +static inline css_error set_counter_reset(css_computed_style *style, uint8_t + type, css_computed_counter *counter_arr) +{ + uint32_t *bits; + + bits = &style->i.bits[COUNTER_RESET_INDEX]; + + /* 1bit: t : type */ + *bits = (*bits & ~COUNTER_RESET_MASK) | (((uint32_t)type & 0x1) << + COUNTER_RESET_SHIFT); + + css_computed_counter *old_counter_arr = style->counter_reset; + css_computed_counter *c; + + for (c = counter_arr; c != NULL && c->name != NULL; c++) + c->name = lwc_string_ref(c->name); + + style->counter_reset = counter_arr; + + /* Free existing array */ + if (old_counter_arr != NULL) { + for (c = old_counter_arr; c->name != NULL; c++) + lwc_string_unref(c->name); + + if (old_counter_arr != counter_arr) + free(old_counter_arr); + } + + return CSS_OK; +} +#undef COUNTER_RESET_INDEX +#undef COUNTER_RESET_SHIFT +#undef COUNTER_RESET_MASK + +#define CURSOR_INDEX 3 +#define CURSOR_SHIFT 0 +#define CURSOR_MASK 0x1f + +static inline css_error set_cursor(css_computed_style *style, uint8_t type, + lwc_string **string_arr) +{ + uint32_t *bits; + + bits = &style->i.bits[CURSOR_INDEX]; + + /* 5bits: ttttt : type */ + *bits = (*bits & ~CURSOR_MASK) | (((uint32_t)type & 0x1f) << + CURSOR_SHIFT); + + lwc_string **old_string_arr = style->cursor; + lwc_string **s; + + for (s = string_arr; s != NULL && *s != NULL; s++) + *s = lwc_string_ref(*s); + + style->cursor = string_arr; + + /* Free existing array */ + if (old_string_arr != NULL) { + for (s = old_string_arr; *s != NULL; s++) + lwc_string_unref(*s); + + if (old_string_arr != string_arr) + free(old_string_arr); + } + + return CSS_OK; +} +#undef CURSOR_INDEX +#undef CURSOR_SHIFT +#undef CURSOR_MASK + +#define DIRECTION_INDEX 11 +#define DIRECTION_SHIFT 26 +#define DIRECTION_MASK 0xc000000 static inline css_error set_direction(css_computed_style *style, uint8_t type) { @@ -1471,9 +1111,9 @@ static inline css_error set_direction(css_computed_style *style, uint8_t type) #undef DIRECTION_SHIFT #undef DIRECTION_MASK -#define DISPLAY_INDEX 6 -#define DISPLAY_SHIFT 27 -#define DISPLAY_MASK 0xf8000000 +#define DISPLAY_INDEX 8 +#define DISPLAY_SHIFT 9 +#define DISPLAY_MASK 0x3e00 static inline css_error set_display(css_computed_style *style, uint8_t type) { @@ -1491,9 +1131,9 @@ static inline css_error set_display(css_computed_style *style, uint8_t type) #undef DISPLAY_SHIFT #undef DISPLAY_MASK -#define EMPTY_CELLS_INDEX 9 -#define EMPTY_CELLS_SHIFT 18 -#define EMPTY_CELLS_MASK 0xc0000 +#define EMPTY_CELLS_INDEX 11 +#define EMPTY_CELLS_SHIFT 28 +#define EMPTY_CELLS_MASK 0x30000000 static inline css_error set_empty_cells(css_computed_style *style, uint8_t type) { @@ -1511,9 +1151,9 @@ static inline css_error set_empty_cells(css_computed_style *style, uint8_t type) #undef EMPTY_CELLS_SHIFT #undef EMPTY_CELLS_MASK -#define FLEX_BASIS_INDEX 2 -#define FLEX_BASIS_SHIFT 11 -#define FLEX_BASIS_MASK 0x3f800 +#define FLEX_BASIS_INDEX 3 +#define FLEX_BASIS_SHIFT 18 +#define FLEX_BASIS_MASK 0x1fc0000 static inline css_error set_flex_basis(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -1534,7 +1174,7 @@ static inline css_error set_flex_basis(css_computed_style *style, uint8_t type, #undef FLEX_BASIS_SHIFT #undef FLEX_BASIS_MASK -#define FLEX_DIRECTION_INDEX 8 +#define FLEX_DIRECTION_INDEX 9 #define FLEX_DIRECTION_SHIFT 11 #define FLEX_DIRECTION_MASK 0x3800 @@ -1555,9 +1195,9 @@ static inline css_error set_flex_direction(css_computed_style *style, uint8_t #undef FLEX_DIRECTION_SHIFT #undef FLEX_DIRECTION_MASK -#define FLEX_GROW_INDEX 10 -#define FLEX_GROW_SHIFT 21 -#define FLEX_GROW_MASK 0x200000 +#define FLEX_GROW_INDEX 14 +#define FLEX_GROW_SHIFT 29 +#define FLEX_GROW_MASK 0x20000000 static inline css_error set_flex_grow(css_computed_style *style, uint8_t type, css_fixed fixed) @@ -1578,9 +1218,9 @@ static inline css_error set_flex_grow(css_computed_style *style, uint8_t type, #undef FLEX_GROW_SHIFT #undef FLEX_GROW_MASK -#define FLEX_SHRINK_INDEX 10 -#define FLEX_SHRINK_SHIFT 23 -#define FLEX_SHRINK_MASK 0x800000 +#define FLEX_SHRINK_INDEX 14 +#define FLEX_SHRINK_SHIFT 26 +#define FLEX_SHRINK_MASK 0x4000000 static inline css_error set_flex_shrink(css_computed_style *style, uint8_t type, css_fixed fixed) @@ -1601,9 +1241,9 @@ static inline css_error set_flex_shrink(css_computed_style *style, uint8_t #undef FLEX_SHRINK_SHIFT #undef FLEX_SHRINK_MASK -#define FLEX_WRAP_INDEX 9 -#define FLEX_WRAP_SHIFT 28 -#define FLEX_WRAP_MASK 0x30000000 +#define FLEX_WRAP_INDEX 14 +#define FLEX_WRAP_SHIFT 30 +#define FLEX_WRAP_MASK 0xc0000000 static inline css_error set_flex_wrap(css_computed_style *style, uint8_t type) { @@ -1621,9 +1261,9 @@ static inline css_error set_flex_wrap(css_computed_style *style, uint8_t type) #undef FLEX_WRAP_SHIFT #undef FLEX_WRAP_MASK -#define FLOAT_INDEX 9 -#define FLOAT_SHIFT 8 -#define FLOAT_MASK 0x300 +#define FLOAT_INDEX 10 +#define FLOAT_SHIFT 12 +#define FLOAT_MASK 0x3000 static inline css_error set_float(css_computed_style *style, uint8_t type) { @@ -1640,9 +1280,9 @@ static inline css_error set_float(css_computed_style *style, uint8_t type) #undef FLOAT_SHIFT #undef FLOAT_MASK -#define FONT_FAMILY_INDEX 8 -#define FONT_FAMILY_SHIFT 26 -#define FONT_FAMILY_MASK 0x1c000000 +#define FONT_FAMILY_INDEX 9 +#define FONT_FAMILY_SHIFT 29 +#define FONT_FAMILY_MASK 0xe0000000 static inline css_error set_font_family(css_computed_style *style, uint8_t type, lwc_string **string_arr) @@ -1678,9 +1318,9 @@ static inline css_error set_font_family(css_computed_style *style, uint8_t #undef FONT_FAMILY_SHIFT #undef FONT_FAMILY_MASK -#define FONT_SIZE_INDEX 5 -#define FONT_SIZE_SHIFT 3 -#define FONT_SIZE_MASK 0xff8 +#define FONT_SIZE_INDEX 1 +#define FONT_SIZE_SHIFT 23 +#define FONT_SIZE_MASK 0xff800000 static inline css_error set_font_size(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -1701,9 +1341,9 @@ static inline css_error set_font_size(css_computed_style *style, uint8_t type, #undef FONT_SIZE_SHIFT #undef FONT_SIZE_MASK -#define FONT_STYLE_INDEX 7 -#define FONT_STYLE_SHIFT 0 -#define FONT_STYLE_MASK 0x3 +#define FONT_STYLE_INDEX 11 +#define FONT_STYLE_SHIFT 22 +#define FONT_STYLE_MASK 0xc00000 static inline css_error set_font_style(css_computed_style *style, uint8_t type) { @@ -1721,9 +1361,9 @@ static inline css_error set_font_style(css_computed_style *style, uint8_t type) #undef FONT_STYLE_SHIFT #undef FONT_STYLE_MASK -#define FONT_VARIANT_INDEX 9 -#define FONT_VARIANT_SHIFT 10 -#define FONT_VARIANT_MASK 0xc00 +#define FONT_VARIANT_INDEX 11 +#define FONT_VARIANT_SHIFT 4 +#define FONT_VARIANT_MASK 0x30 static inline css_error set_font_variant(css_computed_style *style, uint8_t type) @@ -1742,9 +1382,9 @@ static inline css_error set_font_variant(css_computed_style *style, uint8_t #undef FONT_VARIANT_SHIFT #undef FONT_VARIANT_MASK -#define FONT_WEIGHT_INDEX 3 -#define FONT_WEIGHT_SHIFT 0 -#define FONT_WEIGHT_MASK 0xf +#define FONT_WEIGHT_INDEX 13 +#define FONT_WEIGHT_SHIFT 28 +#define FONT_WEIGHT_MASK 0xf0000000 static inline css_error set_font_weight(css_computed_style *style, uint8_t type) { @@ -1763,8 +1403,8 @@ static inline css_error set_font_weight(css_computed_style *style, uint8_t type) #undef FONT_WEIGHT_MASK #define HEIGHT_INDEX 4 -#define HEIGHT_SHIFT 4 -#define HEIGHT_MASK 0x7f0 +#define HEIGHT_SHIFT 18 +#define HEIGHT_MASK 0x1fc0000 static inline css_error set_height(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -1785,9 +1425,9 @@ static inline css_error set_height(css_computed_style *style, uint8_t type, #undef HEIGHT_SHIFT #undef HEIGHT_MASK -#define JUSTIFY_CONTENT_INDEX 8 -#define JUSTIFY_CONTENT_SHIFT 8 -#define JUSTIFY_CONTENT_MASK 0x700 +#define JUSTIFY_CONTENT_INDEX 9 +#define JUSTIFY_CONTENT_SHIFT 14 +#define JUSTIFY_CONTENT_MASK 0x1c000 static inline css_error set_justify_content(css_computed_style *style, uint8_t type) @@ -1806,9 +1446,9 @@ static inline css_error set_justify_content(css_computed_style *style, uint8_t #undef JUSTIFY_CONTENT_SHIFT #undef JUSTIFY_CONTENT_MASK -#define LEFT_INDEX 4 -#define LEFT_SHIFT 25 -#define LEFT_MASK 0xfe000000 +#define LEFT_INDEX 5 +#define LEFT_SHIFT 4 +#define LEFT_MASK 0x7f0 static inline css_error set_left(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -1829,7 +1469,30 @@ static inline css_error set_left(css_computed_style *style, uint8_t type, #undef LEFT_SHIFT #undef LEFT_MASK -#define LINE_HEIGHT_INDEX 1 +#define LETTER_SPACING_INDEX 7 +#define LETTER_SPACING_SHIFT 11 +#define LETTER_SPACING_MASK 0x3f800 + +static inline css_error set_letter_spacing(css_computed_style *style, uint8_t + type, css_fixed length, css_unit unit) +{ + uint32_t *bits; + + bits = &style->i.bits[LETTER_SPACING_INDEX]; + + /* 7bits: uuuuutt : unit | type */ + *bits = (*bits & ~LETTER_SPACING_MASK) | ((((uint32_t)type & 0x3) | ( + unit << 2)) << LETTER_SPACING_SHIFT); + + style->i.letter_spacing = length; + + return CSS_OK; +} +#undef LETTER_SPACING_INDEX +#undef LETTER_SPACING_SHIFT +#undef LETTER_SPACING_MASK + +#define LINE_HEIGHT_INDEX 4 #define LINE_HEIGHT_SHIFT 25 #define LINE_HEIGHT_MASK 0xfe000000 @@ -1852,9 +1515,9 @@ static inline css_error set_line_height(css_computed_style *style, uint8_t #undef LINE_HEIGHT_SHIFT #undef LINE_HEIGHT_MASK -#define LIST_STYLE_IMAGE_INDEX 10 -#define LIST_STYLE_IMAGE_SHIFT 26 -#define LIST_STYLE_IMAGE_MASK 0x4000000 +#define LIST_STYLE_IMAGE_INDEX 14 +#define LIST_STYLE_IMAGE_SHIFT 21 +#define LIST_STYLE_IMAGE_MASK 0x200000 static inline css_error set_list_style_image(css_computed_style *style, uint8_t type, lwc_string *string) @@ -1884,9 +1547,9 @@ static inline css_error set_list_style_image(css_computed_style *style, uint8_t #undef LIST_STYLE_IMAGE_SHIFT #undef LIST_STYLE_IMAGE_MASK -#define LIST_STYLE_POSITION_INDEX 9 -#define LIST_STYLE_POSITION_SHIFT 2 -#define LIST_STYLE_POSITION_MASK 0xc +#define LIST_STYLE_POSITION_INDEX 11 +#define LIST_STYLE_POSITION_SHIFT 10 +#define LIST_STYLE_POSITION_MASK 0xc00 static inline css_error set_list_style_position(css_computed_style *style, uint8_t type) @@ -1905,9 +1568,9 @@ static inline css_error set_list_style_position(css_computed_style *style, #undef LIST_STYLE_POSITION_SHIFT #undef LIST_STYLE_POSITION_MASK -#define LIST_STYLE_TYPE_INDEX 6 -#define LIST_STYLE_TYPE_SHIFT 18 -#define LIST_STYLE_TYPE_MASK 0x3c0000 +#define LIST_STYLE_TYPE_INDEX 8 +#define LIST_STYLE_TYPE_SHIFT 0 +#define LIST_STYLE_TYPE_MASK 0xf static inline css_error set_list_style_type(css_computed_style *style, uint8_t type) @@ -1926,7 +1589,7 @@ static inline css_error set_list_style_type(css_computed_style *style, uint8_t #undef LIST_STYLE_TYPE_SHIFT #undef LIST_STYLE_TYPE_MASK -#define MARGIN_BOTTOM_INDEX 3 +#define MARGIN_BOTTOM_INDEX 4 #define MARGIN_BOTTOM_SHIFT 4 #define MARGIN_BOTTOM_MASK 0x7f0 @@ -1949,7 +1612,7 @@ static inline css_error set_margin_bottom(css_computed_style *style, uint8_t #undef MARGIN_BOTTOM_SHIFT #undef MARGIN_BOTTOM_MASK -#define MARGIN_LEFT_INDEX 1 +#define MARGIN_LEFT_INDEX 6 #define MARGIN_LEFT_SHIFT 4 #define MARGIN_LEFT_MASK 0x7f0 @@ -1972,9 +1635,9 @@ static inline css_error set_margin_left(css_computed_style *style, uint8_t #undef MARGIN_LEFT_SHIFT #undef MARGIN_LEFT_MASK -#define MARGIN_RIGHT_INDEX 2 -#define MARGIN_RIGHT_SHIFT 18 -#define MARGIN_RIGHT_MASK 0x1fc0000 +#define MARGIN_RIGHT_INDEX 7 +#define MARGIN_RIGHT_SHIFT 4 +#define MARGIN_RIGHT_MASK 0x7f0 static inline css_error set_margin_right(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -1995,7 +1658,7 @@ static inline css_error set_margin_right(css_computed_style *style, uint8_t #undef MARGIN_RIGHT_SHIFT #undef MARGIN_RIGHT_MASK -#define MARGIN_TOP_INDEX 3 +#define MARGIN_TOP_INDEX 5 #define MARGIN_TOP_SHIFT 18 #define MARGIN_TOP_MASK 0x1fc0000 @@ -2018,9 +1681,9 @@ static inline css_error set_margin_top(css_computed_style *style, uint8_t type, #undef MARGIN_TOP_SHIFT #undef MARGIN_TOP_MASK -#define MAX_HEIGHT_INDEX 2 -#define MAX_HEIGHT_SHIFT 4 -#define MAX_HEIGHT_MASK 0x7f0 +#define MAX_HEIGHT_INDEX 5 +#define MAX_HEIGHT_SHIFT 11 +#define MAX_HEIGHT_MASK 0x3f800 static inline css_error set_max_height(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -2041,7 +1704,7 @@ static inline css_error set_max_height(css_computed_style *style, uint8_t type, #undef MAX_HEIGHT_SHIFT #undef MAX_HEIGHT_MASK -#define MAX_WIDTH_INDEX 2 +#define MAX_WIDTH_INDEX 6 #define MAX_WIDTH_SHIFT 25 #define MAX_WIDTH_MASK 0xfe000000 @@ -2065,8 +1728,8 @@ static inline css_error set_max_width(css_computed_style *style, uint8_t type, #undef MAX_WIDTH_MASK #define MIN_HEIGHT_INDEX 3 -#define MIN_HEIGHT_SHIFT 11 -#define MIN_HEIGHT_MASK 0x3f800 +#define MIN_HEIGHT_SHIFT 25 +#define MIN_HEIGHT_MASK 0xfe000000 static inline css_error set_min_height(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -2087,9 +1750,9 @@ static inline css_error set_min_height(css_computed_style *style, uint8_t type, #undef MIN_HEIGHT_SHIFT #undef MIN_HEIGHT_MASK -#define MIN_WIDTH_INDEX 1 -#define MIN_WIDTH_SHIFT 11 -#define MIN_WIDTH_MASK 0x3f800 +#define MIN_WIDTH_INDEX 7 +#define MIN_WIDTH_SHIFT 25 +#define MIN_WIDTH_MASK 0xfe000000 static inline css_error set_min_width(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -2110,9 +1773,9 @@ static inline css_error set_min_width(css_computed_style *style, uint8_t type, #undef MIN_WIDTH_SHIFT #undef MIN_WIDTH_MASK -#define OPACITY_INDEX 10 -#define OPACITY_SHIFT 22 -#define OPACITY_MASK 0x400000 +#define OPACITY_INDEX 14 +#define OPACITY_SHIFT 24 +#define OPACITY_MASK 0x1000000 static inline css_error set_opacity(css_computed_style *style, uint8_t type, css_fixed fixed) @@ -2133,9 +1796,9 @@ static inline css_error set_opacity(css_computed_style *style, uint8_t type, #undef OPACITY_SHIFT #undef OPACITY_MASK -#define ORDER_INDEX 10 -#define ORDER_SHIFT 27 -#define ORDER_MASK 0x8000000 +#define ORDER_INDEX 12 +#define ORDER_SHIFT 0 +#define ORDER_MASK 0x1 static inline css_error set_order(css_computed_style *style, uint8_t type, int32_t integer) @@ -2155,9 +1818,55 @@ static inline css_error set_order(css_computed_style *style, uint8_t type, #undef ORDER_SHIFT #undef ORDER_MASK -#define OUTLINE_STYLE_INDEX 1 -#define OUTLINE_STYLE_SHIFT 0 -#define OUTLINE_STYLE_MASK 0xf +#define ORPHANS_INDEX 14 +#define ORPHANS_SHIFT 20 +#define ORPHANS_MASK 0x100000 + +static inline css_error set_orphans(css_computed_style *style, uint8_t type, + int32_t integer) +{ + uint32_t *bits; + + bits = &style->i.bits[ORPHANS_INDEX]; + + /* 1bit: t : type */ + *bits = (*bits & ~ORPHANS_MASK) | (((uint32_t)type & 0x1) << + ORPHANS_SHIFT); + + style->i.orphans = integer; + + return CSS_OK; +} +#undef ORPHANS_INDEX +#undef ORPHANS_SHIFT +#undef ORPHANS_MASK + +#define OUTLINE_COLOR_INDEX 11 +#define OUTLINE_COLOR_SHIFT 20 +#define OUTLINE_COLOR_MASK 0x300000 + +static inline css_error set_outline_color(css_computed_style *style, uint8_t + type, css_color color) +{ + uint32_t *bits; + + bits = &style->i.bits[OUTLINE_COLOR_INDEX]; + + /* 2bits: tt : type */ + *bits = (*bits & ~OUTLINE_COLOR_MASK) | (((uint32_t)type & 0x3) << + OUTLINE_COLOR_SHIFT); + + style->i.outline_color = color; + + return CSS_OK; +} +#undef OUTLINE_COLOR_INDEX +#undef OUTLINE_COLOR_SHIFT +#undef OUTLINE_COLOR_MASK + +#define OUTLINE_STYLE_INDEX 13 +#define OUTLINE_STYLE_SHIFT 24 +#define OUTLINE_STYLE_MASK 0xf000000 static inline css_error set_outline_style(css_computed_style *style, uint8_t type) @@ -2176,9 +1885,32 @@ static inline css_error set_outline_style(css_computed_style *style, uint8_t #undef OUTLINE_STYLE_SHIFT #undef OUTLINE_STYLE_MASK -#define OVERFLOW_X_INDEX 8 -#define OVERFLOW_X_SHIFT 5 -#define OVERFLOW_X_MASK 0xe0 +#define OUTLINE_WIDTH_INDEX 0 +#define OUTLINE_WIDTH_SHIFT 0 +#define OUTLINE_WIDTH_MASK 0xff + +static inline css_error set_outline_width(css_computed_style *style, uint8_t + type, css_fixed length, css_unit unit) +{ + uint32_t *bits; + + bits = &style->i.bits[OUTLINE_WIDTH_INDEX]; + + /* 8bits: uuuuuttt : unit | type */ + *bits = (*bits & ~OUTLINE_WIDTH_MASK) | ((((uint32_t)type & 0x7) | ( + unit << 3)) << OUTLINE_WIDTH_SHIFT); + + style->i.outline_width = length; + + return CSS_OK; +} +#undef OUTLINE_WIDTH_INDEX +#undef OUTLINE_WIDTH_SHIFT +#undef OUTLINE_WIDTH_MASK + +#define OVERFLOW_X_INDEX 10 +#define OVERFLOW_X_SHIFT 29 +#define OVERFLOW_X_MASK 0xe0000000 static inline css_error set_overflow_x(css_computed_style *style, uint8_t type) { @@ -2196,9 +1928,9 @@ static inline css_error set_overflow_x(css_computed_style *style, uint8_t type) #undef OVERFLOW_X_SHIFT #undef OVERFLOW_X_MASK -#define OVERFLOW_Y_INDEX 8 -#define OVERFLOW_Y_SHIFT 29 -#define OVERFLOW_Y_MASK 0xe0000000 +#define OVERFLOW_Y_INDEX 10 +#define OVERFLOW_Y_SHIFT 20 +#define OVERFLOW_Y_MASK 0x700000 static inline css_error set_overflow_y(css_computed_style *style, uint8_t type) { @@ -2216,9 +1948,9 @@ static inline css_error set_overflow_y(css_computed_style *style, uint8_t type) #undef OVERFLOW_Y_SHIFT #undef OVERFLOW_Y_MASK -#define PADDING_BOTTOM_INDEX 7 -#define PADDING_BOTTOM_SHIFT 20 -#define PADDING_BOTTOM_MASK 0x3f00000 +#define PADDING_BOTTOM_INDEX 8 +#define PADDING_BOTTOM_SHIFT 26 +#define PADDING_BOTTOM_MASK 0xfc000000 static inline css_error set_padding_bottom(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -2239,9 +1971,9 @@ static inline css_error set_padding_bottom(css_computed_style *style, uint8_t #undef PADDING_BOTTOM_SHIFT #undef PADDING_BOTTOM_MASK -#define PADDING_LEFT_INDEX 7 -#define PADDING_LEFT_SHIFT 26 -#define PADDING_LEFT_MASK 0xfc000000 +#define PADDING_LEFT_INDEX 8 +#define PADDING_LEFT_SHIFT 14 +#define PADDING_LEFT_MASK 0xfc000 static inline css_error set_padding_left(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -2262,9 +1994,9 @@ static inline css_error set_padding_left(css_computed_style *style, uint8_t #undef PADDING_LEFT_SHIFT #undef PADDING_LEFT_MASK -#define PADDING_RIGHT_INDEX 7 -#define PADDING_RIGHT_SHIFT 8 -#define PADDING_RIGHT_MASK 0x3f00 +#define PADDING_RIGHT_INDEX 2 +#define PADDING_RIGHT_SHIFT 0 +#define PADDING_RIGHT_MASK 0x3f static inline css_error set_padding_right(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -2285,9 +2017,9 @@ static inline css_error set_padding_right(css_computed_style *style, uint8_t #undef PADDING_RIGHT_SHIFT #undef PADDING_RIGHT_MASK -#define PADDING_TOP_INDEX 7 -#define PADDING_TOP_SHIFT 14 -#define PADDING_TOP_MASK 0xfc000 +#define PADDING_TOP_INDEX 8 +#define PADDING_TOP_SHIFT 20 +#define PADDING_TOP_MASK 0x3f00000 static inline css_error set_padding_top(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -2308,9 +2040,72 @@ static inline css_error set_padding_top(css_computed_style *style, uint8_t #undef PADDING_TOP_SHIFT #undef PADDING_TOP_MASK -#define POSITION_INDEX 5 -#define POSITION_SHIFT 0 -#define POSITION_MASK 0x7 +#define PAGE_BREAK_AFTER_INDEX 9 +#define PAGE_BREAK_AFTER_SHIFT 8 +#define PAGE_BREAK_AFTER_MASK 0x700 + +static inline css_error set_page_break_after(css_computed_style *style, uint8_t + type) +{ + uint32_t *bits; + + bits = &style->i.bits[PAGE_BREAK_AFTER_INDEX]; + + /* 3bits: ttt : type */ + *bits = (*bits & ~PAGE_BREAK_AFTER_MASK) | (((uint32_t)type & 0x7) << + PAGE_BREAK_AFTER_SHIFT); + + return CSS_OK; +} +#undef PAGE_BREAK_AFTER_INDEX +#undef PAGE_BREAK_AFTER_SHIFT +#undef PAGE_BREAK_AFTER_MASK + +#define PAGE_BREAK_BEFORE_INDEX 9 +#define PAGE_BREAK_BEFORE_SHIFT 2 +#define PAGE_BREAK_BEFORE_MASK 0x1c + +static inline css_error set_page_break_before(css_computed_style *style, + uint8_t type) +{ + uint32_t *bits; + + bits = &style->i.bits[PAGE_BREAK_BEFORE_INDEX]; + + /* 3bits: ttt : type */ + *bits = (*bits & ~PAGE_BREAK_BEFORE_MASK) | (((uint32_t)type & 0x7) << + PAGE_BREAK_BEFORE_SHIFT); + + return CSS_OK; +} +#undef PAGE_BREAK_BEFORE_INDEX +#undef PAGE_BREAK_BEFORE_SHIFT +#undef PAGE_BREAK_BEFORE_MASK + +#define PAGE_BREAK_INSIDE_INDEX 11 +#define PAGE_BREAK_INSIDE_SHIFT 0 +#define PAGE_BREAK_INSIDE_MASK 0x3 + +static inline css_error set_page_break_inside(css_computed_style *style, + uint8_t type) +{ + uint32_t *bits; + + bits = &style->i.bits[PAGE_BREAK_INSIDE_INDEX]; + + /* 2bits: tt : type */ + *bits = (*bits & ~PAGE_BREAK_INSIDE_MASK) | (((uint32_t)type & 0x3) << + PAGE_BREAK_INSIDE_SHIFT); + + return CSS_OK; +} +#undef PAGE_BREAK_INSIDE_INDEX +#undef PAGE_BREAK_INSIDE_SHIFT +#undef PAGE_BREAK_INSIDE_MASK + +#define POSITION_INDEX 9 +#define POSITION_SHIFT 26 +#define POSITION_MASK 0x1c000000 static inline css_error set_position(css_computed_style *style, uint8_t type) { @@ -2328,9 +2123,9 @@ static inline css_error set_position(css_computed_style *style, uint8_t type) #undef POSITION_SHIFT #undef POSITION_MASK -#define QUOTES_INDEX 10 -#define QUOTES_SHIFT 20 -#define QUOTES_MASK 0x100000 +#define QUOTES_INDEX 13 +#define QUOTES_SHIFT 0 +#define QUOTES_MASK 0x1 static inline css_error set_quotes(css_computed_style *style, uint8_t type, lwc_string **string_arr) @@ -2366,7 +2161,7 @@ static inline css_error set_quotes(css_computed_style *style, uint8_t type, #undef QUOTES_SHIFT #undef QUOTES_MASK -#define RIGHT_INDEX 1 +#define RIGHT_INDEX 7 #define RIGHT_SHIFT 18 #define RIGHT_MASK 0x1fc0000 @@ -2389,9 +2184,9 @@ static inline css_error set_right(css_computed_style *style, uint8_t type, #undef RIGHT_SHIFT #undef RIGHT_MASK -#define TABLE_LAYOUT_INDEX 9 -#define TABLE_LAYOUT_SHIFT 0 -#define TABLE_LAYOUT_MASK 0x3 +#define TABLE_LAYOUT_INDEX 11 +#define TABLE_LAYOUT_SHIFT 18 +#define TABLE_LAYOUT_MASK 0xc0000 static inline css_error set_table_layout(css_computed_style *style, uint8_t type) @@ -2410,9 +2205,9 @@ static inline css_error set_table_layout(css_computed_style *style, uint8_t #undef TABLE_LAYOUT_SHIFT #undef TABLE_LAYOUT_MASK -#define TEXT_ALIGN_INDEX 2 -#define TEXT_ALIGN_SHIFT 0 -#define TEXT_ALIGN_MASK 0xf +#define TEXT_ALIGN_INDEX 13 +#define TEXT_ALIGN_SHIFT 4 +#define TEXT_ALIGN_MASK 0xf0 static inline css_error set_text_align(css_computed_style *style, uint8_t type) { @@ -2430,9 +2225,9 @@ static inline css_error set_text_align(css_computed_style *style, uint8_t type) #undef TEXT_ALIGN_SHIFT #undef TEXT_ALIGN_MASK -#define TEXT_DECORATION_INDEX 6 -#define TEXT_DECORATION_SHIFT 22 -#define TEXT_DECORATION_MASK 0x7c00000 +#define TEXT_DECORATION_INDEX 8 +#define TEXT_DECORATION_SHIFT 4 +#define TEXT_DECORATION_MASK 0x1f0 static inline css_error set_text_decoration(css_computed_style *style, uint8_t type) @@ -2451,9 +2246,9 @@ static inline css_error set_text_decoration(css_computed_style *style, uint8_t #undef TEXT_DECORATION_SHIFT #undef TEXT_DECORATION_MASK -#define TEXT_INDENT_INDEX 7 -#define TEXT_INDENT_SHIFT 2 -#define TEXT_INDENT_MASK 0xfc +#define TEXT_INDENT_INDEX 3 +#define TEXT_INDENT_SHIFT 5 +#define TEXT_INDENT_MASK 0x7e0 static inline css_error set_text_indent(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -2474,9 +2269,9 @@ static inline css_error set_text_indent(css_computed_style *style, uint8_t #undef TEXT_INDENT_SHIFT #undef TEXT_INDENT_MASK -#define TEXT_TRANSFORM_INDEX 6 -#define TEXT_TRANSFORM_SHIFT 3 -#define TEXT_TRANSFORM_MASK 0x38 +#define TEXT_TRANSFORM_INDEX 10 +#define TEXT_TRANSFORM_SHIFT 23 +#define TEXT_TRANSFORM_MASK 0x3800000 static inline css_error set_text_transform(css_computed_style *style, uint8_t type) @@ -2495,9 +2290,9 @@ static inline css_error set_text_transform(css_computed_style *style, uint8_t #undef TEXT_TRANSFORM_SHIFT #undef TEXT_TRANSFORM_MASK -#define TOP_INDEX 3 -#define TOP_SHIFT 25 -#define TOP_MASK 0xfe000000 +#define TOP_INDEX 1 +#define TOP_SHIFT 0 +#define TOP_MASK 0x7f static inline css_error set_top(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -2518,9 +2313,9 @@ static inline css_error set_top(css_computed_style *style, uint8_t type, #undef TOP_SHIFT #undef TOP_MASK -#define UNICODE_BIDI_INDEX 9 -#define UNICODE_BIDI_SHIFT 16 -#define UNICODE_BIDI_MASK 0x30000 +#define UNICODE_BIDI_INDEX 11 +#define UNICODE_BIDI_SHIFT 6 +#define UNICODE_BIDI_MASK 0xc0 static inline css_error set_unicode_bidi(css_computed_style *style, uint8_t type) @@ -2539,9 +2334,9 @@ static inline css_error set_unicode_bidi(css_computed_style *style, uint8_t #undef UNICODE_BIDI_SHIFT #undef UNICODE_BIDI_MASK -#define VERTICAL_ALIGN_INDEX 5 -#define VERTICAL_ALIGN_SHIFT 12 -#define VERTICAL_ALIGN_MASK 0x1ff000 +#define VERTICAL_ALIGN_INDEX 12 +#define VERTICAL_ALIGN_SHIFT 1 +#define VERTICAL_ALIGN_MASK 0x3fe static inline css_error set_vertical_align(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -2563,8 +2358,8 @@ static inline css_error set_vertical_align(css_computed_style *style, uint8_t #undef VERTICAL_ALIGN_MASK #define VISIBILITY_INDEX 10 -#define VISIBILITY_SHIFT 28 -#define VISIBILITY_MASK 0x30000000 +#define VISIBILITY_SHIFT 18 +#define VISIBILITY_MASK 0xc0000 static inline css_error set_visibility(css_computed_style *style, uint8_t type) { @@ -2582,9 +2377,9 @@ static inline css_error set_visibility(css_computed_style *style, uint8_t type) #undef VISIBILITY_SHIFT #undef VISIBILITY_MASK -#define WHITE_SPACE_INDEX 6 -#define WHITE_SPACE_SHIFT 0 -#define WHITE_SPACE_MASK 0x7 +#define WHITE_SPACE_INDEX 9 +#define WHITE_SPACE_SHIFT 23 +#define WHITE_SPACE_MASK 0x3800000 static inline css_error set_white_space(css_computed_style *style, uint8_t type) { @@ -2602,9 +2397,32 @@ static inline css_error set_white_space(css_computed_style *style, uint8_t type) #undef WHITE_SPACE_SHIFT #undef WHITE_SPACE_MASK +#define WIDOWS_INDEX 14 +#define WIDOWS_SHIFT 25 +#define WIDOWS_MASK 0x2000000 + +static inline css_error set_widows(css_computed_style *style, uint8_t type, + int32_t integer) +{ + uint32_t *bits; + + bits = &style->i.bits[WIDOWS_INDEX]; + + /* 1bit: t : type */ + *bits = (*bits & ~WIDOWS_MASK) | (((uint32_t)type & 0x1) << + WIDOWS_SHIFT); + + style->i.widows = integer; + + return CSS_OK; +} +#undef WIDOWS_INDEX +#undef WIDOWS_SHIFT +#undef WIDOWS_MASK + #define WIDTH_INDEX 4 -#define WIDTH_SHIFT 18 -#define WIDTH_MASK 0x1fc0000 +#define WIDTH_SHIFT 11 +#define WIDTH_MASK 0x3f800 static inline css_error set_width(css_computed_style *style, uint8_t type, css_fixed length, css_unit unit) @@ -2625,9 +2443,53 @@ static inline css_error set_width(css_computed_style *style, uint8_t type, #undef WIDTH_SHIFT #undef WIDTH_MASK +#define WORD_SPACING_INDEX 3 +#define WORD_SPACING_SHIFT 11 +#define WORD_SPACING_MASK 0x3f800 + +static inline css_error set_word_spacing(css_computed_style *style, uint8_t + type, css_fixed length, css_unit unit) +{ + uint32_t *bits; + + bits = &style->i.bits[WORD_SPACING_INDEX]; + + /* 7bits: uuuuutt : unit | type */ + *bits = (*bits & ~WORD_SPACING_MASK) | ((((uint32_t)type & 0x3) | (unit + << 2)) << WORD_SPACING_SHIFT); + + style->i.word_spacing = length; + + return CSS_OK; +} +#undef WORD_SPACING_INDEX +#undef WORD_SPACING_SHIFT +#undef WORD_SPACING_MASK + +#define WRITING_MODE_INDEX 10 +#define WRITING_MODE_SHIFT 6 +#define WRITING_MODE_MASK 0xc0 + +static inline css_error set_writing_mode(css_computed_style *style, uint8_t + type) +{ + uint32_t *bits; + + bits = &style->i.bits[WRITING_MODE_INDEX]; + + /* 2bits: tt : type */ + *bits = (*bits & ~WRITING_MODE_MASK) | (((uint32_t)type & 0x3) << + WRITING_MODE_SHIFT); + + return CSS_OK; +} +#undef WRITING_MODE_INDEX +#undef WRITING_MODE_SHIFT +#undef WRITING_MODE_MASK + #define Z_INDEX_INDEX 10 -#define Z_INDEX_SHIFT 30 -#define Z_INDEX_MASK 0xc0000000 +#define Z_INDEX_SHIFT 4 +#define Z_INDEX_MASK 0x30 static inline css_error set_z_index(css_computed_style *style, uint8_t type, int32_t integer) |