summaryrefslogtreecommitdiff
path: root/src/select
diff options
context:
space:
mode:
Diffstat (limited to 'src/select')
-rw-r--r--src/select/computed.c45
-rw-r--r--src/select/computed.h38
-rw-r--r--src/select/dispatch.c16
-rw-r--r--src/select/properties/column_count.c31
-rw-r--r--src/select/properties/column_fill.c27
-rw-r--r--src/select/properties/column_gap.c52
-rw-r--r--src/select/properties/column_rule_color.c42
-rw-r--r--src/select/properties/column_rule_style.c47
-rw-r--r--src/select/properties/column_rule_width.c50
-rw-r--r--src/select/properties/column_span.c29
-rw-r--r--src/select/properties/column_width.c54
-rw-r--r--src/select/propget.h312
-rw-r--r--src/select/propset.h352
13 files changed, 745 insertions, 350 deletions
diff --git a/src/select/computed.c b/src/select/computed.c
index 9b59dc4..8054b02 100644
--- a/src/select/computed.c
+++ b/src/select/computed.c
@@ -787,6 +787,51 @@ uint8_t css_computed_background_position(const css_computed_style *style,
return get_background_position(style, hlength, hunit, vlength, vunit);
}
+uint8_t css_computed_column_count(const css_computed_style *style,
+ int32_t *column_count)
+{
+ return get_column_count(style, column_count);
+}
+
+uint8_t css_computed_column_fill(const css_computed_style *style)
+{
+ return get_column_fill(style);
+}
+
+uint8_t css_computed_column_gap(const css_computed_style *style,
+ css_fixed *length, css_unit *unit)
+{
+ return get_column_gap(style, length, unit);
+}
+
+uint8_t css_computed_column_rule_color(const css_computed_style *style,
+ css_color *color)
+{
+ return get_column_rule_color(style, color);
+}
+
+uint8_t css_computed_column_rule_style(const css_computed_style *style)
+{
+ return get_column_rule_style(style);
+}
+
+uint8_t css_computed_column_rule_width(const css_computed_style *style,
+ css_fixed *length, css_unit *unit)
+{
+ return get_column_rule_width(style, length, unit);
+}
+
+uint8_t css_computed_column_span(const css_computed_style *style)
+{
+ return get_column_span(style);
+}
+
+uint8_t css_computed_column_width(const css_computed_style *style,
+ css_fixed *length, css_unit *unit)
+{
+ return get_column_width(style, length, unit);
+}
+
uint8_t css_computed_display(const css_computed_style *style,
bool root)
{
diff --git a/src/select/computed.h b/src/select/computed.h
index e7f3742..574d36b 100644
--- a/src/select/computed.h
+++ b/src/select/computed.h
@@ -17,12 +17,20 @@ typedef struct css_computed_uncommon {
/*
* border_spacing 1 + 2(4) 2(4)
* clip 2 + 4(4) + 4 4(4)
+ * column_count 2 4
+ * column_fill 2 0
+ * column_gap 2 + 4 4
+ * column_rule_color 2 4
+ * column_rule_style 4 0
+ * column_rule_width 3 + 4 4
+ * column_span 2 0
+ * column_width 2 + 4 4
* letter_spacing 2 + 4 4
* outline_color 2 4
* outline_width 3 + 4 4
* word_spacing 2 + 4 4
* --- ---
- * 52 bits 40 bytes
+ * 83 bits 60 bytes
*
* Encode counter_increment and _reset as an array of name, value pairs,
* terminated with a blank entry.
@@ -46,25 +54,29 @@ typedef struct css_computed_uncommon {
* 2 bits sizeof(ptr)
*
* ___ ___
- * 61 bits 40 + 4sizeof(ptr) bytes
+ * 96 bits 62 + 4sizeof(ptr) bytes
*
- * 8 bytes 40 + 4sizeof(ptr) bytes
+ * 12 bytes 62 + 4sizeof(ptr) bytes
* ===================
- * 48 + 4sizeof(ptr) bytes
+ * 72 + 4sizeof(ptr) bytes
*
* Bit allocations:
*
* 76543210
- * 1 llllllcc letter-spacing | outline-color
- * 2 ooooooob outline-width | border-spacing
+ * 1 llllllcc letter-spacing | outline-color
+ * 2 ooooooob outline-width | border-spacing
* 3 bbbbbbbb border-spacing
- * 4 wwwwwwir word-spacing | counter-increment | counter-reset
- * 5 uuuuumm. cursor | writing-mode | <unused>
+ * 4 wwwwwwir word-spacing | counter-increment | counter-reset
+ * 5 uuuuumm. cursor | writing-mode | <unused>
* 6 cccccccc clip
* 7 cccccccc clip
- * 8 ccccccoo clip | content
+ * 8 ccccccoo clip | content
+ * 9 ccffssss column_count | column-fill | column-rule-style
+ * 10 ggggggcc column-gap | column-rule-color
+ * 11 wwwwwww. column-rule-width | <unused>
+ * 12 sswwwwww column-span | column_width
*/
- uint8_t bits[8];
+ uint8_t bits[12];
css_fixed border_spacing[2];
@@ -77,6 +89,12 @@ typedef struct css_computed_uncommon {
css_fixed word_spacing;
+ int32_t column_count;
+ css_fixed column_gap;
+ css_color column_rule_color;
+ css_fixed column_rule_width;
+ css_fixed column_width;
+
css_computed_counter *counter_increment;
css_computed_counter *counter_reset;
diff --git a/src/select/dispatch.c b/src/select/dispatch.c
index b03e468..2c72e86 100644
--- a/src/select/dispatch.c
+++ b/src/select/dispatch.c
@@ -536,42 +536,42 @@ struct prop_table prop_dispatch[CSS_N_PROPERTIES] = {
{
PROPERTY_FUNCS(column_count),
0,
- GROUP_NORMAL
+ GROUP_UNCOMMON
},
{
PROPERTY_FUNCS(column_fill),
0,
- GROUP_NORMAL
+ GROUP_UNCOMMON
},
{
PROPERTY_FUNCS(column_gap),
0,
- GROUP_NORMAL
+ GROUP_UNCOMMON
},
{
PROPERTY_FUNCS(column_rule_color),
0,
- GROUP_NORMAL
+ GROUP_UNCOMMON
},
{
PROPERTY_FUNCS(column_rule_style),
0,
- GROUP_NORMAL
+ GROUP_UNCOMMON
},
{
PROPERTY_FUNCS(column_rule_width),
0,
- GROUP_NORMAL
+ GROUP_UNCOMMON
},
{
PROPERTY_FUNCS(column_span),
0,
- GROUP_NORMAL
+ GROUP_UNCOMMON
},
{
PROPERTY_FUNCS(column_width),
0,
- GROUP_NORMAL
+ GROUP_UNCOMMON
},
{
PROPERTY_FUNCS(writing_mode),
diff --git a/src/select/properties/column_count.c b/src/select/properties/column_count.c
index 5fe7465..ecee5f3 100644
--- a/src/select/properties/column_count.c
+++ b/src/select/properties/column_count.c
@@ -17,23 +17,25 @@
css_error css__cascade_column_count(uint32_t opv, css_style *style,
css_select_state *state)
{
+ uint16_t value = CSS_COLUMN_COUNT_INHERIT;
css_fixed count = 0;
if (isInherit(opv) == false) {
switch (getValue(opv)) {
case COLUMN_COUNT_SET:
+ value = CSS_COLUMN_COUNT_SET;
count = *((css_fixed *) style->bytecode);
advance_bytecode(style, sizeof(count));
break;
case COLUMN_COUNT_AUTO:
- /** \todo convert to public values */
+ value = CSS_COLUMN_COUNT_AUTO;
break;
}
}
if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
isInherit(opv))) {
- /** \todo set computed elevation */
+ return set_column_count(state->computed, value, count);
}
return CSS_OK;
@@ -42,26 +44,31 @@ css_error css__cascade_column_count(uint32_t opv, css_style *style,
css_error css__set_column_count_from_hint(const css_hint *hint,
css_computed_style *style)
{
- UNUSED(hint);
- UNUSED(style);
-
- return CSS_OK;
+ return set_column_count(style, hint->status, hint->data.integer);
}
css_error css__initial_column_count(css_select_state *state)
{
- UNUSED(state);
-
- return CSS_OK;
+ return set_column_count(state->computed, CSS_COLUMN_COUNT_AUTO, 0);
}
css_error css__compose_column_count(const css_computed_style *parent,
const css_computed_style *child,
css_computed_style *result)
{
- UNUSED(parent);
- UNUSED(child);
- UNUSED(result);
+ int32_t count = 0;
+ uint8_t type = get_column_count(child, &count);
+
+ if ((child->uncommon == NULL && parent->uncommon != NULL) ||
+ type == CSS_COLUMN_COUNT_INHERIT ||
+ (child->uncommon != NULL && result != child)) {
+ if ((child->uncommon == NULL && parent->uncommon != NULL) ||
+ type == CSS_OUTLINE_COLOR_INHERIT) {
+ type = get_column_count(parent, &count);
+ }
+
+ return set_column_count(result, type, count);
+ }
return CSS_OK;
}
diff --git a/src/select/properties/column_fill.c b/src/select/properties/column_fill.c
index 2322c03..9b4f1e0 100644
--- a/src/select/properties/column_fill.c
+++ b/src/select/properties/column_fill.c
@@ -17,20 +17,24 @@
css_error css__cascade_column_fill(uint32_t opv, css_style *style,
css_select_state *state)
{
+ uint16_t value = CSS_COLUMN_FILL_INHERIT;
+
UNUSED(style);
if (isInherit(opv) == false) {
switch (getValue(opv)) {
case COLUMN_FILL_BALANCE:
+ value = CSS_COLUMN_FILL_BALANCE;
+ break;
case COLUMN_FILL_AUTO:
- /** \todo convert to public values */
+ value = CSS_COLUMN_FILL_AUTO;
break;
}
}
if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
isInherit(opv))) {
- /** \todo set computed elevation */
+ return set_column_fill(state->computed, value);
}
return CSS_OK;
@@ -39,27 +43,24 @@ css_error css__cascade_column_fill(uint32_t opv, css_style *style,
css_error css__set_column_fill_from_hint(const css_hint *hint,
css_computed_style *style)
{
- UNUSED(hint);
- UNUSED(style);
-
- return CSS_OK;
+ return set_column_fill(style, hint->status);
}
css_error css__initial_column_fill(css_select_state *state)
{
- UNUSED(state);
-
- return CSS_OK;
+ return set_column_fill(state->computed, CSS_COLUMN_FILL_BALANCE);
}
css_error css__compose_column_fill(const css_computed_style *parent,
const css_computed_style *child,
css_computed_style *result)
{
- UNUSED(parent);
- UNUSED(child);
- UNUSED(result);
+ uint8_t type = get_column_fill(child);
- return CSS_OK;
+ if (type == CSS_COLUMN_FILL_INHERIT) {
+ type = get_column_fill(parent);
+ }
+
+ return set_column_fill(result, type);
}
diff --git a/src/select/properties/column_gap.c b/src/select/properties/column_gap.c
index 8b7a841..641f529 100644
--- a/src/select/properties/column_gap.c
+++ b/src/select/properties/column_gap.c
@@ -17,54 +17,40 @@
css_error css__cascade_column_gap(uint32_t opv, css_style *style,
css_select_state *state)
{
- css_fixed length = 0;
- uint32_t unit = UNIT_PX;
-
- if (isInherit(opv) == false) {
- switch (getValue(opv)) {
- case COLUMN_GAP_SET:
- length = *((css_fixed *) style->bytecode);
- advance_bytecode(style, sizeof(length));
- unit = *((uint32_t *) style->bytecode);
- advance_bytecode(style, sizeof(unit));
- break;
- case COLUMN_GAP_NORMAL:
- /** \todo convert to public values */
- break;
- }
- }
-
- if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
- isInherit(opv))) {
- /** \todo set computed elevation */
- }
-
- return CSS_OK;
+ return css__cascade_length_normal(opv, style, state, set_column_gap);
}
css_error css__set_column_gap_from_hint(const css_hint *hint,
css_computed_style *style)
{
- UNUSED(hint);
- UNUSED(style);
-
- return CSS_OK;
+ return set_column_gap(style, hint->status,
+ hint->data.length.value, hint->data.length.unit);
}
css_error css__initial_column_gap(css_select_state *state)
{
- UNUSED(state);
-
- return CSS_OK;
+ return set_column_gap(state->computed, CSS_COLUMN_GAP_NORMAL,
+ INTTOFIX(1), CSS_UNIT_EM);
}
css_error css__compose_column_gap(const css_computed_style *parent,
const css_computed_style *child,
css_computed_style *result)
{
- UNUSED(parent);
- UNUSED(child);
- UNUSED(result);
+ css_fixed length = INTTOFIX(1);
+ css_unit unit = CSS_UNIT_EM;
+ uint8_t type = get_column_gap(child, &length, &unit);
+
+ if ((child->uncommon == NULL && parent->uncommon != NULL) ||
+ type == CSS_COLUMN_GAP_INHERIT ||
+ (child->uncommon != NULL && result != child)) {
+ if ((child->uncommon == NULL && parent->uncommon != NULL) ||
+ type == CSS_COLUMN_GAP_INHERIT) {
+ type = get_column_gap(parent, &length, &unit);
+ }
+
+ return set_column_gap(result, type, length, unit);
+ }
return CSS_OK;
}
diff --git a/src/select/properties/column_rule_color.c b/src/select/properties/column_rule_color.c
index 933cb60..d4b0e77 100644
--- a/src/select/properties/column_rule_color.c
+++ b/src/select/properties/column_rule_color.c
@@ -17,24 +17,31 @@
css_error css__cascade_column_rule_color(uint32_t opv, css_style *style,
css_select_state *state)
{
+ bool inherit = isInherit(opv);
+ uint16_t value = CSS_COLUMN_RULE_COLOR_INHERIT;
css_color color = 0;
if (isInherit(opv) == false) {
switch (getValue(opv)) {
- case COLUMN_RULE_COLOR_SET:
- color = *((css_fixed *) style->bytecode);
- advance_bytecode(style, sizeof(color));
- break;
case COLUMN_RULE_COLOR_TRANSPARENT:
+ value = CSS_COLUMN_RULE_COLOR_COLOR;
+ break;
case COLUMN_RULE_COLOR_CURRENT_COLOR:
- /** \todo convert to public values */
+ /* color: currentColor always computes to inherit */
+ value = CSS_COLUMN_RULE_COLOR_INHERIT;
+ inherit = true;
+ break;
+ case COLUMN_RULE_COLOR_SET:
+ value = CSS_COLUMN_RULE_COLOR_COLOR;
+ color = *((css_fixed *) style->bytecode);
+ advance_bytecode(style, sizeof(color));
break;
}
}
if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
- isInherit(opv))) {
- /** \todo set computed elevation */
+ inherit)) {
+ return set_column_rule_color(state->computed, value, color);
}
return CSS_OK;
@@ -43,27 +50,26 @@ css_error css__cascade_column_rule_color(uint32_t opv, css_style *style,
css_error css__set_column_rule_color_from_hint(const css_hint *hint,
css_computed_style *style)
{
- UNUSED(hint);
- UNUSED(style);
-
- return CSS_OK;
+ return set_column_rule_color(style, hint->status, hint->data.color);
}
css_error css__initial_column_rule_color(css_select_state *state)
{
- UNUSED(state);
-
- return CSS_OK;
+ return set_column_rule_color(state->computed,
+ CSS_COLUMN_RULE_COLOR_INHERIT, 0);
}
css_error css__compose_column_rule_color(const css_computed_style *parent,
const css_computed_style *child,
css_computed_style *result)
{
- UNUSED(parent);
- UNUSED(child);
- UNUSED(result);
+ css_color color;
+ uint8_t type = get_column_rule_color(child, &color);
- return CSS_OK;
+ if (type == CSS_COLUMN_RULE_COLOR_INHERIT) {
+ type = get_column_rule_color(parent, &color);
+ }
+
+ return set_column_rule_color(result, type, color);
}
diff --git a/src/select/properties/column_rule_style.c b/src/select/properties/column_rule_style.c
index ba558a2..586ce5d 100644
--- a/src/select/properties/column_rule_style.c
+++ b/src/select/properties/column_rule_style.c
@@ -17,57 +17,32 @@
css_error css__cascade_column_rule_style(uint32_t opv, css_style *style,
css_select_state *state)
{
- UNUSED(style);
-
- if (isInherit(opv) == false) {
- switch (getValue(opv)) {
- case COLUMN_RULE_STYLE_NONE:
- case COLUMN_RULE_STYLE_HIDDEN:
- case COLUMN_RULE_STYLE_DOTTED:
- case COLUMN_RULE_STYLE_DASHED:
- case COLUMN_RULE_STYLE_SOLID:
- case COLUMN_RULE_STYLE_DOUBLE:
- case COLUMN_RULE_STYLE_GROOVE:
- case COLUMN_RULE_STYLE_RIDGE:
- case COLUMN_RULE_STYLE_INSET:
- case COLUMN_RULE_STYLE_OUTSET:
- /** \todo convert to public values */
- break;
- }
- }
-
- if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
- isInherit(opv))) {
- /** \todo set computed elevation */
- }
-
- return CSS_OK;
+ return css__cascade_border_style(opv, style, state,
+ set_column_rule_style);
}
css_error css__set_column_rule_style_from_hint(const css_hint *hint,
css_computed_style *style)
{
- UNUSED(hint);
- UNUSED(style);
-
- return CSS_OK;
+ return set_column_rule_style(style, hint->status);
}
css_error css__initial_column_rule_style(css_select_state *state)
{
- UNUSED(state);
-
- return CSS_OK;
+ return set_column_rule_style(state->computed,
+ CSS_COLUMN_RULE_STYLE_NONE);
}
css_error css__compose_column_rule_style(const css_computed_style *parent,
const css_computed_style *child,
css_computed_style *result)
{
- UNUSED(parent);
- UNUSED(child);
- UNUSED(result);
+ uint8_t type = get_column_rule_style(child);
+
+ if (type == CSS_COLUMN_RULE_STYLE_INHERIT) {
+ type = get_column_rule_style(parent);
+ }
- return CSS_OK;
+ return set_column_rule_style(result, type);
}
diff --git a/src/select/properties/column_rule_width.c b/src/select/properties/column_rule_width.c
index 2c0ca0d..8694a09 100644
--- a/src/select/properties/column_rule_width.c
+++ b/src/select/properties/column_rule_width.c
@@ -17,57 +17,35 @@
css_error css__cascade_column_rule_width(uint32_t opv, css_style *style,
css_select_state *state)
{
- css_fixed length = 0;
- uint32_t unit = UNIT_PX;
-
- if (isInherit(opv) == false) {
- switch (getValue(opv)) {
- case COLUMN_RULE_WIDTH_SET:
- length = *((css_fixed *) style->bytecode);
- advance_bytecode(style, sizeof(length));
- unit = *((uint32_t *) style->bytecode);
- advance_bytecode(style, sizeof(unit));
- break;
- case COLUMN_RULE_WIDTH_THIN:
- case COLUMN_RULE_WIDTH_MEDIUM:
- case COLUMN_RULE_WIDTH_THICK:
- /** \todo convert to public values */
- break;
- }
- }
-
- if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
- isInherit(opv))) {
- /** \todo set computed elevation */
- }
-
- return CSS_OK;
+ return css__cascade_border_width(opv, style, state,
+ set_column_rule_width);
}
css_error css__set_column_rule_width_from_hint(const css_hint *hint,
css_computed_style *style)
{
- UNUSED(hint);
- UNUSED(style);
-
- return CSS_OK;
+ return set_column_rule_width(style, hint->status,
+ hint->data.length.value, hint->data.length.unit);
}
css_error css__initial_column_rule_width(css_select_state *state)
{
- UNUSED(state);
-
- return CSS_OK;
+ return set_column_rule_width(state->computed,
+ CSS_COLUMN_RULE_WIDTH_MEDIUM, 0, CSS_UNIT_PX);
}
css_error css__compose_column_rule_width(const css_computed_style *parent,
const css_computed_style *child,
css_computed_style *result)
{
- UNUSED(parent);
- UNUSED(child);
- UNUSED(result);
+ css_fixed length = 0;
+ css_unit unit = CSS_UNIT_PX;
+ uint8_t type = get_column_rule_width(child, &length, &unit);
+
+ if (type == CSS_COLUMN_RULE_WIDTH_INHERIT) {
+ type = get_column_rule_width(parent, &length, &unit);
+ }
- return CSS_OK;
+ return set_column_rule_width(result, type, length, unit);
}
diff --git a/src/select/properties/column_span.c b/src/select/properties/column_span.c
index 92048a0..2c870d3 100644
--- a/src/select/properties/column_span.c
+++ b/src/select/properties/column_span.c
@@ -14,23 +14,27 @@
#include "select/properties/properties.h"
#include "select/properties/helpers.h"
-css_error css__cascade_column_span(uint32_t opv, css_style *style,
+css_error css__cascade_column_span(uint32_t opv, css_style *style,
css_select_state *state)
{
+ uint16_t value = CSS_COLUMN_SPAN_INHERIT;
+
UNUSED(style);
if (isInherit(opv) == false) {
switch (getValue(opv)) {
case COLUMN_SPAN_NONE:
+ value = CSS_COLUMN_SPAN_NONE;
+ break;
case COLUMN_SPAN_ALL:
- /** \todo convert to public values */
+ value = CSS_COLUMN_SPAN_ALL;
break;
}
}
if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
isInherit(opv))) {
- /** \todo set computed elevation */
+ return set_column_span(state->computed, value);
}
return CSS_OK;
@@ -39,27 +43,24 @@ css_error css__cascade_column_span(uint32_t opv, css_style *style,
css_error css__set_column_span_from_hint(const css_hint *hint,
css_computed_style *style)
{
- UNUSED(hint);
- UNUSED(style);
-
- return CSS_OK;
+ return set_column_span(style, hint->status);
}
css_error css__initial_column_span(css_select_state *state)
{
- UNUSED(state);
-
- return CSS_OK;
+ return set_column_span(state->computed, CSS_COLUMN_SPAN_NONE);
}
css_error css__compose_column_span(const css_computed_style *parent,
const css_computed_style *child,
css_computed_style *result)
{
- UNUSED(parent);
- UNUSED(child);
- UNUSED(result);
+ uint8_t type = get_column_span(child);
- return CSS_OK;
+ if (type == CSS_COLUMN_SPAN_INHERIT) {
+ type = get_column_span(parent);
+ }
+
+ return set_column_span(result, type);
}
diff --git a/src/select/properties/column_width.c b/src/select/properties/column_width.c
index fd053d9..45eb7fc 100644
--- a/src/select/properties/column_width.c
+++ b/src/select/properties/column_width.c
@@ -14,57 +14,43 @@
#include "select/properties/properties.h"
#include "select/properties/helpers.h"
-css_error css__cascade_column_width(uint32_t opv, css_style *style,
+css_error css__cascade_column_width(uint32_t opv, css_style *style,
css_select_state *state)
{
- css_fixed length = 0;
- uint32_t unit = UNIT_PX;
-
- if (isInherit(opv) == false) {
- switch (getValue(opv)) {
- case COLUMN_WIDTH_SET:
- length = *((css_fixed *) style->bytecode);
- advance_bytecode(style, sizeof(length));
- unit = *((uint32_t *) style->bytecode);
- advance_bytecode(style, sizeof(unit));
- break;
- case COLUMN_WIDTH_AUTO:
- /** \todo convert to public values */
- break;
- }
- }
-
- if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
- isInherit(opv))) {
- /** \todo set computed elevation */
- }
-
- return CSS_OK;
+ return css__cascade_length_normal(opv, style, state, set_column_width);
}
css_error css__set_column_width_from_hint(const css_hint *hint,
css_computed_style *style)
{
- UNUSED(hint);
- UNUSED(style);
-
- return CSS_OK;
+ return set_column_width(style, hint->status,
+ hint->data.length.value, hint->data.length.unit);
}
css_error css__initial_column_width(css_select_state *state)
{
- UNUSED(state);
-
- return CSS_OK;
+ return set_column_width(state->computed, CSS_COLUMN_WIDTH_AUTO,
+ INTTOFIX(1), CSS_UNIT_EM);
}
css_error css__compose_column_width(const css_computed_style *parent,
const css_computed_style *child,
css_computed_style *result)
{
- UNUSED(parent);
- UNUSED(child);
- UNUSED(result);
+ css_fixed length = INTTOFIX(1);
+ css_unit unit = CSS_UNIT_EM;
+ uint8_t type = get_column_width(child, &length, &unit);
+
+ if ((child->uncommon == NULL && parent->uncommon != NULL) ||
+ type == CSS_COLUMN_WIDTH_INHERIT ||
+ (child->uncommon != NULL && result != child)) {
+ if ((child->uncommon == NULL && parent->uncommon != NULL) ||
+ type == CSS_COLUMN_WIDTH_INHERIT) {
+ type = get_column_width(parent, &length, &unit);
+ }
+
+ return set_column_width(result, type, length, unit);
+ }
return CSS_OK;
}
diff --git a/src/select/propget.h b/src/select/propget.h
index b124cfe..08ed0f4 100644
--- a/src/select/propget.h
+++ b/src/select/propget.h
@@ -18,7 +18,7 @@
#define LETTER_SPACING_SHIFT 2
#define LETTER_SPACING_MASK 0xfc
static inline uint8_t get_letter_spacing(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
if (style->uncommon != NULL) {
@@ -72,7 +72,7 @@ static inline uint8_t get_outline_color(
#define OUTLINE_WIDTH_SHIFT 1
#define OUTLINE_WIDTH_MASK 0xfe
static inline uint8_t get_outline_width(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
if (style->uncommon != NULL) {
@@ -106,7 +106,7 @@ static inline uint8_t get_outline_width(
#define BORDER_SPACING_SHIFT1 0
#define BORDER_SPACING_MASK1 0xff
static inline uint8_t get_border_spacing(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *hlength, css_unit *hunit,
css_fixed *vlength, css_unit *vunit)
{
@@ -117,7 +117,7 @@ static inline uint8_t get_border_spacing(
/* 1 bit: type */
if (bits == CSS_BORDER_SPACING_SET) {
- uint8_t bits1 =
+ uint8_t bits1 =
style->uncommon->bits[BORDER_SPACING_INDEX1];
bits1 &= BORDER_SPACING_MASK1;
bits1 >>= BORDER_SPACING_SHIFT1;
@@ -150,7 +150,7 @@ static inline uint8_t get_border_spacing(
#define WORD_SPACING_SHIFT 2
#define WORD_SPACING_MASK 0xfc
static inline uint8_t get_word_spacing(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
if (style->uncommon != NULL) {
@@ -199,7 +199,7 @@ static inline uint8_t get_writing_mode(
#define COUNTER_INCREMENT_SHIFT 1
#define COUNTER_INCREMENT_MASK 0x2
static inline uint8_t get_counter_increment(
- const css_computed_style *style,
+ const css_computed_style *style,
const css_computed_counter **counters)
{
if (style->uncommon != NULL) {
@@ -223,7 +223,7 @@ static inline uint8_t get_counter_increment(
#define COUNTER_RESET_SHIFT 0
#define COUNTER_RESET_MASK 0x1
static inline uint8_t get_counter_reset(
- const css_computed_style *style,
+ const css_computed_style *style,
const css_computed_counter **counters)
{
if (style->uncommon != NULL) {
@@ -247,7 +247,7 @@ static inline uint8_t get_counter_reset(
#define CURSOR_SHIFT 3
#define CURSOR_MASK 0xf8
static inline uint8_t get_cursor(
- const css_computed_style *style,
+ const css_computed_style *style,
lwc_string ***urls)
{
if (style->uncommon != NULL) {
@@ -277,7 +277,7 @@ static inline uint8_t get_cursor(
#define CLIP_SHIFT2 0
#define CLIP_MASK2 0xff
static inline uint8_t get_clip(
- const css_computed_style *style,
+ const css_computed_style *style,
css_computed_clip_rect *rect)
{
if (style->uncommon != NULL) {
@@ -287,7 +287,7 @@ static inline uint8_t get_clip(
/* 6bits: trblyy : top | right | bottom | left | type */
if ((bits & 0x3) == CSS_CLIP_RECT) {
- uint8_t bits1;
+ uint8_t bits1;
rect->left_auto = (bits & 0x4);
rect->bottom_auto = (bits & 0x8);
@@ -342,11 +342,203 @@ static inline uint8_t get_clip(
#undef CLIP_SHIFT
#undef CLIP_INDEX
+#define COLUMN_COUNT_INDEX 8
+#define COLUMN_COUNT_SHIFT 6
+#define COLUMN_COUNT_MASK 0xc0
+static inline uint8_t get_column_count(
+ const css_computed_style *style, int32_t *count)
+{
+ if (style->uncommon != NULL) {
+ uint8_t bits = style->uncommon->bits[COLUMN_COUNT_INDEX];
+ bits &= COLUMN_COUNT_MASK;
+ bits >>= COLUMN_COUNT_SHIFT;
+
+ /* 2bits: tt : type */
+ *count = style->uncommon->column_count;
+
+ return bits;
+ }
+
+ return CSS_COLUMN_COUNT_AUTO;
+}
+#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 uint8_t get_column_fill(
+ const css_computed_style *style)
+{
+ if (style->uncommon != NULL) {
+ uint8_t bits = style->uncommon->bits[COLUMN_FILL_INDEX];
+ bits &= COLUMN_FILL_MASK;
+ bits >>= COLUMN_FILL_SHIFT;
+
+ /* 2bits: type */
+ return bits;
+ }
+
+ return CSS_COLUMN_FILL_BALANCE;
+}
+#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 uint8_t get_column_gap(
+ const css_computed_style *style,
+ css_fixed *length, css_unit *unit)
+{
+ if (style->uncommon != NULL) {
+ uint8_t bits = style->uncommon->bits[COLUMN_GAP_INDEX];
+ bits &= COLUMN_GAP_MASK;
+ bits >>= COLUMN_GAP_SHIFT;
+
+ /* 6bits: uuuutt : units | type */
+ if ((bits & 0x3) == CSS_COLUMN_GAP_SET) {
+ *length = style->uncommon->column_gap;
+ *unit = bits >> 2;
+ }
+
+ return (bits & 0x3);
+ }
+
+ return CSS_COLUMN_GAP_NORMAL;
+}
+#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 uint8_t get_column_rule_color(
+ const css_computed_style *style,
+ css_color *color)
+{
+ if (style->uncommon != NULL) {
+ uint8_t bits = style->uncommon->bits[COLUMN_RULE_COLOR_INDEX];
+ bits &= COLUMN_RULE_COLOR_MASK;
+ bits >>= COLUMN_RULE_COLOR_SHIFT;
+
+ /* 2bits: type */
+ *color = style->uncommon->column_rule_color;
+
+ return bits;
+ }
+
+ *color = 0;
+ return CSS_COLUMN_RULE_COLOR_CURRENT_COLOR;
+}
+#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 uint8_t get_column_rule_style(
+ const css_computed_style *style)
+{
+ if (style->uncommon != NULL) {
+ uint8_t bits = style->uncommon->bits[COLUMN_RULE_STYLE_INDEX];
+ bits &= COLUMN_RULE_STYLE_MASK;
+ bits >>= COLUMN_RULE_STYLE_SHIFT;
+
+ /* 4bits: type */
+ return bits;
+ }
+
+ return CSS_COLUMN_RULE_STYLE_NONE;
+}
+#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 uint8_t get_column_rule_width(
+ const css_computed_style *style,
+ css_fixed *length, css_unit *unit)
+{
+ if (style->uncommon != NULL) {
+ uint8_t bits = style->uncommon->bits[COLUMN_RULE_WIDTH_INDEX];
+ bits &= COLUMN_RULE_WIDTH_MASK;
+ bits >>= COLUMN_RULE_WIDTH_SHIFT;
+
+ /* 7bits: uuuuttt : units | type */
+ if ((bits & 0x7) == CSS_COLUMN_RULE_WIDTH_WIDTH) {
+ *length = style->uncommon->column_rule_width;
+ *unit = bits >> 3;
+ }
+
+ return (bits & 0x7);
+ }
+
+ return CSS_COLUMN_RULE_WIDTH_MEDIUM;
+}
+#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 uint8_t get_column_span(
+ const css_computed_style *style)
+{
+ if (style->uncommon != NULL) {
+ uint8_t bits = style->uncommon->bits[COLUMN_SPAN_INDEX];
+ bits &= COLUMN_SPAN_MASK;
+ bits >>= COLUMN_SPAN_SHIFT;
+
+ /* 2bits: type */
+ return bits;
+ }
+
+ return CSS_COLUMN_SPAN_NONE;
+}
+#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 uint8_t get_column_width(
+ const css_computed_style *style,
+ css_fixed *length, css_unit *unit)
+{
+ if (style->uncommon != NULL) {
+ uint8_t bits = style->uncommon->bits[COLUMN_WIDTH_INDEX];
+ bits &= COLUMN_WIDTH_MASK;
+ bits >>= COLUMN_WIDTH_SHIFT;
+
+ /* 6bits: uuuutt : units | type */
+ if ((bits & 0x3) == CSS_COLUMN_WIDTH_SET) {
+ *length = style->uncommon->column_width;
+ *unit = bits >> 2;
+ }
+
+ return (bits & 0x3);
+ }
+
+ return CSS_COLUMN_WIDTH_AUTO;
+}
+#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 uint8_t get_content(
- const css_computed_style *style,
+ const css_computed_style *style,
const css_computed_content_item **content)
{
if (style->uncommon != NULL) {
@@ -370,7 +562,7 @@ static inline uint8_t get_content(
#define VERTICAL_ALIGN_SHIFT 0
#define VERTICAL_ALIGN_MASK 0xff
static inline uint8_t get_vertical_align(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[VERTICAL_ALIGN_INDEX];
@@ -393,7 +585,7 @@ static inline uint8_t get_vertical_align(
#define FONT_SIZE_SHIFT 0
#define FONT_SIZE_MASK 0xff
static inline uint8_t get_font_size(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[FONT_SIZE_INDEX];
@@ -416,7 +608,7 @@ static inline uint8_t get_font_size(
#define BORDER_TOP_WIDTH_SHIFT 1
#define BORDER_TOP_WIDTH_MASK 0xfe
static inline uint8_t get_border_top_width(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[BORDER_TOP_WIDTH_INDEX];
@@ -439,7 +631,7 @@ static inline uint8_t get_border_top_width(
#define BORDER_RIGHT_WIDTH_SHIFT 1
#define BORDER_RIGHT_WIDTH_MASK 0xfe
static inline uint8_t get_border_right_width(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[BORDER_RIGHT_WIDTH_INDEX];
@@ -462,7 +654,7 @@ static inline uint8_t get_border_right_width(
#define BORDER_BOTTOM_WIDTH_SHIFT 1
#define BORDER_BOTTOM_WIDTH_MASK 0xfe
static inline uint8_t get_border_bottom_width(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[BORDER_BOTTOM_WIDTH_INDEX];
@@ -485,7 +677,7 @@ static inline uint8_t get_border_bottom_width(
#define BORDER_LEFT_WIDTH_SHIFT 1
#define BORDER_LEFT_WIDTH_MASK 0xfe
static inline uint8_t get_border_left_width(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[BORDER_LEFT_WIDTH_INDEX];
@@ -508,7 +700,7 @@ static inline uint8_t get_border_left_width(
#define BACKGROUND_IMAGE_SHIFT 0
#define BACKGROUND_IMAGE_MASK 0x1
static inline uint8_t get_background_image(
- const css_computed_style *style,
+ const css_computed_style *style,
lwc_string **url)
{
uint8_t bits = style->bits[BACKGROUND_IMAGE_INDEX];
@@ -528,7 +720,7 @@ static inline uint8_t get_background_image(
#define COLOR_SHIFT 0
#define COLOR_MASK 0x1
static inline uint8_t get_color(
- const css_computed_style *style,
+ const css_computed_style *style,
css_color *color)
{
uint8_t bits = style->bits[COLOR_INDEX];
@@ -548,7 +740,7 @@ static inline uint8_t get_color(
#define LIST_STYLE_IMAGE_SHIFT 0
#define LIST_STYLE_IMAGE_MASK 0x1
static inline uint8_t get_list_style_image(
- const css_computed_style *style,
+ const css_computed_style *style,
lwc_string **url)
{
uint8_t bits = style->bits[LIST_STYLE_IMAGE_INDEX];
@@ -568,7 +760,7 @@ static inline uint8_t get_list_style_image(
#define QUOTES_SHIFT 0
#define QUOTES_MASK 0x1
static inline uint8_t get_quotes(
- const css_computed_style *style,
+ const css_computed_style *style,
lwc_string ***quotes)
{
uint8_t bits = style->bits[QUOTES_INDEX];
@@ -588,7 +780,7 @@ static inline uint8_t get_quotes(
#define TOP_SHIFT 2
#define TOP_MASK 0xfc
static inline uint8_t get_top(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[TOP_INDEX];
@@ -621,7 +813,7 @@ static inline uint8_t get_top_bits(
#define RIGHT_SHIFT 2
#define RIGHT_MASK 0xfc
static inline uint8_t get_right(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[RIGHT_INDEX];
@@ -654,7 +846,7 @@ static inline uint8_t get_right_bits(
#define BOTTOM_SHIFT 2
#define BOTTOM_MASK 0xfc
static inline uint8_t get_bottom(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[BOTTOM_INDEX];
@@ -687,7 +879,7 @@ static inline uint8_t get_bottom_bits(
#define LEFT_SHIFT 2
#define LEFT_MASK 0xfc
static inline uint8_t get_left(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[LEFT_INDEX];
@@ -720,7 +912,7 @@ static inline uint8_t get_left_bits(
#define BORDER_TOP_COLOR_SHIFT 0
#define BORDER_TOP_COLOR_MASK 0x3
static inline uint8_t get_border_top_color(
- const css_computed_style *style,
+ const css_computed_style *style,
css_color *color)
{
uint8_t bits = style->bits[BORDER_TOP_COLOR_INDEX];
@@ -740,7 +932,7 @@ static inline uint8_t get_border_top_color(
#define BORDER_RIGHT_COLOR_SHIFT 0
#define BORDER_RIGHT_COLOR_MASK 0x3
static inline uint8_t get_border_right_color(
- const css_computed_style *style,
+ const css_computed_style *style,
css_color *color)
{
uint8_t bits = style->bits[BORDER_RIGHT_COLOR_INDEX];
@@ -760,7 +952,7 @@ static inline uint8_t get_border_right_color(
#define BORDER_BOTTOM_COLOR_SHIFT 0
#define BORDER_BOTTOM_COLOR_MASK 0x3
static inline uint8_t get_border_bottom_color(
- const css_computed_style *style,
+ const css_computed_style *style,
css_color *color)
{
uint8_t bits = style->bits[BORDER_BOTTOM_COLOR_INDEX];
@@ -780,7 +972,7 @@ static inline uint8_t get_border_bottom_color(
#define BORDER_LEFT_COLOR_SHIFT 0
#define BORDER_LEFT_COLOR_MASK 0x3
static inline uint8_t get_border_left_color(
- const css_computed_style *style,
+ const css_computed_style *style,
css_color *color)
{
uint8_t bits = style->bits[BORDER_LEFT_COLOR_INDEX];
@@ -800,7 +992,7 @@ static inline uint8_t get_border_left_color(
#define HEIGHT_SHIFT 2
#define HEIGHT_MASK 0xfc
static inline uint8_t get_height(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[HEIGHT_INDEX];
@@ -823,7 +1015,7 @@ static inline uint8_t get_height(
#define LINE_HEIGHT_SHIFT 2
#define LINE_HEIGHT_MASK 0xfc
static inline uint8_t get_line_height(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[LINE_HEIGHT_INDEX];
@@ -831,7 +1023,7 @@ static inline uint8_t get_line_height(
bits >>= LINE_HEIGHT_SHIFT;
/* 6bits: uuuutt : units | type */
- if ((bits & 0x3) == CSS_LINE_HEIGHT_NUMBER ||
+ if ((bits & 0x3) == CSS_LINE_HEIGHT_NUMBER ||
(bits & 0x3) == CSS_LINE_HEIGHT_DIMENSION) {
*length = style->line_height;
}
@@ -850,7 +1042,7 @@ static inline uint8_t get_line_height(
#define BACKGROUND_COLOR_SHIFT 0
#define BACKGROUND_COLOR_MASK 0x3
static inline uint8_t get_background_color(
- const css_computed_style *style,
+ const css_computed_style *style,
css_color *color)
{
uint8_t bits = style->bits[BACKGROUND_COLOR_INDEX];
@@ -870,7 +1062,7 @@ static inline uint8_t get_background_color(
#define Z_INDEX_SHIFT 0
#define Z_INDEX_MASK 0x3
static inline uint8_t get_z_index(
- const css_computed_style *style,
+ const css_computed_style *style,
int32_t *z_index)
{
uint8_t bits = style->bits[Z_INDEX_INDEX];
@@ -890,7 +1082,7 @@ static inline uint8_t get_z_index(
#define MARGIN_TOP_SHIFT 2
#define MARGIN_TOP_MASK 0xfc
static inline uint8_t get_margin_top(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[MARGIN_TOP_INDEX];
@@ -913,7 +1105,7 @@ static inline uint8_t get_margin_top(
#define MARGIN_RIGHT_SHIFT 2
#define MARGIN_RIGHT_MASK 0xfc
static inline uint8_t get_margin_right(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[MARGIN_RIGHT_INDEX];
@@ -936,7 +1128,7 @@ static inline uint8_t get_margin_right(
#define MARGIN_BOTTOM_SHIFT 2
#define MARGIN_BOTTOM_MASK 0xfc
static inline uint8_t get_margin_bottom(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[MARGIN_BOTTOM_INDEX];
@@ -959,7 +1151,7 @@ static inline uint8_t get_margin_bottom(
#define MARGIN_LEFT_SHIFT 2
#define MARGIN_LEFT_MASK 0xfc
static inline uint8_t get_margin_left(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[MARGIN_LEFT_INDEX];
@@ -1050,7 +1242,7 @@ static inline uint8_t get_direction(
#define MAX_HEIGHT_SHIFT 2
#define MAX_HEIGHT_MASK 0xfc
static inline uint8_t get_max_height(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[MAX_HEIGHT_INDEX];
@@ -1073,7 +1265,7 @@ static inline uint8_t get_max_height(
#define MAX_WIDTH_SHIFT 2
#define MAX_WIDTH_MASK 0xfc
static inline uint8_t get_max_width(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[MAX_WIDTH_INDEX];
@@ -1096,7 +1288,7 @@ static inline uint8_t get_max_width(
#define WIDTH_SHIFT 2
#define WIDTH_MASK 0xfc
static inline uint8_t get_width(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[WIDTH_INDEX];
@@ -1170,7 +1362,7 @@ static inline uint8_t get_font_style(
#define MIN_HEIGHT_SHIFT 3
#define MIN_HEIGHT_MASK 0xf8
static inline uint8_t get_min_height(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[MIN_HEIGHT_INDEX];
@@ -1193,7 +1385,7 @@ static inline uint8_t get_min_height(
#define MIN_WIDTH_SHIFT 3
#define MIN_WIDTH_MASK 0xf8
static inline uint8_t get_min_width(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[MIN_WIDTH_INDEX];
@@ -1250,7 +1442,7 @@ static inline uint8_t get_clear(
#define PADDING_TOP_SHIFT 3
#define PADDING_TOP_MASK 0xf8
static inline uint8_t get_padding_top(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[PADDING_TOP_INDEX];
@@ -1273,7 +1465,7 @@ static inline uint8_t get_padding_top(
#define PADDING_RIGHT_SHIFT 3
#define PADDING_RIGHT_MASK 0xf8
static inline uint8_t get_padding_right(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[PADDING_RIGHT_INDEX];
@@ -1296,7 +1488,7 @@ static inline uint8_t get_padding_right(
#define PADDING_BOTTOM_SHIFT 3
#define PADDING_BOTTOM_MASK 0xf8
static inline uint8_t get_padding_bottom(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[PADDING_BOTTOM_INDEX];
@@ -1319,7 +1511,7 @@ static inline uint8_t get_padding_bottom(
#define PADDING_LEFT_SHIFT 3
#define PADDING_LEFT_MASK 0xf8
static inline uint8_t get_padding_left(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[PADDING_LEFT_INDEX];
@@ -1393,7 +1585,7 @@ static inline uint8_t get_position(
#define OPACITY_SHIFT 2
#define OPACITY_MASK 0x04
static inline uint8_t get_opacity(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *opacity)
{
uint8_t bits = style->bits[OPACITY_INDEX];
@@ -1432,7 +1624,7 @@ static inline uint8_t get_text_transform(
#define TEXT_INDENT_SHIFT 3
#define TEXT_INDENT_MASK 0xf8
static inline uint8_t get_text_indent(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *length, css_unit *unit)
{
uint8_t bits = style->bits[TEXT_INDENT_INDEX];
@@ -1475,7 +1667,7 @@ static inline uint8_t get_white_space(
#define BACKGROUND_POSITION_SHIFT1 0
#define BACKGROUND_POSITION_MASK1 0xff
static inline uint8_t get_background_position(
- const css_computed_style *style,
+ const css_computed_style *style,
css_fixed *hlength, css_unit *hunit,
css_fixed *vlength, css_unit *vunit)
{
@@ -1561,7 +1753,7 @@ static inline uint8_t get_text_decoration(
#define FONT_FAMILY_SHIFT 0
#define FONT_FAMILY_MASK 0x7
static inline uint8_t get_font_family(
- const css_computed_style *style,
+ const css_computed_style *style,
lwc_string ***names)
{
uint8_t bits = style->bits[FONT_FAMILY_INDEX];
@@ -1801,7 +1993,7 @@ static inline uint8_t get_page_break_after(
#undef PAGE_BREAK_AFTER_MASK
#undef PAGE_BREAK_AFTER_SHIFT
#undef PAGE_BREAK_AFTER_INDEX
-
+
#define PAGE_BREAK_BEFORE_INDEX 0
#define PAGE_BREAK_BEFORE_SHIFT 3
#define PAGE_BREAK_BEFORE_MASK 0x38
@@ -1816,13 +2008,13 @@ static inline uint8_t get_page_break_before(
/* 3bits: type */
return bits;
}
-
+
return CSS_PAGE_BREAK_BEFORE_AUTO;
}
#undef PAGE_BREAK_BEFORE_MASK
#undef PAGE_BREAK_BEFORE_SHIFT
#undef PAGE_BREAK_BEFORE_INDEX
-
+
#define PAGE_BREAK_INSIDE_INDEX 0
#define PAGE_BREAK_INSIDE_SHIFT 6
#define PAGE_BREAK_INSIDE_MASK 0xc0
@@ -1855,13 +2047,13 @@ static inline uint8_t get_orphans(
uint8_t bits = style->page->bits[ORPHANS_INDEX];
bits &= ORPHANS_MASK;
bits >>= ORPHANS_SHIFT;
-
+
*orphans = style->page->orphans;
-
+
/* 1bit: type */
return bits;
}
-
+
*orphans = 2;
return CSS_ORPHANS_SET;
}
@@ -1880,13 +2072,13 @@ static inline uint8_t get_widows(
uint8_t bits = style->page->bits[WIDOWS_INDEX];
bits &= WIDOWS_MASK;
bits >>= WIDOWS_SHIFT;
-
+
*widows = style->page->widows;
-
+
/* 1bit: type */
return bits;
}
-
+
*widows = 2;
return CSS_WIDOWS_SET;
}
diff --git a/src/select/propset.h b/src/select/propset.h
index b7da5a6..769d3b3 100644
--- a/src/select/propset.h
+++ b/src/select/propset.h
@@ -20,12 +20,17 @@ static const css_computed_uncommon default_uncommon = {
{ (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_WORD_SPACING_INHERIT << 2) |
(CSS_COUNTER_INCREMENT_NONE << 1) | CSS_COUNTER_RESET_NONE,
(CSS_CURSOR_INHERIT << 3) | (CSS_WRITING_MODE_INHERIT << 1) | 0,
0,
0,
- (CSS_CLIP_AUTO << 2) | CSS_CONTENT_NORMAL
+ (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
},
{ 0, 0 },
{ 0, 0, 0, 0 },
@@ -33,6 +38,11 @@ static const css_computed_uncommon default_uncommon = {
0,
0,
0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
NULL,
NULL,
NULL,
@@ -51,14 +61,14 @@ static const css_computed_uncommon default_uncommon = {
} while(0)
static const css_computed_page default_page = {
- {
- (CSS_PAGE_BREAK_INSIDE_AUTO << 6) |
+ {
+ (CSS_PAGE_BREAK_INSIDE_AUTO << 6) |
(CSS_PAGE_BREAK_BEFORE_AUTO << 3) |
CSS_PAGE_BREAK_AFTER_AUTO,
- (CSS_WIDOWS_SET << 1) |
+ (CSS_WIDOWS_SET << 1) |
CSS_ORPHANS_SET
},
- 2 << CSS_RADIX_POINT,
+ 2 << CSS_RADIX_POINT,
2 << CSS_RADIX_POINT
};
@@ -77,7 +87,7 @@ static const css_computed_page default_page = {
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits;
@@ -87,7 +97,7 @@ static inline css_error set_letter_spacing(
bits = &style->uncommon->bits[LETTER_SPACING_INDEX];
/* 6bits: uuuutt : unit | type */
- *bits = (*bits & ~LETTER_SPACING_MASK) |
+ *bits = (*bits & ~LETTER_SPACING_MASK) |
(((type & 0x3) | unit << 2) << LETTER_SPACING_SHIFT);
style->uncommon->letter_spacing = length;
@@ -126,7 +136,7 @@ static inline css_error set_outline_color(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits;
@@ -153,7 +163,7 @@ static inline css_error set_outline_width(
#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_computed_style *style, uint8_t type,
css_fixed hlength, css_unit hunit,
css_fixed vlength, css_unit vunit)
{
@@ -164,7 +174,7 @@ static inline css_error set_border_spacing(
bits = &style->uncommon->bits[BORDER_SPACING_INDEX];
/* 1 bit: type */
- *bits = (*bits & ~BORDER_SPACING_MASK) |
+ *bits = (*bits & ~BORDER_SPACING_MASK) |
((type & 0x1) << BORDER_SPACING_SHIFT);
bits = &style->uncommon->bits[BORDER_SPACING_INDEX1];
@@ -188,7 +198,7 @@ static inline css_error set_border_spacing(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits;
@@ -200,7 +210,7 @@ static inline css_error set_word_spacing(
/* 6bits: uuuutt : unit | type */
*bits = (*bits & ~WORD_SPACING_MASK) |
(((type & 0x3) | (unit << 2)) << WORD_SPACING_SHIFT);
-
+
style->uncommon->word_spacing = length;
return CSS_OK;
@@ -235,7 +245,7 @@ static inline css_error set_writing_mode(
#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_style *style, uint8_t type,
css_computed_counter *counters)
{
uint8_t *bits;
@@ -275,7 +285,7 @@ static inline css_error set_counter_increment(
#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_style *style, uint8_t type,
css_computed_counter *counters)
{
uint8_t *bits;
@@ -315,7 +325,7 @@ static inline css_error set_counter_reset(
#define CURSOR_SHIFT 3
#define CURSOR_MASK 0xf8
static inline css_error set_cursor(
- css_computed_style *style, uint8_t type,
+ css_computed_style *style, uint8_t type,
lwc_string **urls)
{
uint8_t *bits;
@@ -359,7 +369,7 @@ static inline css_error set_cursor(
#define CLIP_INDEX2 6
#define CLIP_SHIFT2 0
static inline css_error set_clip(
- css_computed_style *style, uint8_t type,
+ css_computed_style *style, uint8_t type,
css_computed_clip_rect *rect)
{
uint8_t *bits;
@@ -369,7 +379,7 @@ static inline css_error set_clip(
bits = &style->uncommon->bits[CLIP_INDEX];
/* 6bits: trblyy : top | right | bottom | left | type */
- *bits = (*bits & ~CLIP_MASK) |
+ *bits = (*bits & ~CLIP_MASK) |
((type & 0x3) << CLIP_SHIFT);
if (type == CSS_CLIP_RECT) {
@@ -404,6 +414,196 @@ static inline css_error set_clip(
#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->uncommon->bits[COLUMN_COUNT_INDEX];
+
+ /* 2bits: tt : type */
+ *bits = (*bits & ~COLUMN_COUNT_MASK) |
+ ((type & 0x3) << COLUMN_COUNT_SHIFT);
+
+ style->uncommon->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->uncommon->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->uncommon->bits[COLUMN_GAP_INDEX];
+
+ /* 6bits: uuuutt : units | type */
+ *bits = (*bits & ~COLUMN_GAP_MASK) |
+ (((type & 0x3) | (unit << 2)) << COLUMN_GAP_SHIFT);
+
+ style->uncommon->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->uncommon->bits[COLUMN_RULE_COLOR_INDEX];
+
+ /* 2bits: type */
+ *bits = (*bits & ~COLUMN_RULE_COLOR_MASK) |
+ ((type & 0x3) << COLUMN_RULE_COLOR_SHIFT);
+
+ style->uncommon->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->uncommon->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->uncommon->bits[COLUMN_RULE_WIDTH_INDEX];
+
+ /* 7bits: uuuuttt : units | type */
+ *bits = (*bits & ~COLUMN_RULE_WIDTH_MASK) |
+ (((type & 0x7) | (unit << 3)) << COLUMN_RULE_WIDTH_SHIFT);
+
+ style->uncommon->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->uncommon->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->uncommon->bits[COLUMN_WIDTH_INDEX];
+
+ /* 6bits: uuuutt : units | type */
+ *bits = (*bits & ~COLUMN_WIDTH_MASK) |
+ (((type & 0x3) | (unit << 2)) << COLUMN_WIDTH_SHIFT);
+
+ style->uncommon->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
@@ -424,7 +624,7 @@ static inline css_error set_content(
*bits = (*bits & ~CONTENT_MASK) |
((type & 0x3) << CONTENT_SHIFT);
- for (c = content; c != NULL &&
+ for (c = content; c != NULL &&
c->type != CSS_COMPUTED_CONTENT_NONE; c++) {
switch (c->type) {
case CSS_COMPUTED_CONTENT_STRING:
@@ -441,9 +641,9 @@ static inline css_error set_content(
lwc_string_ref(c->data.counter.name);
break;
case CSS_COMPUTED_CONTENT_COUNTERS:
- c->data.counters.name =
+ c->data.counters.name =
lwc_string_ref(c->data.counters.name);
- c->data.counters.sep =
+ c->data.counters.sep =
lwc_string_ref(c->data.counters.sep);
break;
default:
@@ -455,7 +655,7 @@ static inline css_error set_content(
/* Free existing array */
if (oldcontent != NULL) {
- for (c = oldcontent;
+ for (c = oldcontent;
c->type != CSS_COMPUTED_CONTENT_NONE; c++) {
switch (c->type) {
case CSS_COMPUTED_CONTENT_STRING:
@@ -493,7 +693,7 @@ static inline css_error set_content(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[VERTICAL_ALIGN_INDEX];
@@ -511,7 +711,7 @@ static inline css_error set_vertical_align(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[FONT_SIZE_INDEX];
@@ -530,7 +730,7 @@ static inline css_error set_font_size(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[BORDER_TOP_WIDTH_INDEX];
@@ -551,7 +751,7 @@ static inline css_error set_border_top_width(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[BORDER_RIGHT_WIDTH_INDEX];
@@ -572,7 +772,7 @@ static inline css_error set_border_right_width(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[BORDER_BOTTOM_WIDTH_INDEX];
@@ -593,7 +793,7 @@ static inline css_error set_border_bottom_width(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[BORDER_LEFT_WIDTH_INDEX];
@@ -614,7 +814,7 @@ static inline css_error set_border_left_width(
#define BACKGROUND_IMAGE_SHIFT 0
#define BACKGROUND_IMAGE_MASK 0x1
static inline css_error set_background_image(
- css_computed_style *style, uint8_t type,
+ css_computed_style *style, uint8_t type,
lwc_string *url)
{
uint8_t *bits = &style->bits[BACKGROUND_IMAGE_INDEX];
@@ -643,7 +843,7 @@ static inline css_error set_background_image(
#define COLOR_SHIFT 0
#define COLOR_MASK 0x1
static inline css_error set_color(
- css_computed_style *style, uint8_t type,
+ css_computed_style *style, uint8_t type,
css_color color)
{
uint8_t *bits = &style->bits[COLOR_INDEX];
@@ -664,7 +864,7 @@ static inline css_error set_color(
#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,
+ css_computed_style *style, uint8_t type,
lwc_string *url)
{
uint8_t *bits = &style->bits[LIST_STYLE_IMAGE_INDEX];
@@ -693,7 +893,7 @@ static inline css_error set_list_style_image(
#define QUOTES_SHIFT 0
#define QUOTES_MASK 0x1
static inline css_error set_quotes(
- css_computed_style *style, uint8_t type,
+ css_computed_style *style, uint8_t type,
lwc_string **quotes)
{
uint8_t *bits = &style->bits[QUOTES_INDEX];
@@ -728,7 +928,7 @@ static inline css_error set_quotes(
#define TOP_SHIFT 2
#define TOP_MASK 0xfc
static inline css_error set_top(
- css_computed_style *style, uint8_t type,
+ css_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[TOP_INDEX];
@@ -749,7 +949,7 @@ static inline css_error set_top(
#define RIGHT_SHIFT 2
#define RIGHT_MASK 0xfc
static inline css_error set_right(
- css_computed_style *style, uint8_t type,
+ css_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[RIGHT_INDEX];
@@ -770,7 +970,7 @@ static inline css_error set_right(
#define BOTTOM_SHIFT 2
#define BOTTOM_MASK 0xfc
static inline css_error set_bottom(
- css_computed_style *style, uint8_t type,
+ css_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[BOTTOM_INDEX];
@@ -791,7 +991,7 @@ static inline css_error set_bottom(
#define LEFT_SHIFT 2
#define LEFT_MASK 0xfc
static inline css_error set_left(
- css_computed_style *style, uint8_t type,
+ css_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[LEFT_INDEX];
@@ -812,7 +1012,7 @@ static inline css_error set_left(
#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_computed_style *style, uint8_t type,
css_color color)
{
uint8_t *bits = &style->bits[BORDER_TOP_COLOR_INDEX];
@@ -833,7 +1033,7 @@ static inline css_error set_border_top_color(
#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_computed_style *style, uint8_t type,
css_color color)
{
uint8_t *bits = &style->bits[BORDER_RIGHT_COLOR_INDEX];
@@ -854,7 +1054,7 @@ static inline css_error set_border_right_color(
#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_computed_style *style, uint8_t type,
css_color color)
{
uint8_t *bits = &style->bits[BORDER_BOTTOM_COLOR_INDEX];
@@ -875,7 +1075,7 @@ static inline css_error set_border_bottom_color(
#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_computed_style *style, uint8_t type,
css_color color)
{
uint8_t *bits = &style->bits[BORDER_LEFT_COLOR_INDEX];
@@ -896,7 +1096,7 @@ static inline css_error set_border_left_color(
#define HEIGHT_SHIFT 2
#define HEIGHT_MASK 0xfc
static inline css_error set_height(
- css_computed_style *style, uint8_t type,
+ css_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[HEIGHT_INDEX];
@@ -917,7 +1117,7 @@ static inline css_error set_height(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[LINE_HEIGHT_INDEX];
@@ -938,7 +1138,7 @@ static inline css_error set_line_height(
#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_computed_style *style, uint8_t type,
css_color color)
{
uint8_t *bits = &style->bits[BACKGROUND_COLOR_INDEX];
@@ -959,7 +1159,7 @@ static inline css_error set_background_color(
#define Z_INDEX_SHIFT 0
#define Z_INDEX_MASK 0x3
static inline css_error set_z_index(
- css_computed_style *style, uint8_t type,
+ css_computed_style *style, uint8_t type,
int32_t z_index)
{
uint8_t *bits = &style->bits[Z_INDEX_INDEX];
@@ -980,7 +1180,7 @@ static inline css_error set_z_index(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[MARGIN_TOP_INDEX];
@@ -1001,7 +1201,7 @@ static inline css_error set_margin_top(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[MARGIN_RIGHT_INDEX];
@@ -1022,7 +1222,7 @@ static inline css_error set_margin_right(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[MARGIN_BOTTOM_INDEX];
@@ -1043,7 +1243,7 @@ static inline css_error set_margin_bottom(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[MARGIN_LEFT_INDEX];
@@ -1136,7 +1336,7 @@ static inline css_error set_direction(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[MAX_HEIGHT_INDEX];
@@ -1157,7 +1357,7 @@ static inline css_error set_max_height(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[MAX_WIDTH_INDEX];
@@ -1178,7 +1378,7 @@ static inline css_error set_max_width(
#define WIDTH_SHIFT 2
#define WIDTH_MASK 0xfc
static inline css_error set_width(
- css_computed_style *style, uint8_t type,
+ css_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[WIDTH_INDEX];
@@ -1253,7 +1453,7 @@ static inline css_error set_font_style(
#define MIN_HEIGHT_SHIFT 3
#define MIN_HEIGHT_MASK 0xf8
static inline css_error set_min_height(
- css_computed_style *style, uint8_t type,
+ css_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[MIN_HEIGHT_INDEX];
@@ -1274,7 +1474,7 @@ static inline css_error set_min_height(
#define MIN_WIDTH_SHIFT 3
#define MIN_WIDTH_MASK 0xf8
static inline css_error set_min_width(
- css_computed_style *style, uint8_t type,
+ css_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[MIN_WIDTH_INDEX];
@@ -1331,7 +1531,7 @@ static inline css_error set_clear(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[PADDING_TOP_INDEX];
@@ -1352,7 +1552,7 @@ static inline css_error set_padding_top(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[PADDING_RIGHT_INDEX];
@@ -1373,7 +1573,7 @@ static inline css_error set_padding_right(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[PADDING_BOTTOM_INDEX];
@@ -1394,7 +1594,7 @@ static inline css_error set_padding_bottom(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[PADDING_LEFT_INDEX];
@@ -1469,7 +1669,7 @@ static inline css_error set_position(
#define OPACITY_SHIFT 2
#define OPACITY_MASK 0x04
static inline css_error set_opacity(
- css_computed_style *style,
+ css_computed_style *style,
uint8_t type, css_fixed opacity)
{
uint8_t *bits = &style->bits[OPACITY_INDEX];
@@ -1508,7 +1708,7 @@ static inline css_error set_text_transform(
#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_computed_style *style, uint8_t type,
css_fixed length, css_unit unit)
{
uint8_t *bits = &style->bits[TEXT_INDENT_INDEX];
@@ -1549,7 +1749,7 @@ static inline css_error set_white_space(
#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_computed_style *style, uint8_t type,
css_fixed hlength, css_unit hunit,
css_fixed vlength, css_unit vunit)
{
@@ -1558,7 +1758,7 @@ static inline css_error set_background_position(
bits = &style->bits[BACKGROUND_POSITION_INDEX];
/* 1 bit: type */
- *bits = (*bits & ~BACKGROUND_POSITION_MASK) |
+ *bits = (*bits & ~BACKGROUND_POSITION_MASK) |
((type & 0x1) << BACKGROUND_POSITION_SHIFT);
bits = &style->bits[BACKGROUND_POSITION_INDEX1];
@@ -1635,7 +1835,7 @@ static inline css_error set_text_decoration(
#define FONT_FAMILY_SHIFT 0
#define FONT_FAMILY_MASK 0x7
static inline css_error set_font_family(
- css_computed_style *style, uint8_t type,
+ css_computed_style *style, uint8_t type,
lwc_string **names)
{
uint8_t *bits = &style->bits[FONT_FAMILY_INDEX];
@@ -1923,9 +2123,9 @@ static inline css_error set_page_break_before(
return CSS_OK;
}
}
-
+
ENSURE_PAGE;
-
+
bits = &style->page->bits[PAGE_BREAK_BEFORE_INDEX];
/* 3bits: type */
@@ -1951,7 +2151,7 @@ static inline css_error set_page_break_inside(
return CSS_OK;
}
}
-
+
ENSURE_PAGE;
bits = &style->page->bits[PAGE_BREAK_INSIDE_INDEX];
@@ -1973,7 +2173,7 @@ 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;
@@ -1981,14 +2181,14 @@ static inline css_error set_orphans(
}
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
@@ -2002,22 +2202,22 @@ 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