aboutsummaryrefslogtreecommitdiff
path: root/src/styleengine.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/styleengine.cc')
-rw-r--r--src/styleengine.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/styleengine.cc b/src/styleengine.cc
index 3831fb3b..171523e0 100644
--- a/src/styleengine.cc
+++ b/src/styleengine.cc
@@ -287,12 +287,11 @@ void StyleEngine::apply (StyleAttrs *attrs, CssPropertyList *props) {
case CssProperty::CSS_PROPERTY_VERTICAL_ALIGN:
attrs->valign = (VAlignType) p->value.intVal;
break;
- /* \todo proper conversion from CssLength to dw::core::style::Length */
case CssProperty::CSS_PROPERTY_WIDTH:
- attrs->width = p->value.intVal;
+ attrs->width = computeLength (p->value.intVal, attrs->font);
break;
case CssProperty::CSS_PROPERTY_HEIGHT:
- attrs->height = p->value.intVal;
+ attrs->height = computeLength (p->value.intVal, attrs->font);
break;
case CssProperty::PROPERTY_X_LINK:
attrs->x_link = p->value.intVal;
@@ -338,6 +337,12 @@ int StyleEngine::computeValue (CssLength value, Font *font) {
return ret;
}
+dw::core::style::Length StyleEngine::computeLength (CssLength value, Font *font) {
+ if (CSS_LENGTH_TYPE (value) == CSS_LENGTH_TYPE_PERCENTAGE)
+ return createPerLength (CSS_LENGTH_VALUE (value));
+ else
+ return createAbsLength (computeValue (value, font));
+}
/**
* \brief Create a new style object based on the previously opened / closed