aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/css.cc8
-rw-r--r--src/css.hh38
-rw-r--r--src/cssparser.cc14
-rw-r--r--src/cssparser.hh26
-rw-r--r--src/html.cc89
-rw-r--r--src/table.cc64
6 files changed, 137 insertions, 102 deletions
diff --git a/src/css.cc b/src/css.cc
index 3a3c8ccf..b9f0cd40 100644
--- a/src/css.cc
+++ b/src/css.cc
@@ -30,7 +30,8 @@ CssPropertyList::~CssPropertyList () {
getRef (i)->free ();
}
-void CssPropertyList::set (CssPropertyName name, CssPropertyValue value) {
+void CssPropertyList::set (CssPropertyName name, CssValueType type,
+ CssPropertyValue value) {
for (int i = 0; i < size (); i++)
if (getRef (i)->name == name) {
if (ownerOfStrings)
@@ -41,12 +42,15 @@ void CssPropertyList::set (CssPropertyName name, CssPropertyValue value) {
increase ();
getRef (size () - 1)->name = name;
+ getRef (size () - 1)->type = type;
getRef (size () - 1)->value = value;
}
void CssPropertyList::apply (CssPropertyList *props) {
for (int i = 0; i < size (); i++)
- props->set ((CssPropertyName) getRef (i)->name, getRef (i)->value);
+ props->set ((CssPropertyName) getRef (i)->name,
+ (CssValueType) getRef (i)->type,
+ getRef (i)->value);
}
void CssPropertyList::print () {
diff --git a/src/css.hh b/src/css.hh
index 5b8f7fcb..28051e29 100644
--- a/src/css.hh
+++ b/src/css.hh
@@ -14,6 +14,33 @@ typedef enum {
CSS_PRIMARY_LAST,
} CssPrimaryOrder;
+typedef enum {
+ CSS_TYPE_INTEGER, /* This type is only used internally, for x-*
+ properties. */
+ CSS_TYPE_ENUM, /* Value is i, if represented by
+ enum_symbols[i]. */
+ CSS_TYPE_MULTI_ENUM, /* For all enum_symbols[i], 1 << i are
+ combined. */
+ CSS_TYPE_LENGTH_PERCENTAGE, /* <length> or <percentage>. Represented by
+ CssLength. */
+ CSS_TYPE_LENGTH, /* <length>, represented as CssLength.
+ Note: In some cases, CSS_TYPE_LENGTH is used
+ instead of CSS_TYPE_LENGTH_PERCENTAGE,
+ only because Dw cannot handle percentages
+ in this particular case (e.g.
+ 'margin-*-width'). */
+ CSS_TYPE_COLOR, /* Represented as integer. */
+ CSS_TYPE_FONT_WEIGHT, /* this very special and only used by
+ 'font-weight' */
+ CSS_TYPE_STRING, /* <string> */
+ CSS_TYPE_SYMBOL, /* Symbols, which are directly copied (as
+ opposed to CSS_TYPE_ENUM and
+ CSS_TYPE_MULTI_ENUM). Used for
+ 'font-family'. */
+ CSS_TYPE_UNUSED /* Not yet used. Will itself get unused some
+ day. */
+} CssValueType;
+
/*
* Lengths are represented as int in the following way:
*
@@ -195,16 +222,17 @@ class CssPropertyList : public lout::misc::SimpleVector <CssProperty> {
};
~CssPropertyList ();
- void set (CssPropertyName name, CssPropertyValue value);
- inline void set (CssPropertyName name, char *value) {
+ void set (CssPropertyName name, CssValueType type,
+ CssPropertyValue value);
+ inline void set (CssPropertyName name, CssValueType type, char *value) {
CssPropertyValue v;
v.strVal = value;
- set (name, v);
+ set (name, type, v);
};
- inline void set (CssPropertyName name, int value) {
+ inline void set (CssPropertyName name, CssValueType type, int value) {
CssPropertyValue v;
v.intVal = value;
- set (name, v);
+ set (name, type, v);
};
void apply (CssPropertyList *props);
void print ();
diff --git a/src/cssparser.cc b/src/cssparser.cc
index 68d06a0b..31cad941 100644
--- a/src/cssparser.cc
+++ b/src/cssparser.cc
@@ -870,9 +870,9 @@ static void Css_parse_declaration(CssParser * parser,
Css_parse_value(parser, prop, type, &val)) {
weight = Css_parse_weight(parser);
if (weight && importantProps)
- importantProps->set(prop, val);
+ importantProps->set(prop, type, val);
else
- props->set(prop, val);
+ props->set(prop, type, val);
}
}
} else {
@@ -916,10 +916,10 @@ static void Css_parse_declaration(CssParser * parser,
if (weight && importantProps)
importantProps->
set(Css_shorthand_info[sh_index].
- properties[i], val);
+ properties[i], type, val);
else
props->set(Css_shorthand_info[sh_index].
- properties[i], val);
+ properties[i], type, val);
}
}
} while (found);
@@ -947,11 +947,13 @@ static void Css_parse_declaration(CssParser * parser,
if (weight && importantProps)
importantProps->set(Css_shorthand_info[sh_index]
.properties[i],
+ type,
dir_vals[dir_set[n - 1]
[i]]);
else
props->set(Css_shorthand_info[sh_index]
.properties[i],
+ type,
dir_vals[dir_set[n - 1][i]]);
} else
MSG_CSS("no values for shorthand property '%s'\n",
@@ -977,10 +979,10 @@ static void Css_parse_declaration(CssParser * parser,
if (weight && importantProps)
importantProps->
set(Css_shorthand_info[sh_index].
- properties[j * 3 + i], val);
+ properties[j * 3 + i], type, val);
else
props->set(Css_shorthand_info[sh_index].
- properties[j * 3 + i], val);
+ properties[j * 3 + i], type, val);
}
}
} while (found);
diff --git a/src/cssparser.hh b/src/cssparser.hh
index ccc0029e..2b083df5 100644
--- a/src/cssparser.hh
+++ b/src/cssparser.hh
@@ -9,32 +9,6 @@
(CSS_PROPERTY_LAST - CSS_NUM_INTERNAL_PROPERTIES)
-typedef enum {
- CSS_TYPE_INTEGER, /* This type is only used internally, for x-*
- properties. */
- CSS_TYPE_ENUM, /* Value is i, if represented by
- enum_symbols[i]. */
- CSS_TYPE_MULTI_ENUM, /* For all enum_symbols[i], 1 << i are
- combined. */
- CSS_TYPE_LENGTH_PERCENTAGE, /* <length> or <percentage>. Represented by
- CssLength. */
- CSS_TYPE_LENGTH, /* <length>, represented as CssLength.
- Note: In some cases, CSS_TYPE_LENGTH is used
- instead of CSS_TYPE_LENGTH_PERCENTAGE,
- only because Dw cannot handle percentages
- in this particular case (e.g.
- 'margin-*-width'). */
- CSS_TYPE_COLOR, /* Represented as integer. */
- CSS_TYPE_FONT_WEIGHT, /* this very special and only used by
- 'font-weight' */
- CSS_TYPE_STRING, /* <string> */
- CSS_TYPE_SYMBOL, /* Symbols, which are directly copied (as
- opposed to CSS_TYPE_ENUM and
- CSS_TYPE_MULTI_ENUM). Used for
- 'font-family'. */
- CSS_TYPE_UNUSED /* Not yet used. Will itself get unused some
- day. */
-} CssValueType;
typedef enum {
CSS_ORIGIN_USER_AGENT,
diff --git a/src/html.cc b/src/html.cc
index 6542f5bc..d59afe97 100644
--- a/src/html.cc
+++ b/src/html.cc
@@ -340,7 +340,7 @@ void a_Html_tag_set_align_attr(DilloHtml *html,
style_attrs.textAlignChar = '.';
}
#endif
- props->set (CSS_PROPERTY_TEXT_ALIGN, textAlignType);
+ props->set (CSS_PROPERTY_TEXT_ALIGN, CSS_TYPE_ENUM, textAlignType);
}
}
@@ -364,7 +364,7 @@ bool a_Html_tag_set_valign_attr(DilloHtml *html, const char *tag,
else
valign = VALIGN_MIDDLE;
- props->set (CSS_PROPERTY_VERTICAL_ALIGN, valign);
+ props->set (CSS_PROPERTY_VERTICAL_ALIGN, CSS_TYPE_ENUM, valign);
return true;
} else
return false;
@@ -1700,12 +1700,12 @@ static void Html_tag_open_body(DilloHtml *html, const char *tag, int tagsize)
if (color == 0xffffff && !prefs.allow_white_bg)
color = prefs.bg_color;
S_TOP(html)->current_bg_color = color;
- props.set (CSS_PROPERTY_BACKGROUND_COLOR, color);
+ props.set (CSS_PROPERTY_BACKGROUND_COLOR, CSS_TYPE_COLOR, color);
}
if ((attrbuf = a_Html_get_attr(html, tag, tagsize, "text"))) {
color = a_Html_color_parse(html, attrbuf, prefs.text_color);
- props.set (CSS_PROPERTY_COLOR, color);
+ props.set (CSS_PROPERTY_COLOR, CSS_TYPE_COLOR, color);
}
if ((attrbuf = a_Html_get_attr(html, tag, tagsize, "link")))
@@ -1790,7 +1790,7 @@ static void Html_tag_open_frame (DilloHtml *html, const char *tag, int tagsize)
html->styleEngine->setPseudoLink ();
}
- props.set (PROPERTY_X_LINK, Html_set_new_link(html, &url));
+ props.set (PROPERTY_X_LINK, CSS_TYPE_INTEGER, Html_set_new_link(html, &url));
html->styleEngine->setNonCssHints (&props);
textblock->addParbreak (5, html->styleEngine->wordStyle ());
@@ -1888,12 +1888,12 @@ static void Html_tag_open_font(DilloHtml *html, const char *tag, int tagsize)
color = a_Html_color_parse(html, attrbuf, -1);
}
if (color != -1)
- props.set (CSS_PROPERTY_COLOR, color);
+ props.set (CSS_PROPERTY_COLOR, CSS_TYPE_COLOR, color);
}
// \todo reenable font face handling when font selection is implemented
// if ((attrbuf = a_Html_get_attr(html, tag, tagsize, "face")))
-// props.set (CSS_PROPERTY_FONT_FAMILY, attrbuf);
+// props.set (CSS_PROPERTY_FONT_FAMILY, CSS_TYPE_SYMBOL, attrbuf);
html->styleEngine->setNonCssHints (&props);
}
@@ -1978,9 +1978,9 @@ DilloImage *a_Html_add_new_image(DilloHtml *html, const char *tag,
MSG("a_Html_add_new_image: suspicious image size request %dx%d\n", w, h);
} else {
if (CSS_LENGTH_TYPE(l_w) != CSS_LENGTH_TYPE_AUTO)
- props.set (CSS_PROPERTY_WIDTH, l_w);
+ props.set (CSS_PROPERTY_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE, l_w);
if (CSS_LENGTH_TYPE(l_h) != CSS_LENGTH_TYPE_AUTO)
- props.set (CSS_PROPERTY_HEIGHT, l_h);
+ props.set (CSS_PROPERTY_HEIGHT, CSS_TYPE_LENGTH_PERCENTAGE, l_h);
}
/* TODO: we should scale the image respecting its ratio.
@@ -1995,8 +1995,8 @@ DilloImage *a_Html_add_new_image(DilloHtml *html, const char *tag,
space = strtol(attrbuf, NULL, 10);
if (space > 0) {
space = CSS_CREATE_LENGTH(space, CSS_LENGTH_TYPE_PX);
- props.set (CSS_PROPERTY_MARGIN_LEFT, space);
- props.set (CSS_PROPERTY_MARGIN_RIGHT, space);
+ props.set (CSS_PROPERTY_MARGIN_LEFT, CSS_TYPE_LENGTH_PERCENTAGE, space);
+ props.set (CSS_PROPERTY_MARGIN_RIGHT, CSS_TYPE_LENGTH_PERCENTAGE, space);
}
}
@@ -2005,8 +2005,8 @@ DilloImage *a_Html_add_new_image(DilloHtml *html, const char *tag,
space = strtol(attrbuf, NULL, 10);
if (space > 0) {
space = CSS_CREATE_LENGTH(space, CSS_LENGTH_TYPE_PX);
- props.set (CSS_PROPERTY_MARGIN_TOP, space);
- props.set (CSS_PROPERTY_MARGIN_BOTTOM, space);
+ props.set (CSS_PROPERTY_MARGIN_TOP, CSS_TYPE_LENGTH_PERCENTAGE, space);
+ props.set (CSS_PROPERTY_MARGIN_BOTTOM, CSS_TYPE_LENGTH_PERCENTAGE, space);
}
}
@@ -2015,22 +2015,29 @@ DilloImage *a_Html_add_new_image(DilloHtml *html, const char *tag,
border = strtol(attrbuf, NULL, 10);
if (border >= 0) {
border = CSS_CREATE_LENGTH(border, CSS_LENGTH_TYPE_PX);
- props.set (CSS_PROPERTY_BORDER_TOP_WIDTH, border);
- props.set (CSS_PROPERTY_BORDER_BOTTOM_WIDTH, border);
- props.set (CSS_PROPERTY_BORDER_LEFT_WIDTH, border);
- props.set (CSS_PROPERTY_BORDER_RIGHT_WIDTH, border);
-
- props.set (CSS_PROPERTY_BORDER_TOP_STYLE, BORDER_SOLID);
- props.set (CSS_PROPERTY_BORDER_BOTTOM_STYLE,
+ props.set (CSS_PROPERTY_BORDER_TOP_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE,
+ border);
+ props.set (CSS_PROPERTY_BORDER_BOTTOM_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE,
+ border);
+ props.set (CSS_PROPERTY_BORDER_LEFT_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE,
+ border);
+ props.set (CSS_PROPERTY_BORDER_RIGHT_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE,
+ border);
+
+ props.set (CSS_PROPERTY_BORDER_TOP_STYLE, CSS_TYPE_ENUM,
+ BORDER_SOLID);
+ props.set (CSS_PROPERTY_BORDER_BOTTOM_STYLE, CSS_TYPE_ENUM,
+ BORDER_SOLID);
+ props.set (CSS_PROPERTY_BORDER_LEFT_STYLE, CSS_TYPE_ENUM,
+ BORDER_SOLID);
+ props.set (CSS_PROPERTY_BORDER_RIGHT_STYLE, CSS_TYPE_ENUM,
BORDER_SOLID);
- props.set (CSS_PROPERTY_BORDER_LEFT_STYLE, BORDER_SOLID);
- props.set (CSS_PROPERTY_BORDER_RIGHT_STYLE,BORDER_SOLID);
}
}
/* x_img is an index to a list of {url,image} pairs.
* We know Html_add_new_linkimage() will use size() as its next index */
- props.set (PROPERTY_X_IMG, html->images->size());
+ props.set (PROPERTY_X_IMG, CSS_TYPE_INTEGER, html->images->size());
html->styleEngine->setNonCssHints(&props);
@@ -2294,7 +2301,8 @@ static void Html_tag_open_object(DilloHtml *html, const char *tag, int tagsize)
html->styleEngine->setPseudoLink ();
}
- props.set(PROPERTY_X_LINK, Html_set_new_link(html, &url));
+ props.set(PROPERTY_X_LINK, CSS_TYPE_INTEGER,
+ Html_set_new_link(html, &url));
html->styleEngine->setNonCssHints (&props);
DW2TB(html->dw)->addText("[OBJECT]", html->styleEngine->wordStyle ());
@@ -2368,14 +2376,15 @@ static void Html_tag_open_a(DilloHtml *html, const char *tag, int tagsize)
html->InVisitedLink = true;
html->styleEngine->setPseudoVisited ();
if (html->visited_color != -1)
- props.set (CSS_PROPERTY_COLOR, html->visited_color);
+ props.set (CSS_PROPERTY_COLOR, CSS_TYPE_COLOR, html->visited_color);
} else {
html->styleEngine->setPseudoLink ();
if (html->link_color != -1)
- props.set (CSS_PROPERTY_COLOR, html->link_color);
+ props.set (CSS_PROPERTY_COLOR, CSS_TYPE_COLOR, html->link_color);
}
- props.set (PROPERTY_X_LINK, Html_set_new_link(html, &url));
+ props.set (PROPERTY_X_LINK, CSS_TYPE_INTEGER,
+ Html_set_new_link(html, &url));
html->styleEngine->setNonCssHints (&props);
}
@@ -2456,7 +2465,7 @@ static void Html_tag_open_ul(DilloHtml *html, const char *tag, int tagsize)
/* invalid value */
list_style_type = LIST_STYLE_TYPE_DISC;
- props.set(CSS_PROPERTY_LIST_STYLE_TYPE, list_style_type);
+ props.set(CSS_PROPERTY_LIST_STYLE_TYPE, CSS_TYPE_ENUM, list_style_type);
html->styleEngine->setNonCssHints (&props);
}
@@ -2515,7 +2524,7 @@ static void Html_tag_open_ol(DilloHtml *html, const char *tag, int tagsize)
else if (*attrbuf == 'I')
listStyleType = LIST_STYLE_TYPE_UPPER_ROMAN;
- props.set (CSS_PROPERTY_LIST_STYLE_TYPE, listStyleType);
+ props.set (CSS_PROPERTY_LIST_STYLE_TYPE, CSS_TYPE_ENUM, listStyleType);
html->styleEngine->setNonCssHints (&props);
}
@@ -2609,7 +2618,7 @@ static void Html_tag_open_hr(DilloHtml *html, const char *tag, int tagsize)
width_ptr = a_Html_get_attr_wdef(html, tag, tagsize, "width", NULL);
if (width_ptr) {
- props.set (CSS_PROPERTY_WIDTH,
+ props.set (CSS_PROPERTY_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE,
a_Html_parse_length (html, width_ptr));
dFree(width_ptr);
}
@@ -2621,10 +2630,10 @@ static void Html_tag_open_hr(DilloHtml *html, const char *tag, int tagsize)
/* TODO: evaluate attribute */
if (a_Html_get_attr(html, tag, tagsize, "noshade")) {
- props.set (CSS_PROPERTY_BORDER_TOP_STYLE, BORDER_SOLID);
- props.set (CSS_PROPERTY_BORDER_BOTTOM_STYLE, BORDER_SOLID);
- props.set (CSS_PROPERTY_BORDER_LEFT_STYLE, BORDER_SOLID);
- props.set (CSS_PROPERTY_BORDER_RIGHT_STYLE, BORDER_SOLID);
+ props.set (CSS_PROPERTY_BORDER_TOP_STYLE, CSS_TYPE_ENUM, BORDER_SOLID);
+ props.set (CSS_PROPERTY_BORDER_BOTTOM_STYLE, CSS_TYPE_ENUM, BORDER_SOLID);
+ props.set (CSS_PROPERTY_BORDER_LEFT_STYLE, CSS_TYPE_ENUM, BORDER_SOLID);
+ props.set (CSS_PROPERTY_BORDER_RIGHT_STYLE, CSS_TYPE_ENUM, BORDER_SOLID);
if (size <= 0)
size = 1;
@@ -2633,10 +2642,14 @@ static void Html_tag_open_hr(DilloHtml *html, const char *tag, int tagsize)
if (size > 0) {
CssLength size_top = CSS_CREATE_LENGTH ((size+1)/2, CSS_LENGTH_TYPE_PX);
CssLength size_bottom = CSS_CREATE_LENGTH (size / 2, CSS_LENGTH_TYPE_PX);
- props.set (CSS_PROPERTY_BORDER_TOP_WIDTH, size_top);
- props.set (CSS_PROPERTY_BORDER_LEFT_WIDTH, size_top);
- props.set (CSS_PROPERTY_BORDER_BOTTOM_WIDTH, size_bottom);
- props.set (CSS_PROPERTY_BORDER_RIGHT_WIDTH, size_bottom);
+ props.set (CSS_PROPERTY_BORDER_TOP_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE,
+ size_top);
+ props.set (CSS_PROPERTY_BORDER_LEFT_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE,
+ size_top);
+ props.set (CSS_PROPERTY_BORDER_BOTTOM_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE,
+ size_bottom);
+ props.set (CSS_PROPERTY_BORDER_RIGHT_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE,
+ size_bottom);
}
DW2TB(html->dw)->addParbreak (5, html->styleEngine->wordStyle ());
diff --git a/src/table.cc b/src/table.cc
index 63387778..96a4e0ca 100644
--- a/src/table.cc
+++ b/src/table.cc
@@ -60,28 +60,33 @@ void Html_tag_open_table(DilloHtml *html, const char *tag, int tagsize)
if (border != -1) {
cssLength = CSS_CREATE_LENGTH (border, CSS_LENGTH_TYPE_PX);
- props.set (CSS_PROPERTY_BORDER_TOP_WIDTH, cssLength);
- props.set (CSS_PROPERTY_BORDER_BOTTOM_WIDTH, cssLength);
- props.set (CSS_PROPERTY_BORDER_LEFT_WIDTH, cssLength);
- props.set (CSS_PROPERTY_BORDER_RIGHT_WIDTH, cssLength);
+ props.set (CSS_PROPERTY_BORDER_TOP_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE,
+ cssLength);
+ props.set (CSS_PROPERTY_BORDER_BOTTOM_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE,
+ cssLength);
+ props.set (CSS_PROPERTY_BORDER_LEFT_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE,
+ cssLength);
+ props.set (CSS_PROPERTY_BORDER_RIGHT_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE,
+ cssLength);
}
if (cellspacing != -1) {
cssLength = CSS_CREATE_LENGTH (cellspacing, CSS_LENGTH_TYPE_PX);
- props.set (CSS_PROPERTY_BORDER_SPACING, cssLength);
+ props.set (CSS_PROPERTY_BORDER_SPACING, CSS_TYPE_LENGTH_PERCENTAGE,
+ cssLength);
}
if ((attrbuf = a_Html_get_attr(html, tag, tagsize, "width")))
- props.set (CSS_PROPERTY_WIDTH,
+ props.set (CSS_PROPERTY_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE,
a_Html_parse_length (html, attrbuf));
if ((attrbuf = a_Html_get_attr(html, tag, tagsize, "align"))) {
if (dStrcasecmp (attrbuf, "left") == 0)
- props.set (CSS_PROPERTY_TEXT_ALIGN, TEXT_ALIGN_LEFT);
+ props.set (CSS_PROPERTY_TEXT_ALIGN, CSS_TYPE_ENUM, TEXT_ALIGN_LEFT);
else if (dStrcasecmp (attrbuf, "right") == 0)
- props.set (CSS_PROPERTY_TEXT_ALIGN, TEXT_ALIGN_RIGHT);
+ props.set (CSS_PROPERTY_TEXT_ALIGN, CSS_TYPE_ENUM, TEXT_ALIGN_RIGHT);
else if (dStrcasecmp (attrbuf, "center") == 0)
- props.set (CSS_PROPERTY_TEXT_ALIGN, TEXT_ALIGN_CENTER);
+ props.set (CSS_PROPERTY_TEXT_ALIGN, CSS_TYPE_ENUM, TEXT_ALIGN_CENTER);
}
if ((attrbuf = a_Html_get_attr(html, tag, tagsize, "bgcolor"))) {
@@ -90,7 +95,7 @@ void Html_tag_open_table(DilloHtml *html, const char *tag, int tagsize)
if (bgcolor == 0xffffff && !prefs.allow_white_bg)
bgcolor = prefs.bg_color;
S_TOP(html)->current_bg_color = bgcolor;
- props.set (CSS_PROPERTY_BACKGROUND_COLOR, bgcolor);
+ props.set (CSS_PROPERTY_BACKGROUND_COLOR, CSS_TYPE_COLOR, bgcolor);
}
}
@@ -100,18 +105,26 @@ void Html_tag_open_table(DilloHtml *html, const char *tag, int tagsize)
table_cell_props = new CssPropertyList ();
if (border > 0) {
cssLength = CSS_CREATE_LENGTH (1, CSS_LENGTH_TYPE_PX);
- table_cell_props->set (CSS_PROPERTY_BORDER_TOP_WIDTH, cssLength);
- table_cell_props->set (CSS_PROPERTY_BORDER_BOTTOM_WIDTH, cssLength);
- table_cell_props->set (CSS_PROPERTY_BORDER_LEFT_WIDTH, cssLength);
- table_cell_props->set (CSS_PROPERTY_BORDER_RIGHT_WIDTH, cssLength);
+ table_cell_props->set (CSS_PROPERTY_BORDER_TOP_WIDTH,
+ CSS_TYPE_LENGTH_PERCENTAGE, cssLength);
+ table_cell_props->set (CSS_PROPERTY_BORDER_BOTTOM_WIDTH,
+ CSS_TYPE_LENGTH_PERCENTAGE, cssLength);
+ table_cell_props->set (CSS_PROPERTY_BORDER_LEFT_WIDTH,
+ CSS_TYPE_LENGTH_PERCENTAGE, cssLength);
+ table_cell_props->set (CSS_PROPERTY_BORDER_RIGHT_WIDTH,
+ CSS_TYPE_LENGTH_PERCENTAGE, cssLength);
}
if (cellpadding != -1) {
cssLength = CSS_CREATE_LENGTH (cellpadding, CSS_LENGTH_TYPE_PX);
- table_cell_props->set (CSS_PROPERTY_PADDING_TOP, cssLength);
- table_cell_props->set (CSS_PROPERTY_PADDING_BOTTOM, cssLength);
- table_cell_props->set (CSS_PROPERTY_PADDING_LEFT, cssLength);
- table_cell_props->set (CSS_PROPERTY_PADDING_RIGHT, cssLength);
+ table_cell_props->set (CSS_PROPERTY_PADDING_TOP,
+ CSS_TYPE_LENGTH_PERCENTAGE, cssLength);
+ table_cell_props->set (CSS_PROPERTY_PADDING_BOTTOM,
+ CSS_TYPE_LENGTH_PERCENTAGE, cssLength);
+ table_cell_props->set (CSS_PROPERTY_PADDING_LEFT,
+ CSS_TYPE_LENGTH_PERCENTAGE, cssLength);
+ table_cell_props->set (CSS_PROPERTY_PADDING_RIGHT,
+ CSS_TYPE_LENGTH_PERCENTAGE, cssLength);
}
if (S_TOP(html)->table_cell_props)
@@ -154,7 +167,7 @@ void Html_tag_open_tr(DilloHtml *html, const char *tag, int tagsize)
if (bgcolor != -1) {
if (bgcolor == 0xffffff && !prefs.allow_white_bg)
bgcolor = prefs.bg_color;
- props.set (CSS_PROPERTY_BACKGROUND_COLOR, bgcolor);
+ props.set (CSS_PROPERTY_BACKGROUND_COLOR, CSS_TYPE_COLOR, bgcolor);
S_TOP(html)->current_bg_color = bgcolor;
}
}
@@ -172,7 +185,8 @@ void Html_tag_open_tr(DilloHtml *html, const char *tag, int tagsize)
table_cell_props = new CssPropertyList (*S_TOP(html)->table_cell_props);
if (bgcolor != -1) {
- table_cell_props->set (CSS_PROPERTY_BACKGROUND_COLOR, bgcolor);
+ table_cell_props->set (CSS_PROPERTY_BACKGROUND_COLOR,
+ CSS_TYPE_COLOR, bgcolor);
new_style = true;
}
if (a_Html_tag_set_valign_attr (html, tag, tagsize, table_cell_props))
@@ -261,17 +275,17 @@ static void Html_tag_open_table_cell(DilloHtml *html,
/* text style */
if (!S_TOP(html)->cell_text_align_set) {
- props->set (CSS_PROPERTY_TEXT_ALIGN, text_align);
+ props->set (CSS_PROPERTY_TEXT_ALIGN, CSS_TYPE_ENUM, text_align);
}
if (a_Html_get_attr(html, tag, tagsize, "nowrap"))
- props->set (CSS_PROPERTY_WHITE_SPACE, WHITE_SPACE_NOWRAP);
+ props->set (CSS_PROPERTY_WHITE_SPACE, CSS_TYPE_ENUM, WHITE_SPACE_NOWRAP);
else
- props->set (CSS_PROPERTY_WHITE_SPACE, WHITE_SPACE_NORMAL);
+ props->set (CSS_PROPERTY_WHITE_SPACE, CSS_TYPE_ENUM, WHITE_SPACE_NORMAL);
a_Html_tag_set_align_attr (html, props, tag, tagsize);
if ((attrbuf = a_Html_get_attr(html, tag, tagsize, "width"))) {
- props->set (CSS_PROPERTY_WIDTH,
+ props->set (CSS_PROPERTY_WIDTH, CSS_TYPE_LENGTH_PERCENTAGE,
a_Html_parse_length (html, attrbuf));
}
@@ -284,7 +298,7 @@ static void Html_tag_open_table_cell(DilloHtml *html,
if (bgcolor == 0xffffff && !prefs.allow_white_bg)
bgcolor = prefs.bg_color;
- props->set (CSS_PROPERTY_BACKGROUND_COLOR, bgcolor);
+ props->set (CSS_PROPERTY_BACKGROUND_COLOR, CSS_TYPE_COLOR, bgcolor);
S_TOP(html)->current_bg_color = bgcolor;
}
}