diff options
Diffstat (limited to 'src/select/propset.h')
-rw-r--r-- | src/select/propset.h | 2531 |
1 files changed, 1 insertions, 2530 deletions
diff --git a/src/select/propset.h b/src/select/propset.h index ea7ca48..0306946 100644 --- a/src/select/propset.h +++ b/src/select/propset.h @@ -12,2535 +12,6 @@ #include <libcss/computed.h> #include "computed.h" - -/* Important: keep this file in sync with computed.h */ -/** \todo Is there a better way to ensure this happens? */ - -/** 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_LETTER_SPACING_INHERIT << 2) | - CSS_OUTLINE_COLOR_INVERT, - (CSS_OUTLINE_WIDTH_MEDIUM << 1) | - CSS_BORDER_SPACING_INHERIT, - 0, - (CSS_WORD_SPACING_INHERIT << 2) | - (CSS_COUNTER_INCREMENT_NONE << 1) | - CSS_COUNTER_RESET_NONE, - (CSS_CURSOR_INHERIT << 3) | - (CSS_WRITING_MODE_INHERIT << 1), - 0, - 0, - (CSS_CLIP_AUTO << 2) | CSS_CONTENT_NORMAL, - (CSS_COLUMN_COUNT_AUTO << 6) | - (CSS_COLUMN_FILL_BALANCE << 4) | - (CSS_COLUMN_RULE_STYLE_NONE << 0), - (CSS_COLUMN_GAP_NORMAL << 2) | - (CSS_COLUMN_RULE_COLOR_CURRENT_COLOR), - (CSS_COLUMN_RULE_WIDTH_MEDIUM << 1), - (CSS_COLUMN_SPAN_NONE << 6) | CSS_COLUMN_WIDTH_AUTO, - (CSS_BREAK_BEFORE_AUTO << 4) | CSS_BREAK_AFTER_AUTO, - (CSS_BREAK_INSIDE_AUTO) - }, - .border_spacing = { 0, 0 }, - .clip = { 0, 0, 0, 0 }, - .letter_spacing = 0, - .outline_color = 0x0, - .outline_width = 0, - .word_spacing = 0, - .column_count = 0, - .column_gap = 0, - .column_rule_color = 0, - .column_rule_width = 0, - .column_width = 0 - }, - .counter_increment = NULL, - .counter_reset = NULL, - .content = 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) - -static const css_computed_page default_page = { - { - (CSS_PAGE_BREAK_INSIDE_AUTO << 6) | - (CSS_PAGE_BREAK_BEFORE_AUTO << 3) | - CSS_PAGE_BREAK_AFTER_AUTO, - (CSS_WIDOWS_SET << 1) | - CSS_ORPHANS_SET - }, - 2 << CSS_RADIX_POINT, - 2 << CSS_RADIX_POINT -}; - -#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 LETTER_SPACING_INDEX 0 -#define LETTER_SPACING_SHIFT 2 -#define LETTER_SPACING_MASK 0xfc -static inline css_error set_letter_spacing( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[LETTER_SPACING_INDEX]; - - /* 6bits: uuuutt : unit | type */ - *bits = (*bits & ~LETTER_SPACING_MASK) | - (((type & 0x3) | unit << 2) << LETTER_SPACING_SHIFT); - - style->i.uncommon->i.letter_spacing = length; - - return CSS_OK; -} -#undef LETTER_SPACING_MASK -#undef LETTER_SPACING_SHIFT -#undef LETTER_SPACING_INDEX - -#define OUTLINE_COLOR_INDEX 0 -#define OUTLINE_COLOR_SHIFT 0 -#define OUTLINE_COLOR_MASK 0x3 -static inline css_error set_outline_color( - css_computed_style *style, uint8_t type, css_color color) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[OUTLINE_COLOR_INDEX]; - - /* 2bits: tt : type */ - *bits = (*bits & ~OUTLINE_COLOR_MASK) | - ((type & 0x3) << OUTLINE_COLOR_SHIFT); - - style->i.uncommon->i.outline_color = color; - - return CSS_OK; -} -#undef OUTLINE_COLOR_MASK -#undef OUTLINE_COLOR_SHIFT -#undef OUTLINE_COLOR_INDEX - -#define OUTLINE_WIDTH_INDEX 1 -#define OUTLINE_WIDTH_SHIFT 1 -#define OUTLINE_WIDTH_MASK 0xfe -static inline css_error set_outline_width( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[OUTLINE_WIDTH_INDEX]; - - /* 7bits: uuuuttt : unit | type */ - *bits = (*bits & ~OUTLINE_WIDTH_MASK) | - (((type & 0x7) | (unit << 3)) << OUTLINE_WIDTH_SHIFT); - - style->i.uncommon->i.outline_width = length; - - return CSS_OK; -} -#undef OUTLINE_WIDTH_MASK -#undef OUTLINE_WIDTH_SHIFT -#undef OUTLINE_WIDTH_INDEX - -#define BORDER_SPACING_INDEX 1 -#define BORDER_SPACING_SHIFT 0 -#define BORDER_SPACING_MASK 0x1 -#define BORDER_SPACING_INDEX1 2 -#define BORDER_SPACING_SHIFT1 0 -static inline css_error set_border_spacing( - css_computed_style *style, uint8_t type, - css_fixed hlength, css_unit hunit, - css_fixed vlength, css_unit vunit) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[BORDER_SPACING_INDEX]; - - /* 1 bit: type */ - *bits = (*bits & ~BORDER_SPACING_MASK) | - ((type & 0x1) << BORDER_SPACING_SHIFT); - - bits = &style->i.uncommon->i.bits[BORDER_SPACING_INDEX1]; - - /* 8bits: hhhhvvvv : hunit | vunit */ - *bits = (((hunit << 4) | vunit) << BORDER_SPACING_SHIFT1); - - - style->i.uncommon->i.border_spacing[0] = hlength; - style->i.uncommon->i.border_spacing[1] = vlength; - - return CSS_OK; -} -#undef BORDER_SPACING_SHIFT1 -#undef BORDER_SPACING_INDEX1 -#undef BORDER_SPACING_MASK -#undef BORDER_SPACING_SHIFT -#undef BORDER_SPACING_INDEX - -#define BREAK_AFTER_INDEX 12 -#define BREAK_AFTER_SHIFT 0 -#define BREAK_AFTER_MASK 0xf -static inline css_error set_break_after( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[BREAK_AFTER_INDEX]; - - /* 4bits: type */ - *bits = (*bits & ~BREAK_AFTER_MASK) | - ((type & 0xf) << BREAK_AFTER_SHIFT); - - return CSS_OK; -} -#undef BREAK_AFTER_MASK -#undef BREAK_AFTER_SHIFT -#undef BREAK_AFTER_INDEX - -#define BREAK_BEFORE_INDEX 12 -#define BREAK_BEFORE_SHIFT 4 -#define BREAK_BEFORE_MASK (0xf << 4) -static inline css_error set_break_before( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[BREAK_BEFORE_INDEX]; - - /* 4bits: type */ - *bits = (*bits & ~BREAK_BEFORE_MASK) | - ((type & 0xf) << BREAK_BEFORE_SHIFT); - - return CSS_OK; -} -#undef BREAK_BEFORE_MASK -#undef BREAK_BEFORE_SHIFT -#undef BREAK_BEFORE_INDEX - -#define BREAK_INSIDE_INDEX 13 -#define BREAK_INSIDE_SHIFT 4 -#define BREAK_INSIDE_MASK (0xf << 4) -static inline css_error set_break_inside( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[BREAK_INSIDE_INDEX]; - - /* 4bits: type */ - *bits = (*bits & ~BREAK_INSIDE_MASK) | - ((type & 0xf) << BREAK_INSIDE_SHIFT); - - return CSS_OK; -} -#undef BREAK_INSIDE_MASK -#undef BREAK_INSIDE_SHIFT -#undef BREAK_INSIDE_INDEX - -#define WORD_SPACING_INDEX 3 -#define WORD_SPACING_SHIFT 2 -#define WORD_SPACING_MASK 0xfc -static inline css_error set_word_spacing( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[WORD_SPACING_INDEX]; - - /* 6bits: uuuutt : unit | type */ - *bits = (*bits & ~WORD_SPACING_MASK) | - (((type & 0x3) | (unit << 2)) << WORD_SPACING_SHIFT); - - style->i.uncommon->i.word_spacing = length; - - return CSS_OK; -} -#undef WORD_SPACING_MASK -#undef WORD_SPACING_SHIFT -#undef WORD_SPACING_INDEX - -#define WRITING_MODE_INDEX 4 -#define WRITING_MODE_SHIFT 1 -#define WRITING_MODE_MASK 0x6 -static inline css_error set_writing_mode( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[WRITING_MODE_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~WRITING_MODE_MASK) | - ((type & 0x3) << WRITING_MODE_SHIFT); - - return CSS_OK; -} -#undef WRITING_MODE_MASK -#undef WRITING_MODE_SHIFT -#undef WRITING_MODE_INDEX - -#define COUNTER_INCREMENT_INDEX 3 -#define COUNTER_INCREMENT_SHIFT 1 -#define COUNTER_INCREMENT_MASK 0x2 -static inline css_error set_counter_increment( - css_computed_style *style, uint8_t type, - css_computed_counter *counters) -{ - uint8_t *bits; - css_computed_counter *oldcounters; - css_computed_counter *c; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COUNTER_INCREMENT_INDEX]; - oldcounters = style->i.uncommon->counter_increment; - - /* 1bit: type */ - *bits = (*bits & ~COUNTER_INCREMENT_MASK) | - ((type & 0x1) << COUNTER_INCREMENT_SHIFT); - - for (c = counters; c != NULL && c->name != NULL; c++) - c->name = lwc_string_ref(c->name); - - style->i.uncommon->counter_increment = counters; - - /* Free existing array */ - if (oldcounters != NULL) { - for (c = oldcounters; c->name != NULL; c++) - lwc_string_unref(c->name); - - if (oldcounters != counters) - free(oldcounters); - } - - return CSS_OK; -} -#undef COUNTER_INCREMENT_MASK -#undef COUNTER_INCREMENT_SHIFT -#undef COUNTER_INCREMENT_INDEX - -#define COUNTER_RESET_INDEX 3 -#define COUNTER_RESET_SHIFT 0 -#define COUNTER_RESET_MASK 0x1 -static inline css_error set_counter_reset( - css_computed_style *style, uint8_t type, - css_computed_counter *counters) -{ - uint8_t *bits; - css_computed_counter *oldcounters; - css_computed_counter *c; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COUNTER_RESET_INDEX]; - oldcounters = style->i.uncommon->counter_reset; - - /* 1bit: type */ - *bits = (*bits & ~COUNTER_RESET_MASK) | - ((type & 0x1) << COUNTER_RESET_SHIFT); - - for (c = counters; c != NULL && c->name != NULL; c++) - c->name = lwc_string_ref(c->name); - - style->i.uncommon->counter_reset = counters; - - /* Free existing array */ - if (oldcounters != NULL) { - for (c = oldcounters; c->name != NULL; c++) - lwc_string_unref(c->name); - - if (oldcounters != counters) - free(oldcounters); - } - - return CSS_OK; -} -#undef COUNTER_RESET_MASK -#undef COUNTER_RESET_SHIFT -#undef COUNTER_RESET_INDEX - -#define CURSOR_INDEX 4 -#define CURSOR_SHIFT 3 -#define CURSOR_MASK 0xf8 -static inline css_error set_cursor( - css_computed_style *style, uint8_t type, - lwc_string **urls) -{ - uint8_t *bits; - lwc_string **oldurls; - lwc_string **s; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[CURSOR_INDEX]; - oldurls = style->i.uncommon->cursor; - - /* 5bits: type */ - *bits = (*bits & ~CURSOR_MASK) | - ((type & 0x1f) << CURSOR_SHIFT); - - for (s = urls; s != NULL && *s != NULL; s++) - *s = lwc_string_ref(*s); - - style->i.uncommon->cursor = urls; - - /* Free existing array */ - if (oldurls != NULL) { - for (s = oldurls; *s != NULL; s++) - lwc_string_unref(*s); - - if (oldurls != urls) - free(oldurls); - } - - return CSS_OK; -} -#undef CURSOR_MASK -#undef CURSOR_SHIFT -#undef CURSOR_INDEX - -#define CLIP_INDEX 7 -#define CLIP_SHIFT 2 -#define CLIP_MASK 0xfc -#define CLIP_INDEX1 5 -#define CLIP_SHIFT1 0 -#define CLIP_INDEX2 6 -#define CLIP_SHIFT2 0 -static inline css_error set_clip( - css_computed_style *style, uint8_t type, - css_computed_clip_rect *rect) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[CLIP_INDEX]; - - /* 6bits: trblyy : 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 = &style->i.uncommon->i.bits[CLIP_INDEX1]; - - /* 8bits: ttttrrrr : top | right */ - *bits = (((rect->tunit << 4) | rect->runit) << CLIP_SHIFT1); - - bits = &style->i.uncommon->i.bits[CLIP_INDEX2]; - - /* 8bits: bbbbllll : bottom | left */ - *bits = (((rect->bunit << 4) | rect->lunit) << CLIP_SHIFT2); - - style->i.uncommon->i.clip[0] = rect->top; - style->i.uncommon->i.clip[1] = rect->right; - style->i.uncommon->i.clip[2] = rect->bottom; - style->i.uncommon->i.clip[3] = rect->left; - } - - return CSS_OK; -} -#undef CLIP_SHIFT2 -#undef CLIP_INDEX2 -#undef CLIP_SHIFT1 -#undef CLIP_INDEX1 -#undef CLIP_MASK -#undef CLIP_SHIFT -#undef CLIP_INDEX - -#define COLUMN_COUNT_INDEX 8 -#define COLUMN_COUNT_SHIFT 6 -#define COLUMN_COUNT_MASK 0xc0 -static inline css_error set_column_count( - css_computed_style *style, uint8_t type, int32_t count) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_COUNT_INDEX]; - - /* 2bits: tt : type */ - *bits = (*bits & ~COLUMN_COUNT_MASK) | - ((type & 0x3) << COLUMN_COUNT_SHIFT); - - style->i.uncommon->i.column_count = count; - - return CSS_OK; -} -#undef COLUMN_COUNT_MASK -#undef COLUMN_COUNT_SHIFT -#undef COLUMN_COUNT_INDEX - -#define COLUMN_FILL_INDEX 8 -#define COLUMN_FILL_SHIFT 4 -#define COLUMN_FILL_MASK 0x30 -static inline css_error set_column_fill( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_FILL_INDEX]; - - /* 2bits: tt : type */ - *bits = (*bits & ~COLUMN_FILL_MASK) | - ((type & 0x3) << COLUMN_FILL_SHIFT); - - return CSS_OK; -} -#undef COLUMN_FILL_MASK -#undef COLUMN_FILL_SHIFT -#undef COLUMN_FILL_INDEX - -#define COLUMN_GAP_INDEX 9 -#define COLUMN_GAP_SHIFT 2 -#define COLUMN_GAP_MASK 0xfc -static inline css_error set_column_gap( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_GAP_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~COLUMN_GAP_MASK) | - (((type & 0x3) | (unit << 2)) << COLUMN_GAP_SHIFT); - - style->i.uncommon->i.column_gap = length; - - return CSS_OK; -} -#undef COLUMN_GAP_MASK -#undef COLUMN_GAP_SHIFT -#undef COLUMN_GAP_INDEX - -#define COLUMN_RULE_COLOR_INDEX 9 -#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) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_RULE_COLOR_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~COLUMN_RULE_COLOR_MASK) | - ((type & 0x3) << COLUMN_RULE_COLOR_SHIFT); - - style->i.uncommon->i.column_rule_color = color; - - return CSS_OK; -} -#undef COLUMN_RULE_COLOR_MASK -#undef COLUMN_RULE_COLOR_SHIFT -#undef COLUMN_RULE_COLOR_INDEX - -#define COLUMN_RULE_STYLE_INDEX 8 -#define COLUMN_RULE_STYLE_SHIFT 0 -#define COLUMN_RULE_STYLE_MASK 0xf -static inline css_error set_column_rule_style( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_RULE_STYLE_INDEX]; - - /* 4bits: type */ - *bits = (*bits & ~COLUMN_RULE_STYLE_MASK) | - ((type & 0xf) << COLUMN_RULE_STYLE_SHIFT); - - return CSS_OK; -} -#undef COLUMN_RULE_STYLE_MASK -#undef COLUMN_RULE_STYLE_SHIFT -#undef COLUMN_RULE_STYLE_INDEX - -#define COLUMN_RULE_WIDTH_INDEX 10 -#define COLUMN_RULE_WIDTH_SHIFT 1 -#define COLUMN_RULE_WIDTH_MASK 0xfe -static inline css_error set_column_rule_width( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_RULE_WIDTH_INDEX]; - - /* 7bits: uuuuttt : units | type */ - *bits = (*bits & ~COLUMN_RULE_WIDTH_MASK) | - (((type & 0x7) | (unit << 3)) << COLUMN_RULE_WIDTH_SHIFT); - - style->i.uncommon->i.column_rule_width = length; - - return CSS_OK; -} -#undef COLUMN_RULE_WIDTH_MASK -#undef COLUMN_RULE_WIDTH_SHIFT -#undef COLUMN_RULE_WIDTH_INDEX - -#define COLUMN_SPAN_INDEX 11 -#define COLUMN_SPAN_SHIFT 6 -#define COLUMN_SPAN_MASK 0xc0 -static inline css_error set_column_span( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_SPAN_INDEX]; - - /* 2bits: tt : type */ - *bits = (*bits & ~COLUMN_SPAN_MASK) | - ((type & 0x3) << COLUMN_SPAN_SHIFT); - - return CSS_OK; -} -#undef COLUMN_SPAN_MASK -#undef COLUMN_SPAN_SHIFT -#undef COLUMN_SPAN_INDEX - -#define COLUMN_WIDTH_INDEX 11 -#define COLUMN_WIDTH_SHIFT 0 -#define COLUMN_WIDTH_MASK 0x3f -static inline css_error set_column_width( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits; - - ENSURE_UNCOMMON; - - bits = &style->i.uncommon->i.bits[COLUMN_WIDTH_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~COLUMN_WIDTH_MASK) | - (((type & 0x3) | (unit << 2)) << COLUMN_WIDTH_SHIFT); - - style->i.uncommon->i.column_width = length; - - return CSS_OK; -} -#undef COLUMN_WIDTH_MASK -#undef COLUMN_WIDTH_SHIFT -#undef COLUMN_WIDTH_INDEX - -#define CONTENT_INDEX 7 -#define CONTENT_SHIFT 0 -#define CONTENT_MASK 0x3 -static inline css_error set_content( - css_computed_style *style, uint8_t type, - css_computed_content_item *content) -{ - uint8_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_MASK -#undef CONTENT_SHIFT -#undef CONTENT_INDEX - - -#define VERTICAL_ALIGN_INDEX 0 -#define VERTICAL_ALIGN_SHIFT 0 -static inline css_error set_vertical_align( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[VERTICAL_ALIGN_INDEX]; - - /* 8bits: uuuutttt : units | type */ - *bits = (((type & 0xf) | (unit << 4)) << VERTICAL_ALIGN_SHIFT); - - style->i.vertical_align = length; - - return CSS_OK; -} -#undef VERTICAL_ALIGN_SHIFT -#undef VERTICAL_ALIGN_INDEX - -#define FONT_SIZE_INDEX 1 -#define FONT_SIZE_SHIFT 0 -static inline css_error set_font_size( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[FONT_SIZE_INDEX]; - - /* 8bits: uuuutttt : units | type */ - *bits = (((type & 0xf) | (unit << 4)) << FONT_SIZE_SHIFT); - - style->i.font_size = length; - - return CSS_OK; -} -#undef FONT_SIZE_SHIFT -#undef FONT_SIZE_INDEX - -#define BORDER_TOP_WIDTH_INDEX 2 -#define BORDER_TOP_WIDTH_SHIFT 1 -#define BORDER_TOP_WIDTH_MASK 0xfe -static inline css_error set_border_top_width( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[BORDER_TOP_WIDTH_INDEX]; - - /* 7bits: uuuuttt : units | type */ - *bits = (*bits & ~BORDER_TOP_WIDTH_MASK) | - (((type & 0x7) | (unit << 3)) << BORDER_TOP_WIDTH_SHIFT); - - style->i.border_width[0] = length; - - return CSS_OK; -} -#undef BORDER_TOP_WIDTH_MASK -#undef BORDER_TOP_WIDTH_SHIFT -#undef BORDER_TOP_WIDTH_INDEX - -#define BORDER_RIGHT_WIDTH_INDEX 3 -#define BORDER_RIGHT_WIDTH_SHIFT 1 -#define BORDER_RIGHT_WIDTH_MASK 0xfe -static inline css_error set_border_right_width( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[BORDER_RIGHT_WIDTH_INDEX]; - - /* 7bits: uuuuttt : units | type */ - *bits = (*bits & ~BORDER_RIGHT_WIDTH_MASK) | - (((type & 0x7) | (unit << 3)) << BORDER_RIGHT_WIDTH_SHIFT); - - style->i.border_width[1] = length; - - return CSS_OK; -} -#undef BORDER_RIGHT_WIDTH_MASK -#undef BORDER_RIGHT_WIDTH_SHIFT -#undef BORDER_RIGHT_WIDTH_INDEX - -#define BORDER_BOTTOM_WIDTH_INDEX 4 -#define BORDER_BOTTOM_WIDTH_SHIFT 1 -#define BORDER_BOTTOM_WIDTH_MASK 0xfe -static inline css_error set_border_bottom_width( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[BORDER_BOTTOM_WIDTH_INDEX]; - - /* 7bits: uuuuttt : units | type */ - *bits = (*bits & ~BORDER_BOTTOM_WIDTH_MASK) | - (((type & 0x7) | (unit << 3)) << BORDER_BOTTOM_WIDTH_SHIFT); - - style->i.border_width[2] = length; - - return CSS_OK; -} -#undef BORDER_BOTTOM_WIDTH_MASK -#undef BORDER_BOTTOM_WIDTH_SHIFT -#undef BORDER_BOTTOM_WIDTH_INDEX - -#define BORDER_LEFT_WIDTH_INDEX 5 -#define BORDER_LEFT_WIDTH_SHIFT 1 -#define BORDER_LEFT_WIDTH_MASK 0xfe -static inline css_error set_border_left_width( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[BORDER_LEFT_WIDTH_INDEX]; - - /* 7bits: uuuuttt : units | type */ - *bits = (*bits & ~BORDER_LEFT_WIDTH_MASK) | - (((type & 0x7) | (unit << 3)) << BORDER_LEFT_WIDTH_SHIFT); - - style->i.border_width[3] = length; - - return CSS_OK; -} -#undef BORDER_LEFT_WIDTH_MASK -#undef BORDER_LEFT_WIDTH_SHIFT -#undef BORDER_LEFT_WIDTH_INDEX - -#define BACKGROUND_IMAGE_INDEX 2 -#define BACKGROUND_IMAGE_SHIFT 0 -#define BACKGROUND_IMAGE_MASK 0x1 -static inline css_error set_background_image( - css_computed_style *style, uint8_t type, - lwc_string *url) -{ - uint8_t *bits = &style->i.bits[BACKGROUND_IMAGE_INDEX]; - lwc_string *oldurl = style->i.background_image; - - /* 1bit: type */ - *bits = (*bits & ~BACKGROUND_IMAGE_MASK) | - ((type & 0x1) << BACKGROUND_IMAGE_SHIFT); - - if (url != NULL) { - style->i.background_image = lwc_string_ref(url); - } else { - style->i.background_image = NULL; - } - - if (oldurl != NULL) - lwc_string_unref(oldurl); - - return CSS_OK; -} -#undef BACKGROUND_IMAGE_MASK -#undef BACKGROUND_IMAGE_SHIFT -#undef BACKGROUND_IMAGE_INDEX - -#define COLOR_INDEX 3 -#define COLOR_SHIFT 0 -#define COLOR_MASK 0x1 -static inline css_error set_color( - css_computed_style *style, uint8_t type, - css_color color) -{ - uint8_t *bits = &style->i.bits[COLOR_INDEX]; - - /* 1bit: type */ - *bits = (*bits & ~COLOR_MASK) | - ((type & 0x1) << COLOR_SHIFT); - - style->i.color = color; - - return CSS_OK; -} -#undef COLOR_MASK -#undef COLOR_SHIFT -#undef COLOR_INDEX - -#define LIST_STYLE_IMAGE_INDEX 4 -#define LIST_STYLE_IMAGE_SHIFT 0 -#define LIST_STYLE_IMAGE_MASK 0x1 -static inline css_error set_list_style_image( - css_computed_style *style, uint8_t type, - lwc_string *url) -{ - uint8_t *bits = &style->i.bits[LIST_STYLE_IMAGE_INDEX]; - lwc_string *oldurl = style->i.list_style_image; - - /* 1bit: type */ - *bits = (*bits & ~LIST_STYLE_IMAGE_MASK) | - ((type & 0x1) << LIST_STYLE_IMAGE_SHIFT); - - if (url != NULL) { - style->i.list_style_image = lwc_string_ref(url); - } else { - style->i.list_style_image = NULL; - } - - if (oldurl != NULL) - lwc_string_unref(oldurl); - - return CSS_OK; -} -#undef LIST_STYLE_IMAGE_MASK -#undef LIST_STYLE_IMAGE_SHIFT -#undef LIST_STYLE_IMAGE_INDEX - -#define QUOTES_INDEX 5 -#define QUOTES_SHIFT 0 -#define QUOTES_MASK 0x1 -static inline css_error set_quotes( - css_computed_style *style, uint8_t type, - lwc_string **quotes) -{ - uint8_t *bits = &style->i.bits[QUOTES_INDEX]; - lwc_string **oldquotes = style->quotes; - lwc_string **s; - - /* 1bit: type */ - *bits = (*bits & ~QUOTES_MASK) | - ((type & 0x1) << QUOTES_SHIFT); - - for (s = quotes; s != NULL && *s != NULL; s++) - *s = lwc_string_ref(*s); - - style->quotes = quotes; - - /* Free current quotes */ - if (oldquotes != NULL) { - for (s = oldquotes; *s != NULL; s++) - lwc_string_unref(*s); - - if (oldquotes != quotes) - free(oldquotes); - } - - return CSS_OK; -} -#undef QUOTES_MASK -#undef QUOTES_SHIFT -#undef QUOTES_INDEX - -#define TOP_INDEX 6 -#define TOP_SHIFT 2 -#define TOP_MASK 0xfc -static inline css_error set_top( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[TOP_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~TOP_MASK) | - (((type & 0x3) | (unit << 2)) << TOP_SHIFT); - - style->i.top = length; - - return CSS_OK; -} -#undef TOP_MASK -#undef TOP_SHIFT -#undef TOP_INDEX - -#define RIGHT_INDEX 7 -#define RIGHT_SHIFT 2 -#define RIGHT_MASK 0xfc -static inline css_error set_right( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[RIGHT_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~RIGHT_MASK) | - (((type & 0x3) | (unit << 2)) << RIGHT_SHIFT); - - style->i.right = length; - - return CSS_OK; -} -#undef RIGHT_MASK -#undef RIGHT_SHIFT -#undef RIGHT_INDEX - -#define BOTTOM_INDEX 8 -#define BOTTOM_SHIFT 2 -#define BOTTOM_MASK 0xfc -static inline css_error set_bottom( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[BOTTOM_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~BOTTOM_MASK) | - (((type & 0x3) | (unit << 2)) << BOTTOM_SHIFT); - - style->i.bottom = length; - - return CSS_OK; -} -#undef BOTTOM_MASK -#undef BOTTOM_SHIFT -#undef BOTTOM_INDEX - -#define LEFT_INDEX 9 -#define LEFT_SHIFT 2 -#define LEFT_MASK 0xfc -static inline css_error set_left( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[LEFT_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~LEFT_MASK) | - (((type & 0x3) | (unit << 2)) << LEFT_SHIFT); - - style->i.left = length; - - return CSS_OK; -} -#undef LEFT_MASK -#undef LEFT_SHIFT -#undef LEFT_INDEX - -#define BORDER_TOP_COLOR_INDEX 6 -#define BORDER_TOP_COLOR_SHIFT 0 -#define BORDER_TOP_COLOR_MASK 0x3 -static inline css_error set_border_top_color( - css_computed_style *style, uint8_t type, - css_color color) -{ - uint8_t *bits = &style->i.bits[BORDER_TOP_COLOR_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~BORDER_TOP_COLOR_MASK) | - ((type & 0x3) << BORDER_TOP_COLOR_SHIFT); - - style->i.border_color[0] = color; - - return CSS_OK; -} -#undef BORDER_TOP_COLOR_MASK -#undef BORDER_TOP_COLOR_SHIFT -#undef BORDER_TOP_COLOR_INDEX - -#define BORDER_RIGHT_COLOR_INDEX 7 -#define BORDER_RIGHT_COLOR_SHIFT 0 -#define BORDER_RIGHT_COLOR_MASK 0x3 -static inline css_error set_border_right_color( - css_computed_style *style, uint8_t type, - css_color color) -{ - uint8_t *bits = &style->i.bits[BORDER_RIGHT_COLOR_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~BORDER_RIGHT_COLOR_MASK) | - ((type & 0x3) << BORDER_RIGHT_COLOR_SHIFT); - - style->i.border_color[1] = color; - - return CSS_OK; -} -#undef BORDER_RIGHT_COLOR_MASK -#undef BORDER_RIGHT_COLOR_SHIFT -#undef BORDER_RIGHT_COLOR_INDEX - -#define BORDER_BOTTOM_COLOR_INDEX 8 -#define BORDER_BOTTOM_COLOR_SHIFT 0 -#define BORDER_BOTTOM_COLOR_MASK 0x3 -static inline css_error set_border_bottom_color( - css_computed_style *style, uint8_t type, - css_color color) -{ - uint8_t *bits = &style->i.bits[BORDER_BOTTOM_COLOR_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~BORDER_BOTTOM_COLOR_MASK) | - ((type & 0x3) << BORDER_BOTTOM_COLOR_SHIFT); - - style->i.border_color[2] = color; - - return CSS_OK; -} -#undef BORDER_BOTTOM_COLOR_MASK -#undef BORDER_BOTTOM_COLOR_SHIFT -#undef BORDER_BOTTOM_COLOR_INDEX - -#define BORDER_LEFT_COLOR_INDEX 9 -#define BORDER_LEFT_COLOR_SHIFT 0 -#define BORDER_LEFT_COLOR_MASK 0x3 -static inline css_error set_border_left_color( - css_computed_style *style, uint8_t type, - css_color color) -{ - uint8_t *bits = &style->i.bits[BORDER_LEFT_COLOR_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~BORDER_LEFT_COLOR_MASK) | - ((type & 0x3) << BORDER_LEFT_COLOR_SHIFT); - - style->i.border_color[3] = color; - - return CSS_OK; -} -#undef BORDER_LEFT_COLOR_MASK -#undef BORDER_LEFT_COLOR_SHIFT -#undef BORDER_LEFT_COLOR_INDEX - -#define HEIGHT_INDEX 10 -#define HEIGHT_SHIFT 2 -#define HEIGHT_MASK 0xfc -static inline css_error set_height( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[HEIGHT_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~HEIGHT_MASK) | - (((type & 0x3) | (unit << 2)) << HEIGHT_SHIFT); - - style->i.height = length; - - return CSS_OK; -} -#undef HEIGHT_MASK -#undef HEIGHT_SHIFT -#undef HEIGHT_INDEX - -#define LINE_HEIGHT_INDEX 11 -#define LINE_HEIGHT_SHIFT 2 -#define LINE_HEIGHT_MASK 0xfc -static inline css_error set_line_height( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[LINE_HEIGHT_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~LINE_HEIGHT_MASK) | - (((type & 0x3) | (unit << 2)) << LINE_HEIGHT_SHIFT); - - style->i.line_height = length; - - return CSS_OK; -} -#undef LINE_HEIGHT_MASK -#undef LINE_HEIGHT_SHIFT -#undef LINE_HEIGHT_INDEX - -#define BACKGROUND_COLOR_INDEX 10 -#define BACKGROUND_COLOR_SHIFT 0 -#define BACKGROUND_COLOR_MASK 0x3 -static inline css_error set_background_color( - css_computed_style *style, uint8_t type, - css_color color) -{ - uint8_t *bits = &style->i.bits[BACKGROUND_COLOR_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~BACKGROUND_COLOR_MASK) | - ((type & 0x3) << BACKGROUND_COLOR_SHIFT); - - style->i.background_color = color; - - return CSS_OK; -} -#undef BACKGROUND_COLOR_MASK -#undef BACKGROUND_COLOR_SHIFT -#undef BACKGROUND_COLOR_INDEX - -#define Z_INDEX_INDEX 11 -#define Z_INDEX_SHIFT 0 -#define Z_INDEX_MASK 0x3 -static inline css_error set_z_index( - css_computed_style *style, uint8_t type, - int32_t z_index) -{ - uint8_t *bits = &style->i.bits[Z_INDEX_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~Z_INDEX_MASK) | - ((type & 0x3) << Z_INDEX_SHIFT); - - style->i.z_index = z_index; - - return CSS_OK; -} -#undef Z_INDEX_MASK -#undef Z_INDEX_SHIFT -#undef Z_INDEX_INDEX - -#define MARGIN_TOP_INDEX 12 -#define MARGIN_TOP_SHIFT 2 -#define MARGIN_TOP_MASK 0xfc -static inline css_error set_margin_top( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[MARGIN_TOP_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~MARGIN_TOP_MASK) | - (((type & 0x3) | (unit << 2)) << MARGIN_TOP_SHIFT); - - style->i.margin[0] = length; - - return CSS_OK; -} -#undef MARGIN_TOP_MASK -#undef MARGIN_TOP_SHIFT -#undef MARGIN_TOP_INDEX - -#define MARGIN_RIGHT_INDEX 13 -#define MARGIN_RIGHT_SHIFT 2 -#define MARGIN_RIGHT_MASK 0xfc -static inline css_error set_margin_right( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[MARGIN_RIGHT_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~MARGIN_RIGHT_MASK) | - (((type & 0x3) | (unit << 2)) << MARGIN_RIGHT_SHIFT); - - style->i.margin[1] = length; - - return CSS_OK; -} -#undef MARGIN_RIGHT_MASK -#undef MARGIN_RIGHT_SHIFT -#undef MARGIN_RIGHT_INDEX - -#define MARGIN_BOTTOM_INDEX 14 -#define MARGIN_BOTTOM_SHIFT 2 -#define MARGIN_BOTTOM_MASK 0xfc -static inline css_error set_margin_bottom( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[MARGIN_BOTTOM_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~MARGIN_BOTTOM_MASK) | - (((type & 0x3) | (unit << 2)) << MARGIN_BOTTOM_SHIFT); - - style->i.margin[2] = length; - - return CSS_OK; -} -#undef MARGIN_BOTTOM_MASK -#undef MARGIN_BOTTOM_SHIFT -#undef MARGIN_BOTTOM_INDEX - -#define MARGIN_LEFT_INDEX 15 -#define MARGIN_LEFT_SHIFT 2 -#define MARGIN_LEFT_MASK 0xfc -static inline css_error set_margin_left( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[MARGIN_LEFT_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~MARGIN_LEFT_MASK) | - (((type & 0x3) | (unit << 2)) << MARGIN_LEFT_SHIFT); - - style->i.margin[3] = length; - - return CSS_OK; -} -#undef MARGIN_LEFT_MASK -#undef MARGIN_LEFT_SHIFT -#undef MARGIN_LEFT_INDEX - -#define BACKGROUND_ATTACHMENT_INDEX 12 -#define BACKGROUND_ATTACHMENT_SHIFT 0 -#define BACKGROUND_ATTACHMENT_MASK 0x3 -static inline css_error set_background_attachment( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[BACKGROUND_ATTACHMENT_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~BACKGROUND_ATTACHMENT_MASK) | - ((type & 0x3) << BACKGROUND_ATTACHMENT_SHIFT); - - return CSS_OK; -} -#undef BACKGROUND_ATTACHMENT_MASK -#undef BACKGROUND_ATTACHMENT_SHIFT -#undef BACKGROUND_ATTACHMENT_INDEX - -#define BOX_SIZING_INDEX 23 -#define BOX_SIZING_SHIFT 0 -#define BOX_SIZING_MASK 0x3 -static inline css_error set_box_sizing( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[BOX_SIZING_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~BOX_SIZING_MASK) | - ((type & 0x3) << BOX_SIZING_SHIFT); - - return CSS_OK; -} -#undef BOX_SIZING_MASK -#undef BOX_SIZING_SHIFT -#undef BOX_SIZING_INDEX - -#define BORDER_COLLAPSE_INDEX 13 -#define BORDER_COLLAPSE_SHIFT 0 -#define BORDER_COLLAPSE_MASK 0x3 -static inline css_error set_border_collapse( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[BORDER_COLLAPSE_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~BORDER_COLLAPSE_MASK) | - ((type & 0x3) << BORDER_COLLAPSE_SHIFT); - - return CSS_OK; -} -#undef BORDER_COLLAPSE_MASK -#undef BORDER_COLLAPSE_SHIFT -#undef BORDER_COLLAPSE_INDEX - -#define CAPTION_SIDE_INDEX 14 -#define CAPTION_SIDE_SHIFT 0 -#define CAPTION_SIDE_MASK 0x3 -static inline css_error set_caption_side( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[CAPTION_SIDE_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~CAPTION_SIDE_MASK) | - ((type & 0x3) << CAPTION_SIDE_SHIFT); - - return CSS_OK; -} -#undef CAPTION_SIDE_MASK -#undef CAPTION_SIDE_SHIFT -#undef CAPTION_SIDE_INDEX - -#define DIRECTION_INDEX 15 -#define DIRECTION_SHIFT 0 -#define DIRECTION_MASK 0x3 -static inline css_error set_direction( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[DIRECTION_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~DIRECTION_MASK) | - ((type & 0x3) << DIRECTION_SHIFT); - - return CSS_OK; -} -#undef DIRECTION_MASK -#undef DIRECTION_SHIFT -#undef DIRECTION_INDEX - -#define MAX_HEIGHT_INDEX 16 -#define MAX_HEIGHT_SHIFT 2 -#define MAX_HEIGHT_MASK 0xfc -static inline css_error set_max_height( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[MAX_HEIGHT_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~MAX_HEIGHT_MASK) | - (((type & 0x3) | (unit << 2)) << MAX_HEIGHT_SHIFT); - - style->i.max_height = length; - - return CSS_OK; -} -#undef MAX_HEIGHT_MASK -#undef MAX_HEIGHT_SHIFT -#undef MAX_HEIGHT_INDEX - -#define MAX_WIDTH_INDEX 17 -#define MAX_WIDTH_SHIFT 2 -#define MAX_WIDTH_MASK 0xfc -static inline css_error set_max_width( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[MAX_WIDTH_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~MAX_WIDTH_MASK) | - (((type & 0x3) | (unit << 2)) << MAX_WIDTH_SHIFT); - - style->i.max_width = length; - - return CSS_OK; -} -#undef MAX_WIDTH_MASK -#undef MAX_WIDTH_SHIFT -#undef MAX_WIDTH_INDEX - -#define WIDTH_INDEX 18 -#define WIDTH_SHIFT 2 -#define WIDTH_MASK 0xfc -static inline css_error set_width( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[WIDTH_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~WIDTH_MASK) | - (((type & 0x3) | (unit << 2)) << WIDTH_SHIFT); - - style->i.width = length; - - return CSS_OK; -} -#undef WIDTH_MASK -#undef WIDTH_SHIFT -#undef WIDTH_INDEX - -#define EMPTY_CELLS_INDEX 16 -#define EMPTY_CELLS_SHIFT 0 -#define EMPTY_CELLS_MASK 0x3 -static inline css_error set_empty_cells( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[EMPTY_CELLS_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~EMPTY_CELLS_MASK) | - ((type & 0x3) << EMPTY_CELLS_SHIFT); - - return CSS_OK; -} -#undef EMPTY_CELLS_MASK -#undef EMPTY_CELLS_SHIFT -#undef EMPTY_CELLS_INDEX - -#define FLOAT_INDEX 17 -#define FLOAT_SHIFT 0 -#define FLOAT_MASK 0x3 -static inline css_error set_float( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[FLOAT_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~FLOAT_MASK) | - ((type & 0x3) << FLOAT_SHIFT); - - return CSS_OK; -} -#undef FLOAT_MASK -#undef FLOAT_SHIFT -#undef FLOAT_INDEX - -#define FONT_STYLE_INDEX 18 -#define FONT_STYLE_SHIFT 0 -#define FONT_STYLE_MASK 0x3 -static inline css_error set_font_style( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[FONT_STYLE_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~FONT_STYLE_MASK) | - ((type & 0x3) << FONT_STYLE_SHIFT); - - return CSS_OK; -} -#undef FONT_STYLE_MASK -#undef FONT_STYLE_SHIFT -#undef FONT_STYLE_INDEX - -#define MIN_HEIGHT_INDEX 19 -#define MIN_HEIGHT_SHIFT 2 -#define MIN_HEIGHT_MASK 0xfc -static inline css_error set_min_height( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[MIN_HEIGHT_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~MIN_HEIGHT_MASK) | - (((type & 0x3) | (unit << 2)) << MIN_HEIGHT_SHIFT); - - style->i.min_height = length; - - return CSS_OK; -} -#undef MIN_HEIGHT_MASK -#undef MIN_HEIGHT_SHIFT -#undef MIN_HEIGHT_INDEX - -#define MIN_WIDTH_INDEX 20 -#define MIN_WIDTH_SHIFT 2 -#define MIN_WIDTH_MASK 0xfc -static inline css_error set_min_width( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[MIN_WIDTH_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~MIN_WIDTH_MASK) | - (((type & 0x3) | (unit << 2)) << MIN_WIDTH_SHIFT); - - style->i.min_width = length; - - return CSS_OK; -} -#undef MIN_WIDTH_MASK -#undef MIN_WIDTH_SHIFT -#undef MIN_WIDTH_INDEX - -#define BACKGROUND_REPEAT_INDEX 34 -#define BACKGROUND_REPEAT_SHIFT 2 -#define BACKGROUND_REPEAT_MASK 0x1c -static inline css_error set_background_repeat( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[BACKGROUND_REPEAT_INDEX]; - - /* 3bits: type */ - *bits = (*bits & ~BACKGROUND_REPEAT_MASK) | - ((type & 0x7) << BACKGROUND_REPEAT_SHIFT); - - return CSS_OK; -} -#undef BACKGROUND_REPEAT_MASK -#undef BACKGROUND_REPEAT_SHIFT -#undef BACKGROUND_REPEAT_INDEX - -#define CLEAR_INDEX 36 -#define CLEAR_SHIFT 2 -#define CLEAR_MASK 0x1c -static inline css_error set_clear( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[CLEAR_INDEX]; - - /* 3bits: type */ - *bits = (*bits & ~CLEAR_MASK) | - ((type & 0x7) << CLEAR_SHIFT); - - return CSS_OK; -} -#undef CLEAR_MASK -#undef CLEAR_SHIFT -#undef CLEAR_INDEX - -#define PADDING_TOP_INDEX 21 -#define PADDING_TOP_SHIFT 3 -#define PADDING_TOP_MASK 0xf8 -static inline css_error set_padding_top( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[PADDING_TOP_INDEX]; - - /* 5bits: uuuut : units | type */ - *bits = (*bits & ~PADDING_TOP_MASK) | - (((type & 0x1) | (unit << 1)) << PADDING_TOP_SHIFT); - - style->i.padding[0] = length; - - return CSS_OK; -} -#undef PADDING_TOP_MASK -#undef PADDING_TOP_SHIFT -#undef PADDING_TOP_INDEX - -#define PADDING_RIGHT_INDEX 22 -#define PADDING_RIGHT_SHIFT 3 -#define PADDING_RIGHT_MASK 0xf8 -static inline css_error set_padding_right( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[PADDING_RIGHT_INDEX]; - - /* 5bits: uuuut : units | type */ - *bits = (*bits & ~PADDING_RIGHT_MASK) | - (((type & 0x1) | (unit << 1)) << PADDING_RIGHT_SHIFT); - - style->i.padding[1] = length; - - return CSS_OK; -} -#undef PADDING_RIGHT_MASK -#undef PADDING_RIGHT_SHIFT -#undef PADDING_RIGHT_INDEX - -#define PADDING_BOTTOM_INDEX 23 -#define PADDING_BOTTOM_SHIFT 3 -#define PADDING_BOTTOM_MASK 0xf8 -static inline css_error set_padding_bottom( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[PADDING_BOTTOM_INDEX]; - - /* 5bits: uuuut : units | type */ - *bits = (*bits & ~PADDING_BOTTOM_MASK) | - (((type & 0x1) | (unit << 1)) << PADDING_BOTTOM_SHIFT); - - style->i.padding[2] = length; - - return CSS_OK; -} -#undef PADDING_BOTTOM_MASK -#undef PADDING_BOTTOM_SHIFT -#undef PADDING_BOTTOM_INDEX - -#define PADDING_LEFT_INDEX 24 -#define PADDING_LEFT_SHIFT 3 -#define PADDING_LEFT_MASK 0xf8 -static inline css_error set_padding_left( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[PADDING_LEFT_INDEX]; - - /* 5bits: uuuut : units | type */ - *bits = (*bits & ~PADDING_LEFT_MASK) | - (((type & 0x1) | (unit << 1)) << PADDING_LEFT_SHIFT); - - style->i.padding[3] = length; - - return CSS_OK; -} -#undef PADDING_LEFT_MASK -#undef PADDING_LEFT_SHIFT -#undef PADDING_LEFT_INDEX - -#define OVERFLOW_X_INDEX 21 -#define OVERFLOW_X_SHIFT 0 -#define OVERFLOW_X_MASK 0x7 -static inline css_error set_overflow_x( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[OVERFLOW_X_INDEX]; - - /* 3bits: type */ - *bits = (*bits & ~OVERFLOW_X_MASK) | - ((type & 0x7) << OVERFLOW_X_SHIFT); - - return CSS_OK; -} -#undef OVERFLOW_X_MASK -#undef OVERFLOW_X_SHIFT -#undef OVERFLOW_X_INDEX - -#define OVERFLOW_Y_INDEX 34 -#define OVERFLOW_Y_SHIFT 5 -#define OVERFLOW_Y_MASK 0xe0 -static inline css_error set_overflow_y( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[OVERFLOW_Y_INDEX]; - - /* 3bits: type */ - *bits = (*bits & ~OVERFLOW_Y_MASK) | - ((type & 0x7) << OVERFLOW_Y_SHIFT); - - return CSS_OK; -} -#undef OVERFLOW_Y_MASK -#undef OVERFLOW_Y_SHIFT -#undef OVERFLOW_Y_INDEX - -#define POSITION_INDEX 22 -#define POSITION_SHIFT 0 -#define POSITION_MASK 0x7 -static inline css_error set_position( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[POSITION_INDEX]; - - /* 3bits: type */ - *bits = (*bits & ~POSITION_MASK) | - ((type & 0x7) << POSITION_SHIFT); - - return CSS_OK; -} -#undef POSITION_MASK -#undef POSITION_SHIFT -#undef POSITION_INDEX - -#define OPACITY_INDEX 23 -#define OPACITY_SHIFT 2 -#define OPACITY_MASK 0x04 -static inline css_error set_opacity( - css_computed_style *style, - uint8_t type, css_fixed opacity) -{ - uint8_t *bits = &style->i.bits[OPACITY_INDEX]; - - /* 1bit: t : type */ - *bits = (*bits & ~OPACITY_MASK) | - ((type & 0x1) << OPACITY_SHIFT); - - style->i.opacity = opacity; - - return CSS_OK; -} -#undef OPACITY_MASK -#undef OPACITY_SHIFT -#undef OPACITY_INDEX - -#define TEXT_TRANSFORM_INDEX 24 -#define TEXT_TRANSFORM_SHIFT 0 -#define TEXT_TRANSFORM_MASK 0x7 -static inline css_error set_text_transform( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[TEXT_TRANSFORM_INDEX]; - - /* 3bits: type */ - *bits = (*bits & ~TEXT_TRANSFORM_MASK) | - ((type & 0x7) << TEXT_TRANSFORM_SHIFT); - - return CSS_OK; -} -#undef TEXT_TRANSFORM_MASK -#undef TEXT_TRANSFORM_SHIFT -#undef TEXT_TRANSFORM_INDEX - -#define TEXT_INDENT_INDEX 25 -#define TEXT_INDENT_SHIFT 3 -#define TEXT_INDENT_MASK 0xf8 -static inline css_error set_text_indent( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[TEXT_INDENT_INDEX]; - - /* 5bits: uuuut : units | type */ - *bits = (*bits & ~TEXT_INDENT_MASK) | - (((type & 0x1) | (unit << 1)) << TEXT_INDENT_SHIFT); - - style->i.text_indent = length; - - return CSS_OK; -} -#undef TEXT_INDENT_MASK -#undef TEXT_INDENT_SHIFT -#undef TEXT_INDENT_INDEX - -#define WHITE_SPACE_INDEX 25 -#define WHITE_SPACE_SHIFT 0 -#define WHITE_SPACE_MASK 0x7 -static inline css_error set_white_space( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[WHITE_SPACE_INDEX]; - - /* 3bits: type */ - *bits = (*bits & ~WHITE_SPACE_MASK) | - ((type & 0x7) << WHITE_SPACE_SHIFT); - - return CSS_OK; -} -#undef WHITE_SPACE_MASK -#undef WHITE_SPACE_SHIFT -#undef WHITE_SPACE_INDEX - -#define BACKGROUND_POSITION_INDEX 27 -#define BACKGROUND_POSITION_SHIFT 7 -#define BACKGROUND_POSITION_MASK 0x80 -#define BACKGROUND_POSITION_INDEX1 26 -#define BACKGROUND_POSITION_SHIFT1 0 -static inline css_error set_background_position( - css_computed_style *style, uint8_t type, - css_fixed hlength, css_unit hunit, - css_fixed vlength, css_unit vunit) -{ - uint8_t *bits; - - bits = &style->i.bits[BACKGROUND_POSITION_INDEX]; - - /* 1 bit: type */ - *bits = (*bits & ~BACKGROUND_POSITION_MASK) | - ((type & 0x1) << BACKGROUND_POSITION_SHIFT); - - bits = &style->i.bits[BACKGROUND_POSITION_INDEX1]; - - /* 8bits: hhhhvvvv : hunit | vunit */ - *bits = (((hunit << 4) | vunit) << BACKGROUND_POSITION_SHIFT1); - - style->i.background_position[0] = hlength; - style->i.background_position[1] = vlength; - - return CSS_OK; -} -#undef BACKGROUND_POSITION_SHIFT1 -#undef BACKGROUND_POSITION_INDEX1 -#undef BACKGROUND_POSITION_MASK -#undef BACKGROUND_POSITION_SHIFT -#undef BACKGROUND_POSITION_INDEX - -#define DISPLAY_INDEX 27 -#define DISPLAY_SHIFT 2 -#define DISPLAY_MASK 0x7c -static inline css_error set_display( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[DISPLAY_INDEX]; - - /* 5bits: type */ - *bits = (*bits & ~DISPLAY_MASK) | - ((type & 0x1f) << DISPLAY_SHIFT); - - return CSS_OK; -} -#undef DISPLAY_MASK -#undef DISPLAY_SHIFT -#undef DISPLAY_INDEX - -#define FONT_VARIANT_INDEX 27 -#define FONT_VARIANT_SHIFT 0 -#define FONT_VARIANT_MASK 0x3 -static inline css_error set_font_variant( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[FONT_VARIANT_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~FONT_VARIANT_MASK) | - ((type & 0x3) << FONT_VARIANT_SHIFT); - - return CSS_OK; -} -#undef FONT_VARIANT_MASK -#undef FONT_VARIANT_SHIFT -#undef FONT_VARIANT_INDEX - -#define TEXT_DECORATION_INDEX 28 -#define TEXT_DECORATION_SHIFT 3 -#define TEXT_DECORATION_MASK 0xf8 -static inline css_error set_text_decoration( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[TEXT_DECORATION_INDEX]; - - /* 5bits: type */ - *bits = (*bits & ~TEXT_DECORATION_MASK) | - ((type & 0x1f) << TEXT_DECORATION_SHIFT); - - return CSS_OK; -} -#undef TEXT_DECORATION_MASK -#undef TEXT_DECORATION_SHIFT -#undef TEXT_DECORATION_INDEX - -#define FONT_FAMILY_INDEX 28 -#define FONT_FAMILY_SHIFT 0 -#define FONT_FAMILY_MASK 0x7 -static inline css_error set_font_family( - css_computed_style *style, uint8_t type, - lwc_string **names) -{ - uint8_t *bits = &style->i.bits[FONT_FAMILY_INDEX]; - lwc_string **oldnames = style->font_family; - lwc_string **s; - - /* 3bits: type */ - *bits = (*bits & ~FONT_FAMILY_MASK) | - ((type & 0x7) << FONT_FAMILY_SHIFT); - - for (s = names; s != NULL && *s != NULL; s++) - *s = lwc_string_ref(*s); - - style->font_family = names; - - /* Free existing families */ - if (oldnames != NULL) { - for (s = oldnames; *s != NULL; s++) - lwc_string_unref(*s); - - if (oldnames != names) - free(oldnames); - } - - return CSS_OK; -} -#undef FONT_FAMILY_MASK -#undef FONT_FAMILY_SHIFT -#undef FONT_FAMILY_INDEX - -#define BORDER_TOP_STYLE_INDEX 29 -#define BORDER_TOP_STYLE_SHIFT 4 -#define BORDER_TOP_STYLE_MASK 0xf0 -static inline css_error set_border_top_style( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[BORDER_TOP_STYLE_INDEX]; - - /* 4bits: type */ - *bits = (*bits & ~BORDER_TOP_STYLE_MASK) | - ((type & 0xf) << BORDER_TOP_STYLE_SHIFT); - - return CSS_OK; -} -#undef BORDER_TOP_STYLE_MASK -#undef BORDER_TOP_STYLE_SHIFT -#undef BORDER_TOP_STYLE_INDEX - -#define BORDER_RIGHT_STYLE_INDEX 29 -#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) -{ - uint8_t *bits = &style->i.bits[BORDER_RIGHT_STYLE_INDEX]; - - /* 4bits: type */ - *bits = (*bits & ~BORDER_RIGHT_STYLE_MASK) | - ((type & 0xf) << BORDER_RIGHT_STYLE_SHIFT); - - return CSS_OK; -} -#undef BORDER_RIGHT_STYLE_MASK -#undef BORDER_RIGHT_STYLE_SHIFT -#undef BORDER_RIGHT_STYLE_INDEX - -#define BORDER_BOTTOM_STYLE_INDEX 30 -#define BORDER_BOTTOM_STYLE_SHIFT 4 -#define BORDER_BOTTOM_STYLE_MASK 0xf0 -static inline css_error set_border_bottom_style( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[BORDER_BOTTOM_STYLE_INDEX]; - - /* 4bits: type */ - *bits = (*bits & ~BORDER_BOTTOM_STYLE_MASK) | - ((type & 0xf) << BORDER_BOTTOM_STYLE_SHIFT); - - return CSS_OK; -} -#undef BORDER_BOTTOM_STYLE_MASK -#undef BORDER_BOTTOM_STYLE_SHIFT -#undef BORDER_BOTTOM_STYLE_INDEX - -#define BORDER_LEFT_STYLE_INDEX 30 -#define BORDER_LEFT_STYLE_SHIFT 0 -#define BORDER_LEFT_STYLE_MASK 0xf -static inline css_error set_border_left_style( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[BORDER_LEFT_STYLE_INDEX]; - - /* 4bits: type */ - *bits = (*bits & ~BORDER_LEFT_STYLE_MASK) | - ((type & 0xf) << BORDER_LEFT_STYLE_SHIFT); - - return CSS_OK; -} -#undef BORDER_LEFT_STYLE_MASK -#undef BORDER_LEFT_STYLE_SHIFT -#undef BORDER_LEFT_STYLE_INDEX - -#define FONT_WEIGHT_INDEX 31 -#define FONT_WEIGHT_SHIFT 4 -#define FONT_WEIGHT_MASK 0xf0 -static inline css_error set_font_weight( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[FONT_WEIGHT_INDEX]; - - /* 4bits: type */ - *bits = (*bits & ~FONT_WEIGHT_MASK) | - ((type & 0xf) << FONT_WEIGHT_SHIFT); - - return CSS_OK; -} -#undef FONT_WEIGHT_MASK -#undef FONT_WEIGHT_SHIFT -#undef FONT_WEIGHT_INDEX - -#define LIST_STYLE_TYPE_INDEX 31 -#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) -{ - uint8_t *bits = &style->i.bits[LIST_STYLE_TYPE_INDEX]; - - /* 4bits: type */ - *bits = (*bits & ~LIST_STYLE_TYPE_MASK) | - ((type & 0xf) << LIST_STYLE_TYPE_SHIFT); - - return CSS_OK; -} -#undef LIST_STYLE_TYPE_MASK -#undef LIST_STYLE_TYPE_SHIFT -#undef LIST_STYLE_TYPE_INDEX - -#define OUTLINE_STYLE_INDEX 32 -#define OUTLINE_STYLE_SHIFT 4 -#define OUTLINE_STYLE_MASK 0xf0 -static inline css_error set_outline_style( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[OUTLINE_STYLE_INDEX]; - - /* 4bits: type */ - *bits = (*bits & ~OUTLINE_STYLE_MASK) | - ((type & 0xf) << OUTLINE_STYLE_SHIFT); - - return CSS_OK; -} -#undef OUTLINE_STYLE_MASK -#undef OUTLINE_STYLE_SHIFT -#undef OUTLINE_STYLE_INDEX - -#define TABLE_LAYOUT_INDEX 32 -#define TABLE_LAYOUT_SHIFT 2 -#define TABLE_LAYOUT_MASK 0xc -static inline css_error set_table_layout( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[TABLE_LAYOUT_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~TABLE_LAYOUT_MASK) | - ((type & 0x3) << TABLE_LAYOUT_SHIFT); - - return CSS_OK; -} -#undef TABLE_LAYOUT_MASK -#undef TABLE_LAYOUT_SHIFT -#undef TABLE_LAYOUT_INDEX - -#define UNICODE_BIDI_INDEX 32 -#define UNICODE_BIDI_SHIFT 0 -#define UNICODE_BIDI_MASK 0x3 -static inline css_error set_unicode_bidi( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[UNICODE_BIDI_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~UNICODE_BIDI_MASK) | - ((type & 0x3) << UNICODE_BIDI_SHIFT); - - return CSS_OK; -} -#undef UNICODE_BIDI_MASK -#undef UNICODE_BIDI_SHIFT -#undef UNICODE_BIDI_INDEX - -#define VISIBILITY_INDEX 33 -#define VISIBILITY_SHIFT 6 -#define VISIBILITY_MASK 0xc0 -static inline css_error set_visibility( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[VISIBILITY_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~VISIBILITY_MASK) | - ((type & 0x3) << VISIBILITY_SHIFT); - - return CSS_OK; -} -#undef VISIBILITY_MASK -#undef VISIBILITY_SHIFT -#undef VISIBILITY_INDEX - -#define LIST_STYLE_POSITION_INDEX 33 -#define LIST_STYLE_POSITION_SHIFT 4 -#define LIST_STYLE_POSITION_MASK 0x30 -static inline css_error set_list_style_position( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[LIST_STYLE_POSITION_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~LIST_STYLE_POSITION_MASK) | - ((type & 0x3) << LIST_STYLE_POSITION_SHIFT); - - return CSS_OK; -} -#undef LIST_STYLE_POSITION_MASK -#undef LIST_STYLE_POSITION_SHIFT -#undef LIST_STYLE_POSITION_INDEX - -#define TEXT_ALIGN_INDEX 33 -#define TEXT_ALIGN_SHIFT 0 -#define TEXT_ALIGN_MASK 0xf -static inline uint8_t set_text_align( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[TEXT_ALIGN_INDEX]; - - /* 4bits: type */ - *bits = (*bits & ~TEXT_ALIGN_MASK) | - ((type & 0xf) << TEXT_ALIGN_SHIFT); - - return CSS_OK; -} -#undef TEXT_ALIGN_MASK -#undef TEXT_ALIGN_SHIFT -#undef TEXT_ALIGN_INDEX - -#define PAGE_BREAK_AFTER_INDEX 0 -#define PAGE_BREAK_AFTER_SHIFT 0 -#define PAGE_BREAK_AFTER_MASK 0x7 -static inline css_error set_page_break_after( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits; - - if (style->page == NULL) { - if (type == CSS_PAGE_BREAK_AFTER_AUTO) { - return CSS_OK; - } - } - - ENSURE_PAGE; - - bits = &style->page->bits[PAGE_BREAK_AFTER_INDEX]; - - /* 3bits: type */ - *bits = (*bits & ~PAGE_BREAK_AFTER_MASK) | - ((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 3 -#define PAGE_BREAK_BEFORE_MASK 0x38 -static inline css_error set_page_break_before( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits; - - if (style->page == NULL) { - if (type == CSS_PAGE_BREAK_BEFORE_AUTO) { - return CSS_OK; - } - } - - ENSURE_PAGE; - - bits = &style->page->bits[PAGE_BREAK_BEFORE_INDEX]; - - /* 3bits: type */ - *bits = (*bits & ~PAGE_BREAK_BEFORE_MASK) | - ((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 6 -#define PAGE_BREAK_INSIDE_MASK 0xc0 -static inline css_error set_page_break_inside( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits; - - if (style->page == NULL) { - if (type == CSS_PAGE_BREAK_INSIDE_AUTO) { - return CSS_OK; - } - } - - ENSURE_PAGE; - - bits = &style->page->bits[PAGE_BREAK_INSIDE_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~PAGE_BREAK_INSIDE_MASK) | - ((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 ORPHANS_INDEX 1 -#define ORPHANS_SHIFT 0 -#define ORPHANS_MASK 0x1 -static inline css_error set_orphans( - css_computed_style *style, uint8_t type, int32_t count) -{ - uint8_t *bits; - - if (style->page == NULL) { - if (type == CSS_ORPHANS_SET && count == 2) { - return CSS_OK; - } - } - - ENSURE_PAGE; - - bits = &style->page->bits[ORPHANS_INDEX]; - - /* 1bit: type */ - *bits = (*bits & ~ORPHANS_MASK) | ((type & 0x1) << ORPHANS_SHIFT); - - style->page->orphans = count; - - return CSS_OK; -} -#undef ORPHANS_INDEX -#undef ORPHANS_SHIFT -#undef ORPHANS_MASK - -#define WIDOWS_INDEX 1 -#define WIDOWS_SHIFT 1 -#define WIDOWS_MASK 0x2 -static inline css_error set_widows( - css_computed_style *style, uint8_t type, int32_t count) -{ - uint8_t *bits; - - if (style->page == NULL) { - if (type == CSS_WIDOWS_SET && count == 2) { - return CSS_OK; - } - } - - ENSURE_PAGE; - - bits = &style->page->bits[WIDOWS_INDEX]; - - /* 1bit: type */ - *bits = (*bits & ~WIDOWS_MASK) | ((type & 0x1) << WIDOWS_SHIFT); - - style->page->widows = count; - - return CSS_OK; -} -#undef WIDOWS_INDEX -#undef WIDOWS_SHIFT -#undef WIDOWS_MASK - -#define ALIGN_CONTENT_INDEX_A 34 -#define ALIGN_CONTENT_SHIFT_A 0 -#define ALIGN_CONTENT_MASK_A 0x3 -#define ALIGN_CONTENT_INDEX_B 35 -#define ALIGN_CONTENT_SHIFT_B 1 -#define ALIGN_CONTENT_MASK_B 0x2 -static inline css_error set_align_content( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits_a = &style->i.bits[ALIGN_CONTENT_INDEX_A]; - uint8_t *bits_b = &style->i.bits[ALIGN_CONTENT_INDEX_B]; - - /* type is 3bits: assigning the least significant two */ - *bits_a = (*bits_a & ~ALIGN_CONTENT_MASK_A) | - ((type & 0x3) << ALIGN_CONTENT_SHIFT_A); - - /* type is 3bits: assigning the most significant one */ - *bits_b = (*bits_b & ~ALIGN_CONTENT_MASK_B) | - (((type & 0x4) >> 2) << ALIGN_CONTENT_SHIFT_B); - - return CSS_OK; -} -#undef ALIGN_CONTENT_MASK_A -#undef ALIGN_CONTENT_SHIFT_A -#undef ALIGN_CONTENT_INDEX_A -#undef ALIGN_CONTENT_MASK_B -#undef ALIGN_CONTENT_SHIFT_B -#undef ALIGN_CONTENT_INDEX_B - -#define FLEX_WRAP_INDEX 19 -#define FLEX_WRAP_SHIFT 0 -#define FLEX_WRAP_MASK 0x3 -static inline css_error set_flex_wrap( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[FLEX_WRAP_INDEX]; - - /* 2bits: type */ - *bits = (*bits & ~FLEX_WRAP_MASK) | - ((type & 0x3) << FLEX_WRAP_SHIFT); - - return CSS_OK; -} -#undef FLEX_WRAP_MASK -#undef FLEX_WRAP_SHIFT -#undef FLEX_WRAP_INDEX - -#define FLEX_BASIS_INDEX 35 -#define FLEX_BASIS_SHIFT 2 -#define FLEX_BASIS_MASK 0xfc -static inline css_error set_flex_basis( - css_computed_style *style, uint8_t type, - css_fixed length, css_unit unit) -{ - uint8_t *bits = &style->i.bits[FLEX_BASIS_INDEX]; - - /* 6bits: uuuutt : units | type */ - *bits = (*bits & ~FLEX_BASIS_MASK) | - (((type & 0x3) | (unit << 2)) << FLEX_BASIS_SHIFT); - - style->i.flex_basis = length; - - return CSS_OK; -} - -#undef FLEX_BASIS_MASK -#undef FLEX_BASIS_SHIFT -#undef FLEX_BASIS_INDEX - -#define FLEX_SHRINK_INDEX 20 -#define FLEX_SHRINK_SHIFT 1 -#define FLEX_SHRINK_MASK 0x2 -static inline css_error set_flex_shrink( - css_computed_style *style, uint8_t type, - css_fixed number) -{ - uint8_t *bits = &style->i.bits[FLEX_SHRINK_INDEX]; - - /* 1bit: type */ - *bits = (*bits & ~FLEX_SHRINK_MASK) | - ((type & 0x1) << FLEX_SHRINK_SHIFT); - - style->i.flex_shrink = number; - - return CSS_OK; -} - -#undef FLEX_SHRINK_MASK -#undef FLEX_SHRINK_SHIFT -#undef FLEX_SHRINK_INDEX - -#define FLEX_GROW_INDEX 20 -#define FLEX_GROW_SHIFT 0 -#define FLEX_GROW_MASK 0x1 -static inline css_error set_flex_grow( - css_computed_style *style, uint8_t type, - css_fixed number) -{ - uint8_t *bits = &style->i.bits[FLEX_GROW_INDEX]; - - /* 1bit: type */ - *bits = (*bits & ~FLEX_GROW_MASK) | - ((type & 0x1) << FLEX_GROW_SHIFT); - - style->i.flex_grow = number; - - return CSS_OK; -} - -#undef FLEX_GROW_MASK -#undef FLEX_GROW_SHIFT -#undef FLEX_GROW_INDEX - -#define FLEX_DIRECTION_INDEX 36 -#define FLEX_DIRECTION_SHIFT 5 -#define FLEX_DIRECTION_MASK 0xe0 -static inline css_error set_flex_direction( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[FLEX_DIRECTION_INDEX]; - - /* 3bits: type */ - *bits = (*bits & ~FLEX_DIRECTION_MASK) | - ((type & 0x7) << FLEX_DIRECTION_SHIFT); - - return CSS_OK; -} -#undef FLEX_DIRECTION_MASK -#undef FLEX_DIRECTION_SHIFT -#undef FLEX_DIRECTION_INDEX - -#define JUSTIFY_CONTENT_INDEX_A 35 -#define JUSTIFY_CONTENT_SHIFT_A 0 -#define JUSTIFY_CONTENT_MASK_A 0x1 -#define JUSTIFY_CONTENT_INDEX_B 36 -#define JUSTIFY_CONTENT_SHIFT_B 0 -#define JUSTIFY_CONTENT_MASK_B 0x3 -static inline css_error set_justify_content( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits_a = &style->i.bits[JUSTIFY_CONTENT_INDEX_A]; - uint8_t *bits_b = &style->i.bits[JUSTIFY_CONTENT_INDEX_B]; - - /* type is 3bits: assigning the least significant one */ - *bits_a = (*bits_a & ~JUSTIFY_CONTENT_MASK_A) | - ((type & 0x1) << JUSTIFY_CONTENT_SHIFT_A); - - /* type is 3bits: assigning the most significant two */ - *bits_b = (*bits_b & ~JUSTIFY_CONTENT_MASK_B) | - (((type & 0x6) >> 1) << JUSTIFY_CONTENT_SHIFT_B); - - return CSS_OK; -} -#undef JUSTIFY_CONTENT_MASK_A -#undef JUSTIFY_CONTENT_SHIFT_A -#undef JUSTIFY_CONTENT_INDEX_A -#undef JUSTIFY_CONTENT_MASK_B -#undef JUSTIFY_CONTENT_SHIFT_B -#undef JUSTIFY_CONTENT_INDEX_B - -#define ORDER_INDEX 37 -#define ORDER_SHIFT 1 -#define ORDER_MASK 0x2 -static inline css_error set_order( - css_computed_style *style, uint8_t type, - int32_t number) -{ - uint8_t *bits = &style->i.bits[ORDER_INDEX]; - - /* 1bit: type */ - *bits = (*bits & ~ORDER_MASK) | - ((type & 0x1) << ORDER_SHIFT); - - style->i.order = number; - - return CSS_OK; -} - -#undef ORDER_MASK -#undef ORDER_SHIFT -#undef ORDER_INDEX - -#define ALIGN_ITEMS_INDEX 37 -#define ALIGN_ITEMS_SHIFT 5 -#define ALIGN_ITEMS_MASK 0xe0 -static inline css_error set_align_items( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[ALIGN_ITEMS_INDEX]; - - /* 3bits: type */ - *bits = (*bits & ~ALIGN_ITEMS_MASK) | - ((type & 0x7) << ALIGN_ITEMS_SHIFT); - - return CSS_OK; -} -#undef ALIGN_ITEMS_MASK -#undef ALIGN_ITEMS_SHIFT -#undef ALIGN_ITEMS_INDEX - -#define ALIGN_SELF_INDEX 37 -#define ALIGN_SELF_SHIFT 2 -#define ALIGN_SELF_MASK 0x1c -static inline css_error set_align_self( - css_computed_style *style, uint8_t type) -{ - uint8_t *bits = &style->i.bits[ALIGN_SELF_INDEX]; - - /* 3bits: type */ - *bits = (*bits & ~ALIGN_SELF_MASK) | - ((type & 0x7) << ALIGN_SELF_SHIFT); - - return CSS_OK; -} -#undef ALIGN_SELF_MASK -#undef ALIGN_SELF_SHIFT -#undef ALIGN_SELF_INDEX +#include "autogenerated_propset.h" #endif |