summaryrefslogtreecommitdiff
path: root/src/select/computed.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/select/computed.c')
-rw-r--r--src/select/computed.c270
1 files changed, 112 insertions, 158 deletions
diff --git a/src/select/computed.c b/src/select/computed.c
index 506b079..83bbf10 100644
--- a/src/select/computed.c
+++ b/src/select/computed.c
@@ -83,121 +83,87 @@ css_error css__computed_style_create(css_computed_style **result)
}
/**
- * Destroy an uncommon computed style section
+ * Destroy a computed style
*
* \param style Style to destroy
* \return CSS_OK on success, appropriate error otherwise
*/
-css_error css__computed_uncommon_destroy(css_computed_uncommon *uncommon)
+css_error css_computed_style_destroy(css_computed_style *style)
{
- if (uncommon == NULL)
+ if (style == NULL)
return CSS_BADPARM;
- if (uncommon->count > 1) {
- uncommon->count--;
+ if (style->count > 1) {
+ style->count--;
return CSS_OK;
- } else if (uncommon->count == 1) {
- css__arena_remove_uncommon_style(uncommon);
+ } else if (style->count == 1) {
+ css__arena_remove_style(style);
}
- if (uncommon != NULL) {
- if (uncommon->counter_increment != NULL) {
- css_computed_counter *c;
-
- for (c = uncommon->counter_increment;
- c->name != NULL; c++) {
- lwc_string_unref(c->name);
- }
-
- free(uncommon->counter_increment);
- }
-
- if (uncommon->counter_reset != NULL) {
- css_computed_counter *c;
+ if (style->i.aural != NULL) {
+ free(style->i.aural);
+ }
- for (c = uncommon->counter_reset;
- c->name != NULL; c++) {
- lwc_string_unref(c->name);
- }
+ if (style->counter_increment != NULL) {
+ css_computed_counter *c;
- free(uncommon->counter_reset);
+ for (c = style->counter_increment; c->name != NULL; c++) {
+ lwc_string_unref(c->name);
}
- if (uncommon->cursor != NULL) {
- lwc_string **s;
-
- for (s = uncommon->cursor; *s != NULL; s++) {
- lwc_string_unref(*s);
- }
-
- free(uncommon->cursor);
- }
+ free(style->counter_increment);
+ }
- if (uncommon->content != NULL) {
- css_computed_content_item *c;
-
- for (c = uncommon->content;
- 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 (style->counter_reset != NULL) {
+ css_computed_counter *c;
- free(uncommon->content);
+ for (c = style->counter_reset; c->name != NULL; c++) {
+ lwc_string_unref(c->name);
}
- free(uncommon);
+ free(style->counter_reset);
}
- 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->cursor != NULL) {
+ lwc_string **s;
- if (style->count > 1) {
- style->count--;
- return CSS_OK;
+ for (s = style->cursor; *s != NULL; s++) {
+ lwc_string_unref(*s);
+ }
- } else if (style->count == 1) {
- css__arena_remove_style(style);
+ free(style->cursor);
}
- if (style->page != NULL) {
- free(style->page);
- }
+ if (style->content != NULL) {
+ css_computed_content_item *c;
+
+ for (c = style->content;
+ 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 (style->i.aural != NULL) {
- free(style->i.aural);
+ free(style->content);
}
if (style->font_family != NULL) {
@@ -311,15 +277,6 @@ css_error css_computed_style_compose(
switch(prop_dispatch[i].group) {
case GROUP_NORMAL:
break;
- case GROUP_UNCOMMON:
- if (parent->i.uncommon == NULL &&
- child->i.uncommon == NULL)
- continue;
- break;
- case GROUP_PAGE:
- if (parent->page == NULL && child->page == NULL)
- continue;
- break;
case GROUP_AURAL:
if (parent->i.aural == NULL && child->i.aural == NULL)
continue;
@@ -1292,76 +1249,73 @@ css_error css__compute_absolute_values(const css_computed_style *parent,
if (error != CSS_OK)
return error;
- /* Uncommon properties */
- if (style->i.uncommon != NULL) {
- /* Fix up border-spacing */
- error = compute_absolute_length_pair(style,
- &ex_size.data.length,
- get_border_spacing,
- set_border_spacing);
- if (error != CSS_OK)
- return error;
+ /* Fix up border-spacing */
+ error = compute_absolute_length_pair(style,
+ &ex_size.data.length,
+ get_border_spacing,
+ set_border_spacing);
+ if (error != CSS_OK)
+ return error;
- /* Fix up clip */
- error = compute_absolute_clip(style, &ex_size.data.length);
- if (error != CSS_OK)
- return error;
+ /* Fix up clip */
+ error = compute_absolute_clip(style, &ex_size.data.length);
+ if (error != CSS_OK)
+ return error;
- /* Fix up letter-spacing */
- error = compute_absolute_length(style,
- &ex_size.data.length,
- get_letter_spacing,
- set_letter_spacing);
- if (error != CSS_OK)
- return error;
+ /* Fix up letter-spacing */
+ error = compute_absolute_length(style,
+ &ex_size.data.length,
+ get_letter_spacing,
+ set_letter_spacing);
+ if (error != CSS_OK)
+ return error;
- /* Fix up outline-color */
- error = compute_absolute_color(style,
- get_outline_color,
- set_outline_color);
- if (error != CSS_OK)
- return error;
+ /* Fix up outline-color */
+ error = compute_absolute_color(style,
+ get_outline_color,
+ set_outline_color);
+ if (error != CSS_OK)
+ return error;
- /* Fix up outline-width */
- error = compute_absolute_border_side_width(style,
- &ex_size.data.length,
- get_outline_width,
- set_outline_width);
- if (error != CSS_OK)
- return error;
+ /* Fix up outline-width */
+ error = compute_absolute_border_side_width(style,
+ &ex_size.data.length,
+ get_outline_width,
+ set_outline_width);
+ if (error != CSS_OK)
+ return error;
- /* Fix up word-spacing */
- error = compute_absolute_length(style,
- &ex_size.data.length,
- get_word_spacing,
- set_word_spacing);
- if (error != CSS_OK)
- return error;
+ /* Fix up word-spacing */
+ error = compute_absolute_length(style,
+ &ex_size.data.length,
+ get_word_spacing,
+ set_word_spacing);
+ if (error != CSS_OK)
+ return error;
- /* Fix up column-rule-width */
- error = compute_absolute_border_side_width(style,
- &ex_size.data.length,
- get_column_rule_width,
- set_column_rule_width);
- if (error != CSS_OK)
+ /* Fix up column-rule-width */
+ error = compute_absolute_border_side_width(style,
+ &ex_size.data.length,
+ get_column_rule_width,
+ set_column_rule_width);
+ if (error != CSS_OK)
return error;
- /* Fix up column-width */
- error = compute_absolute_length(style,
- &ex_size.data.length,
- get_column_width,
- set_column_width);
- if (error != CSS_OK)
+ /* Fix up column-width */
+ error = compute_absolute_length(style,
+ &ex_size.data.length,
+ get_column_width,
+ set_column_width);
+ if (error != CSS_OK)
return error;
- /* Fix up column-gap */
- error = compute_absolute_length(style,
- &ex_size.data.length,
- get_column_gap,
- set_column_gap);
- if (error != CSS_OK)
- return error;
- }
+ /* Fix up column-gap */
+ error = compute_absolute_length(style,
+ &ex_size.data.length,
+ get_column_gap,
+ set_column_gap);
+ if (error != CSS_OK)
+ return error;
return CSS_OK;
}