diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2011-01-29 17:53:22 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2011-01-29 17:53:22 +0000 |
commit | 1b13f81b8259f4416df7b3063cb280cb977722d7 (patch) | |
tree | 5e34f4150c1fc3bcdcd436781f4799571a40cbd4 /src/select/properties | |
parent | 9838246d69a3d48a8d0d286ecbfcd1faa199ae91 (diff) | |
download | libcss-1b13f81b8259f4416df7b3063cb280cb977722d7.tar.gz libcss-1b13f81b8259f4416df7b3063cb280cb977722d7.tar.bz2 |
Centralise handling of transparent colours.
Add support for currentColor
svn path=/trunk/libcss/; revision=11525
Diffstat (limited to 'src/select/properties')
-rw-r--r-- | src/select/properties/background_color.c | 2 | ||||
-rw-r--r-- | src/select/properties/border_bottom_color.c | 2 | ||||
-rw-r--r-- | src/select/properties/border_left_color.c | 2 | ||||
-rw-r--r-- | src/select/properties/border_right_color.c | 2 | ||||
-rw-r--r-- | src/select/properties/border_top_color.c | 2 | ||||
-rw-r--r-- | src/select/properties/color.c | 25 | ||||
-rw-r--r-- | src/select/properties/helpers.c | 9 | ||||
-rw-r--r-- | src/select/properties/outline_color.c | 6 |
8 files changed, 36 insertions, 14 deletions
diff --git a/src/select/properties/background_color.c b/src/select/properties/background_color.c index e71fc7d..07ba82e 100644 --- a/src/select/properties/background_color.c +++ b/src/select/properties/background_color.c @@ -29,7 +29,7 @@ css_error css__set_background_color_from_hint(const css_hint *hint, css_error css__initial_background_color(css_select_state *state) { return set_background_color(state->computed, - CSS_BACKGROUND_COLOR_TRANSPARENT, 0); + CSS_BACKGROUND_COLOR_COLOR, 0); } css_error css__compose_background_color(const css_computed_style *parent, diff --git a/src/select/properties/border_bottom_color.c b/src/select/properties/border_bottom_color.c index 0df95cc..2e63982 100644 --- a/src/select/properties/border_bottom_color.c +++ b/src/select/properties/border_bottom_color.c @@ -30,7 +30,7 @@ css_error css__set_border_bottom_color_from_hint(const css_hint *hint, css_error css__initial_border_bottom_color(css_select_state *state) { return set_border_bottom_color(state->computed, - CSS_BORDER_COLOR_INITIAL, 0); + CSS_BORDER_COLOR_CURRENT_COLOR, 0); } css_error css__compose_border_bottom_color(const css_computed_style *parent, diff --git a/src/select/properties/border_left_color.c b/src/select/properties/border_left_color.c index ea631ee..cf08257 100644 --- a/src/select/properties/border_left_color.c +++ b/src/select/properties/border_left_color.c @@ -30,7 +30,7 @@ css_error css__set_border_left_color_from_hint(const css_hint *hint, css_error css__initial_border_left_color(css_select_state *state) { return set_border_left_color(state->computed, - CSS_BORDER_COLOR_INITIAL, 0); + CSS_BORDER_COLOR_CURRENT_COLOR, 0); } css_error css__compose_border_left_color(const css_computed_style *parent, diff --git a/src/select/properties/border_right_color.c b/src/select/properties/border_right_color.c index 5f9b6ca..1829784 100644 --- a/src/select/properties/border_right_color.c +++ b/src/select/properties/border_right_color.c @@ -30,7 +30,7 @@ css_error css__set_border_right_color_from_hint(const css_hint *hint, css_error css__initial_border_right_color(css_select_state *state) { return set_border_right_color(state->computed, - CSS_BORDER_COLOR_INITIAL, 0); + CSS_BORDER_COLOR_CURRENT_COLOR, 0); } css_error css__compose_border_right_color(const css_computed_style *parent, diff --git a/src/select/properties/border_top_color.c b/src/select/properties/border_top_color.c index 328ce67..1517eea 100644 --- a/src/select/properties/border_top_color.c +++ b/src/select/properties/border_top_color.c @@ -28,7 +28,7 @@ css_error css__set_border_top_color_from_hint(const css_hint *hint, css_error css__initial_border_top_color(css_select_state *state) { - return set_border_top_color(state->computed, CSS_BORDER_COLOR_INITIAL, 0); + return set_border_top_color(state->computed, CSS_BORDER_COLOR_CURRENT_COLOR, 0); } css_error css__compose_border_top_color(const css_computed_style *parent, diff --git a/src/select/properties/color.c b/src/select/properties/color.c index 3cd1e3d..dad2b9d 100644 --- a/src/select/properties/color.c +++ b/src/select/properties/color.c @@ -17,17 +17,30 @@ css_error css__cascade_color(uint32_t opv, css_style *style, css_select_state *state) { + bool inherit = isInherit(opv); uint16_t value = CSS_COLOR_INHERIT; css_color color = 0; - if (isInherit(opv) == false) { - value = CSS_COLOR_COLOR; - color = *((css_color *) style->bytecode); - advance_bytecode(style, sizeof(color)); + if (inherit == false) { + switch (getValue(opv)) { + case COLOR_TRANSPARENT: + value = CSS_COLOR_COLOR; + break; + case COLOR_CURRENT_COLOR: + /* color: currentColor always computes to inherit */ + value = CSS_COLOR_INHERIT; + inherit = true; + break; + case COLOR_SET: + value = CSS_COLOR_COLOR; + color = *((css_color *) style->bytecode); + advance_bytecode(style, sizeof(color)); + break; + } } - if (css__outranks_existing(getOpcode(opv), isImportant(opv), state, - isInherit(opv))) { + if (css__outranks_existing(getOpcode(opv), isImportant(opv), state, + inherit)) { return set_color(state->computed, value, color); } diff --git a/src/select/properties/helpers.c b/src/select/properties/helpers.c index 9635dd8..3851b36 100644 --- a/src/select/properties/helpers.c +++ b/src/select/properties/helpers.c @@ -53,14 +53,17 @@ css_error css__cascade_bg_border_color(uint32_t opv, css_style *style, css_color color = 0; assert(CSS_BACKGROUND_COLOR_INHERIT == CSS_BORDER_COLOR_INHERIT); - assert(CSS_BACKGROUND_COLOR_TRANSPARENT == - CSS_BORDER_COLOR_TRANSPARENT); assert(CSS_BACKGROUND_COLOR_COLOR == CSS_BORDER_COLOR_COLOR); + assert(CSS_BACKGROUND_COLOR_CURRENT_COLOR == + CSS_BORDER_COLOR_CURRENT_COLOR); if (isInherit(opv) == false) { switch (getValue(opv)) { case BACKGROUND_COLOR_TRANSPARENT: - value = CSS_BACKGROUND_COLOR_TRANSPARENT; + value = CSS_BACKGROUND_COLOR_COLOR; + break; + case BACKGROUND_COLOR_CURRENT_COLOR: + value = CSS_BACKGROUND_COLOR_CURRENT_COLOR; break; case BACKGROUND_COLOR_SET: value = CSS_BACKGROUND_COLOR_COLOR; diff --git a/src/select/properties/outline_color.c b/src/select/properties/outline_color.c index dced1d8..36aafd7 100644 --- a/src/select/properties/outline_color.c +++ b/src/select/properties/outline_color.c @@ -22,6 +22,12 @@ css_error css__cascade_outline_color(uint32_t opv, css_style *style, if (isInherit(opv) == false) { switch (getValue(opv)) { + case OUTLINE_COLOR_TRANSPARENT: + value = CSS_OUTLINE_COLOR_COLOR; + break; + case OUTLINE_COLOR_CURRENT_COLOR: + value = CSS_OUTLINE_COLOR_CURRENT_COLOR; + break; case OUTLINE_COLOR_SET: value = CSS_OUTLINE_COLOR_COLOR; color = *((css_color *) style->bytecode); |