diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2015-03-07 21:34:23 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2016-11-19 14:30:07 +0000 |
commit | 70411030b0c35e2886fe29eef0fb832f259190b8 (patch) | |
tree | fde14bb2e949c343f8d578561810142d8691c896 /src/select/computed.c | |
parent | 2786e780f20eb45f3ee3f18585d23555a06a1431 (diff) | |
download | libcss-70411030b0c35e2886fe29eef0fb832f259190b8.tar.gz libcss-70411030b0c35e2886fe29eef0fb832f259190b8.tar.bz2 |
Move trivially compared parts of computed styles to sub-structures.
Diffstat (limited to 'src/select/computed.c')
-rw-r--r-- | src/select/computed.c | 82 |
1 files changed, 51 insertions, 31 deletions
diff --git a/src/select/computed.c b/src/select/computed.c index dc632f9..817da31 100644 --- a/src/select/computed.c +++ b/src/select/computed.c @@ -75,59 +75,61 @@ css_error css_computed_style_create(css_computed_style **result) if (s == NULL) return CSS_NOMEM; + s->bin = UINT32_MAX; *result = s; return CSS_OK; } /** - * Destroy a computed style + * Destroy an uncommon computed style section * * \param style Style to destroy * \return CSS_OK on success, appropriate error otherwise */ -css_error css_computed_style_destroy(css_computed_style *style) +css_error css__computed_uncommon_destroy(css_computed_uncommon *uncommon) { - if (style == NULL) + if (uncommon == NULL) return CSS_BADPARM; - if (style->uncommon != NULL) { - if (style->uncommon->counter_increment != NULL) { + + if (uncommon != NULL) { + if (uncommon->counter_increment != NULL) { css_computed_counter *c; - for (c = style->uncommon->counter_increment; + for (c = uncommon->counter_increment; c->name != NULL; c++) { lwc_string_unref(c->name); } - free(style->uncommon->counter_increment); + free(uncommon->counter_increment); } - if (style->uncommon->counter_reset != NULL) { + if (uncommon->counter_reset != NULL) { css_computed_counter *c; - for (c = style->uncommon->counter_reset; + for (c = uncommon->counter_reset; c->name != NULL; c++) { lwc_string_unref(c->name); } - free(style->uncommon->counter_reset); + free(uncommon->counter_reset); } - if (style->uncommon->cursor != NULL) { + if (uncommon->cursor != NULL) { lwc_string **s; - for (s = style->uncommon->cursor; *s != NULL; s++) { + for (s = uncommon->cursor; *s != NULL; s++) { lwc_string_unref(*s); } - free(style->uncommon->cursor); + free(uncommon->cursor); } - if (style->uncommon->content != NULL) { + if (uncommon->content != NULL) { css_computed_content_item *c; - for (c = style->uncommon->content; + for (c = uncommon->content; c->type != CSS_COMPUTED_CONTENT_NONE; c++) { switch (c->type) { @@ -152,18 +154,35 @@ css_error css_computed_style_destroy(css_computed_style *style) } } - free(style->uncommon->content); + free(uncommon->content); } - free(style->uncommon); + free(uncommon); } + return CSS_OK; +} + +/** + * Destroy a computed style + * + * \param style Style to destroy + * \return CSS_OK on success, appropriate error otherwise + */ +css_error css_computed_style_destroy(css_computed_style *style) +{ + if (style == NULL) + return CSS_BADPARM; + + css__computed_uncommon_destroy(style->i.uncommon); + + if (style->page != NULL) { free(style->page); } - if (style->aural != NULL) { - free(style->aural); + if (style->i.aural != NULL) { + free(style->i.aural); } if (style->font_family != NULL) { @@ -186,11 +205,11 @@ css_error css_computed_style_destroy(css_computed_style *style) free(style->quotes); } - if (style->list_style_image != NULL) - lwc_string_unref(style->list_style_image); + if (style->i.list_style_image != NULL) + lwc_string_unref(style->i.list_style_image); - if (style->background_image != NULL) - lwc_string_unref(style->background_image); + if (style->i.background_image != NULL) + lwc_string_unref(style->i.background_image); free(style); @@ -264,8 +283,8 @@ css_error css_computed_style_compose(const css_computed_style *parent, for (i = 0; i < CSS_N_PROPERTIES; i++) { /* Skip any in extension blocks if the block does not exist */ if (prop_dispatch[i].group == GROUP_UNCOMMON && - parent->uncommon == NULL && - child->uncommon == NULL) + parent->i.uncommon == NULL && + child->i.uncommon == NULL) continue; if (prop_dispatch[i].group == GROUP_PAGE && @@ -273,7 +292,8 @@ css_error css_computed_style_compose(const css_computed_style *parent, continue; if (prop_dispatch[i].group == GROUP_AURAL && - parent->aural == NULL && child->aural == NULL) + parent->i.aural == NULL && + child->i.aural == NULL) continue; /* Compose the property */ @@ -444,7 +464,7 @@ uint8_t css_computed_top(const css_computed_style *style, *unit = CSS_UNIT_PX; } else if (top == CSS_TOP_AUTO) { /* Top is auto => -bottom */ - *length = -style->bottom; + *length = -style->i.bottom; *unit = (css_unit) (bottom >> 2); } @@ -474,7 +494,7 @@ uint8_t css_computed_right(const css_computed_style *style, *unit = CSS_UNIT_PX; } else if (right == CSS_RIGHT_AUTO) { /* Right is auto => -left */ - *length = -style->left; + *length = -style->i.left; *unit = (css_unit) (left >> 2); } else { /** \todo Consider containing block's direction @@ -508,7 +528,7 @@ uint8_t css_computed_bottom(const css_computed_style *style, } else if (bottom == CSS_BOTTOM_AUTO || (top & 0x3) != CSS_TOP_AUTO) { /* Bottom is auto or top is not auto => -top */ - *length = -style->top; + *length = -style->i.top; *unit = (css_unit) (top >> 2); } @@ -538,7 +558,7 @@ uint8_t css_computed_left(const css_computed_style *style, *unit = CSS_UNIT_PX; } else if (left == CSS_LEFT_AUTO) { /* Left is auto => -right */ - *length = -style->right; + *length = -style->i.right; *unit = (css_unit) (right >> 2); } else { /** \todo Consider containing block's direction @@ -1144,7 +1164,7 @@ css_error css__compute_absolute_values(const css_computed_style *parent, return error; /* Uncommon properties */ - if (style->uncommon != NULL) { + if (style->i.uncommon != NULL) { /* Fix up border-spacing */ error = compute_absolute_length_pair(style, &ex_size.data.length, |