aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcorvid <corvid@lavabit.com>2010-12-14 21:29:02 +0000
committercorvid <corvid@lavabit.com>2010-12-14 21:29:02 +0000
commita1710b89ec0879331799d56f56521e4579508a69 (patch)
treee4232e3cf578969699c4fe7391dee7c436123755 /src
parent98c153b0a488073129aaed38a0b25e75df288ca9 (diff)
border-color: transparent
Diffstat (limited to 'src')
-rw-r--r--src/cssparser.cc16
-rw-r--r--src/styleengine.cc30
2 files changed, 29 insertions, 17 deletions
diff --git a/src/cssparser.cc b/src/cssparser.cc
index c9cd1327..16efc487 100644
--- a/src/cssparser.cc
+++ b/src/cssparser.cc
@@ -51,6 +51,10 @@ static const char *const Css_border_collapse_enum_vals[] = {
"separate", "collapse", NULL
};
+static const char *const Css_border_color_enum_vals[] = {
+ "transparent", NULL
+};
+
static const char *const Css_border_style_enum_vals[] = {
"none", "hidden", "dotted", "dashed", "solid", "double", "groove",
"ridge", "inset", "outset", NULL
@@ -136,25 +140,29 @@ const CssPropertyInfo Css_property_info[CSS_PROPERTY_LAST] = {
{"background-image", {CSS_TYPE_UNUSED}, NULL},
{"background-position", {CSS_TYPE_UNUSED}, NULL},
{"background-repeat", {CSS_TYPE_UNUSED}, NULL},
- {"border-bottom-color", {CSS_TYPE_COLOR, CSS_TYPE_UNUSED}, NULL},
+ {"border-bottom-color", {CSS_TYPE_ENUM, CSS_TYPE_COLOR, CSS_TYPE_UNUSED},
+ Css_border_color_enum_vals},
{"border-bottom-style", {CSS_TYPE_ENUM, CSS_TYPE_UNUSED},
Css_border_style_enum_vals},
{"border-bottom-width", {CSS_TYPE_ENUM, CSS_TYPE_LENGTH, CSS_TYPE_UNUSED},
Css_border_width_enum_vals},
{"border-collapse", {CSS_TYPE_ENUM, CSS_TYPE_UNUSED},
Css_border_collapse_enum_vals},
- {"border-left-color", {CSS_TYPE_COLOR, CSS_TYPE_UNUSED}, NULL},
+ {"border-left-color", {CSS_TYPE_ENUM, CSS_TYPE_COLOR, CSS_TYPE_UNUSED},
+ Css_border_color_enum_vals},
{"border-left-style", {CSS_TYPE_ENUM, CSS_TYPE_UNUSED},
Css_border_style_enum_vals},
{"border-left-width", {CSS_TYPE_ENUM, CSS_TYPE_LENGTH, CSS_TYPE_UNUSED},
Css_border_width_enum_vals},
- {"border-right-color", {CSS_TYPE_COLOR, CSS_TYPE_UNUSED}, NULL},
+ {"border-right-color", {CSS_TYPE_ENUM, CSS_TYPE_COLOR, CSS_TYPE_UNUSED},
+ Css_border_color_enum_vals},
{"border-right-style", {CSS_TYPE_ENUM, CSS_TYPE_UNUSED},
Css_border_style_enum_vals},
{"border-rigth-width", {CSS_TYPE_ENUM, CSS_TYPE_LENGTH, CSS_TYPE_UNUSED},
Css_border_width_enum_vals},
{"border-spacing", {CSS_TYPE_LENGTH, CSS_TYPE_UNUSED}, NULL},
- {"border-top-color", {CSS_TYPE_COLOR, CSS_TYPE_UNUSED}, NULL},
+ {"border-top-color", {CSS_TYPE_ENUM, CSS_TYPE_COLOR, CSS_TYPE_UNUSED},
+ Css_border_color_enum_vals},
{"border-top-style", {CSS_TYPE_ENUM, CSS_TYPE_UNUSED},
Css_border_style_enum_vals},
{"border-top-width", {CSS_TYPE_ENUM, CSS_TYPE_LENGTH, CSS_TYPE_UNUSED},
diff --git a/src/styleengine.cc b/src/styleengine.cc
index 7a297925..9e859aa0 100644
--- a/src/styleengine.cc
+++ b/src/styleengine.cc
@@ -234,6 +234,10 @@ void StyleEngine::preprocessAttrs (dw::core::style::StyleAttrs *attrs) {
attrs->valign = stack->getRef (stack->size () - 2)->style->valign;
}
+ attrs->borderColor.top = (Color *) -1;
+ attrs->borderColor.bottom = (Color *) -1;
+ attrs->borderColor.left = (Color *) -1;
+ attrs->borderColor.right = (Color *) -1;
/* initial value of border-width is 'medium' */
attrs->borderWidth.top = 2;
attrs->borderWidth.bottom = 2;
@@ -242,14 +246,14 @@ void StyleEngine::preprocessAttrs (dw::core::style::StyleAttrs *attrs) {
}
void StyleEngine::postprocessAttrs (dw::core::style::StyleAttrs *attrs) {
- /* if border-color is not specified use color as computed value */
- if (attrs->borderColor.top == NULL)
+ /* if border-color is not specified, use color as computed value */
+ if (attrs->borderColor.top == (Color *) -1)
attrs->borderColor.top = attrs->color;
- if (attrs->borderColor.bottom == NULL)
+ if (attrs->borderColor.bottom == (Color *) -1)
attrs->borderColor.bottom = attrs->color;
- if (attrs->borderColor.left == NULL)
+ if (attrs->borderColor.left == (Color *) -1)
attrs->borderColor.left = attrs->color;
- if (attrs->borderColor.right == NULL)
+ if (attrs->borderColor.right == (Color *) -1)
attrs->borderColor.right = attrs->color;
/* computed value of border-width is 0 if border-style
is 'none' or 'hidden' */
@@ -438,20 +442,20 @@ void StyleEngine::apply (int i, StyleAttrs *attrs, CssPropertyList *props) {
attrs->borderCollapse = (BorderCollapse) p->value.intVal;
break;
case CSS_PROPERTY_BORDER_TOP_COLOR:
- attrs->borderColor.top =
- Color::create (layout, p->value.intVal);
+ attrs->borderColor.top = (p->type == CSS_TYPE_ENUM) ? NULL :
+ Color::create (layout, p->value.intVal);
break;
case CSS_PROPERTY_BORDER_BOTTOM_COLOR:
- attrs->borderColor.bottom =
- Color::create (layout, p->value.intVal);
+ attrs->borderColor.bottom = (p->type == CSS_TYPE_ENUM) ? NULL :
+ Color::create (layout, p->value.intVal);
break;
case CSS_PROPERTY_BORDER_LEFT_COLOR:
- attrs->borderColor.left =
- Color::create (layout, p->value.intVal);
+ attrs->borderColor.left = (p->type == CSS_TYPE_ENUM) ? NULL :
+ Color::create (layout, p->value.intVal);
break;
case CSS_PROPERTY_BORDER_RIGHT_COLOR:
- attrs->borderColor.right =
- Color::create (layout, p->value.intVal);
+ attrs->borderColor.right = (p->type == CSS_TYPE_ENUM) ? NULL :
+ Color::create (layout, p->value.intVal);
break;
case CSS_PROPERTY_BORDER_BOTTOM_STYLE:
attrs->borderStyle.bottom = (BorderStyle) p->value.intVal;