diff options
Diffstat (limited to 'css')
-rw-r--r-- | css/css.c | 12 | ||||
-rw-r--r-- | css/css.h | 6 | ||||
-rw-r--r-- | css/ruleset.c | 7 |
3 files changed, 18 insertions, 7 deletions
@@ -180,7 +180,7 @@ const struct css_style css_base_style = { CSS_FONT_STYLE_NORMAL, CSS_FONT_VARIANT_NORMAL, CSS_FONT_WEIGHT_NORMAL, - { CSS_HEIGHT_AUTO, { 1, CSS_UNIT_EM } }, + { CSS_HEIGHT_AUTO, { { 1, CSS_UNIT_EM } } }, { CSS_LETTER_SPACING_NORMAL, { 0, CSS_UNIT_PX } }, { CSS_LINE_HEIGHT_ABSOLUTE, { 1.33 } }, { CSS_LIST_STYLE_IMAGE_NONE, 0 }, @@ -265,7 +265,7 @@ const struct css_style css_empty_style = { CSS_FONT_STYLE_NOT_SET, CSS_FONT_VARIANT_NOT_SET, CSS_FONT_WEIGHT_NOT_SET, - { CSS_HEIGHT_NOT_SET, { 1, CSS_UNIT_EM } }, + { CSS_HEIGHT_NOT_SET, { { 1, CSS_UNIT_EM } } }, { CSS_LETTER_SPACING_NOT_SET, { 0, CSS_UNIT_PX } }, { CSS_LINE_HEIGHT_NOT_SET, { 1.33 } }, { CSS_LIST_STYLE_IMAGE_NOT_SET, 0 }, @@ -351,7 +351,7 @@ const struct css_style css_blank_style = { CSS_FONT_STYLE_INHERIT, CSS_FONT_VARIANT_INHERIT, CSS_FONT_WEIGHT_INHERIT, - { CSS_HEIGHT_AUTO, { 1, CSS_UNIT_EM } }, + { CSS_HEIGHT_AUTO, { { 1, CSS_UNIT_EM } } }, { CSS_LETTER_SPACING_INHERIT, { 0, CSS_UNIT_PX } }, { CSS_LINE_HEIGHT_INHERIT, { 1.33 } }, { CSS_LIST_STYLE_IMAGE_INHERIT, 0 }, @@ -1903,7 +1903,11 @@ void css_dump_style(FILE *stream, const struct css_style * const style) fprintf(stream, "auto"); break; case CSS_HEIGHT_LENGTH: - css_dump_length(stream, &style->height.length); + css_dump_length(stream, &style->height.value.length); + break; + case CSS_HEIGHT_PERCENT: + fprintf(stream, "%g%%", + style->height.value.percent); break; default: fprintf(stream, "UNKNOWN"); @@ -279,8 +279,12 @@ struct css_style { enum { CSS_HEIGHT_INHERIT, CSS_HEIGHT_AUTO, CSS_HEIGHT_LENGTH, + CSS_HEIGHT_PERCENT, CSS_HEIGHT_NOT_SET } height; - struct css_length length; + union { + struct css_length length; + float percent; + } value; } height; struct { diff --git a/css/ruleset.c b/css/ruleset.c index 4529fba8d..d04f62359 100644 --- a/css/ruleset.c +++ b/css/ruleset.c @@ -2228,8 +2228,11 @@ void parse_height(struct css_style * const s, const struct css_node * const v) if (v->type == CSS_NODE_IDENT && v->data_length == 4 && strncasecmp(v->data, "auto", 4) == 0) s->height.height = CSS_HEIGHT_AUTO; - else if ((v->type == CSS_NODE_DIMENSION || v->type == CSS_NODE_NUMBER) && - parse_length(&s->height.length, v, true) == 0) + else if (v->type == CSS_NODE_PERCENTAGE) { + s->height.height = CSS_HEIGHT_PERCENT; + s->height.value.percent = atof(v->data); + } else if ((v->type == CSS_NODE_DIMENSION || v->type == CSS_NODE_NUMBER) && + parse_length(&s->height.value.length, v, true) == 0) s->height.height = CSS_HEIGHT_LENGTH; } |