diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2014-06-01 18:32:37 +0100 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2014-06-01 18:32:37 +0100 |
commit | c6d7f24987a90bc61e408c4249a6a212276b4174 (patch) | |
tree | 75a3f5478618e0e583db6f168193e7645c012dda /src/select/properties | |
parent | 89a4d061a46490d5fad3792a565a1a0114c400e0 (diff) | |
download | libcss-c6d7f24987a90bc61e408c4249a6a212276b4174.tar.gz libcss-c6d7f24987a90bc61e408c4249a6a212276b4174.tar.bz2 |
Add support for CSS3 overflow-x and overflow-y properties.
Now, overflow is a shorthand property setting both overflow-x and
overflow-y.
The getter for the computed overflow has been removed, and replaced
with two for overflow-x and overflow-y.
Diffstat (limited to 'src/select/properties')
-rw-r--r-- | src/select/properties/Makefile | 3 | ||||
-rw-r--r-- | src/select/properties/overflow_x.c (renamed from src/select/properties/overflow.c) | 20 | ||||
-rw-r--r-- | src/select/properties/overflow_y.c | 72 | ||||
-rw-r--r-- | src/select/properties/properties.h | 3 |
4 files changed, 86 insertions, 12 deletions
diff --git a/src/select/properties/Makefile b/src/select/properties/Makefile index 8905695..ce3ddfa 100644 --- a/src/select/properties/Makefile +++ b/src/select/properties/Makefile @@ -72,7 +72,8 @@ orphans.c \ outline_color.c \ outline_style.c \ outline_width.c \ -overflow.c \ +overflow_x.c \ +overflow_y.c \ padding_bottom.c \ padding_left.c \ padding_right.c \ diff --git a/src/select/properties/overflow.c b/src/select/properties/overflow_x.c index 7d7d0a9..0173f5a 100644 --- a/src/select/properties/overflow.c +++ b/src/select/properties/overflow_x.c @@ -14,7 +14,7 @@ #include "select/properties/properties.h" #include "select/properties/helpers.h" -css_error css__cascade_overflow(uint32_t opv, css_style *style, +css_error css__cascade_overflow_x(uint32_t opv, css_style *style, css_select_state *state) { uint16_t value = CSS_OVERFLOW_INHERIT; @@ -40,33 +40,33 @@ css_error css__cascade_overflow(uint32_t opv, css_style *style, if (css__outranks_existing(getOpcode(opv), isImportant(opv), state, isInherit(opv))) { - return set_overflow(state->computed, value); + return set_overflow_x(state->computed, value); } return CSS_OK; } -css_error css__set_overflow_from_hint(const css_hint *hint, +css_error css__set_overflow_x_from_hint(const css_hint *hint, css_computed_style *style) { - return set_overflow(style, hint->status); + return set_overflow_x(style, hint->status); } -css_error css__initial_overflow(css_select_state *state) +css_error css__initial_overflow_x(css_select_state *state) { - return set_overflow(state->computed, CSS_OVERFLOW_VISIBLE); + return set_overflow_x(state->computed, CSS_OVERFLOW_VISIBLE); } -css_error css__compose_overflow(const css_computed_style *parent, +css_error css__compose_overflow_x(const css_computed_style *parent, const css_computed_style *child, css_computed_style *result) { - uint8_t type = get_overflow(child); + uint8_t type = get_overflow_x(child); if (type == CSS_OVERFLOW_INHERIT) { - type = get_overflow(parent); + type = get_overflow_x(parent); } - return set_overflow(result, type); + return set_overflow_x(result, type); } diff --git a/src/select/properties/overflow_y.c b/src/select/properties/overflow_y.c new file mode 100644 index 0000000..13213b5 --- /dev/null +++ b/src/select/properties/overflow_y.c @@ -0,0 +1,72 @@ +/* + * This file is part of LibCSS + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2009 John-Mark Bell <jmb@netsurf-browser.org> + */ + +#include "bytecode/bytecode.h" +#include "bytecode/opcodes.h" +#include "select/propset.h" +#include "select/propget.h" +#include "utils/utils.h" + +#include "select/properties/properties.h" +#include "select/properties/helpers.h" + +css_error css__cascade_overflow_y(uint32_t opv, css_style *style, + css_select_state *state) +{ + uint16_t value = CSS_OVERFLOW_INHERIT; + + UNUSED(style); + + if (isInherit(opv) == false) { + switch (getValue(opv)) { + case OVERFLOW_VISIBLE: + value = CSS_OVERFLOW_VISIBLE; + break; + case OVERFLOW_HIDDEN: + value = CSS_OVERFLOW_HIDDEN; + break; + case OVERFLOW_SCROLL: + value = CSS_OVERFLOW_SCROLL; + break; + case OVERFLOW_AUTO: + value = CSS_OVERFLOW_AUTO; + break; + } + } + + if (css__outranks_existing(getOpcode(opv), isImportant(opv), state, + isInherit(opv))) { + return set_overflow_y(state->computed, value); + } + + return CSS_OK; +} + +css_error css__set_overflow_y_from_hint(const css_hint *hint, + css_computed_style *style) +{ + return set_overflow_y(style, hint->status); +} + +css_error css__initial_overflow_y(css_select_state *state) +{ + return set_overflow_y(state->computed, CSS_OVERFLOW_VISIBLE); +} + +css_error css__compose_overflow_y(const css_computed_style *parent, + const css_computed_style *child, + css_computed_style *result) +{ + uint8_t type = get_overflow_y(child); + + if (type == CSS_OVERFLOW_INHERIT) { + type = get_overflow_y(parent); + } + + return set_overflow_y(result, type); +} + diff --git a/src/select/properties/properties.h b/src/select/properties/properties.h index 63cdb17..f0ab29d 100644 --- a/src/select/properties/properties.h +++ b/src/select/properties/properties.h @@ -93,7 +93,8 @@ PROPERTY_FUNCS(orphans); PROPERTY_FUNCS(outline_color); PROPERTY_FUNCS(outline_style); PROPERTY_FUNCS(outline_width); -PROPERTY_FUNCS(overflow); +PROPERTY_FUNCS(overflow_x); +PROPERTY_FUNCS(overflow_y); PROPERTY_FUNCS(padding_top); PROPERTY_FUNCS(padding_right); PROPERTY_FUNCS(padding_bottom); |