summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2011-01-29 19:22:12 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2011-01-29 19:22:12 +0000
commit5d27aa256fc1778695312fedf21f9489f8232448 (patch)
tree77b00a8f1ceda38a6cd7aacf0be4c8655101f357
parent27924aa38c0099ada9695530206c7a4633d03c81 (diff)
downloadnetsurf-5d27aa256fc1778695312fedf21f9489f8232448.tar.gz
netsurf-5d27aa256fc1778695312fedf21f9489f8232448.tar.bz2
Port to latest libcss
svn path=/trunk/netsurf/; revision=11526
-rw-r--r--css/dump.c27
-rw-r--r--css/utils.h9
-rw-r--r--render/box.h1
-rw-r--r--render/box_construct.c5
-rw-r--r--render/html_redraw.c204
-rw-r--r--render/layout.c15
-rw-r--r--render/table.c24
7 files changed, 131 insertions, 154 deletions
diff --git a/css/dump.c b/css/dump.c
index 51289e7be..91d47a61e 100644
--- a/css/dump.c
+++ b/css/dump.c
@@ -63,9 +63,6 @@ void nscss_dump_computed_style(FILE *stream, const css_computed_style *style)
/* background-color */
val = css_computed_background_color(style, &color);
switch (val) {
- case CSS_BACKGROUND_COLOR_TRANSPARENT:
- fprintf(stream, "background-color: transparent ");
- break;
case CSS_BACKGROUND_COLOR_COLOR:
fprintf(stream, "background-color: #%08x ", color);
break;
@@ -140,12 +137,6 @@ void nscss_dump_computed_style(FILE *stream, const css_computed_style *style)
/* border-top-color */
val = css_computed_border_top_color(style, &color);
switch (val) {
- case CSS_BORDER_COLOR_INITIAL:
- fprintf(stream, "border-top-color: initial ");
- break;
- case CSS_BORDER_COLOR_TRANSPARENT:
- fprintf(stream, "border-top-color: transparent ");
- break;
case CSS_BORDER_COLOR_COLOR:
fprintf(stream, "border-top-color: #%08x ", color);
break;
@@ -156,12 +147,6 @@ void nscss_dump_computed_style(FILE *stream, const css_computed_style *style)
/* border-right-color */
val = css_computed_border_right_color(style, &color);
switch (val) {
- case CSS_BORDER_COLOR_INITIAL:
- fprintf(stream, "border-right-color: initial ");
- break;
- case CSS_BORDER_COLOR_TRANSPARENT:
- fprintf(stream, "border-right-color: transparent ");
- break;
case CSS_BORDER_COLOR_COLOR:
fprintf(stream, "border-right-color: #%08x ", color);
break;
@@ -172,12 +157,6 @@ void nscss_dump_computed_style(FILE *stream, const css_computed_style *style)
/* border-bottom-color */
val = css_computed_border_bottom_color(style, &color);
switch (val) {
- case CSS_BORDER_COLOR_INITIAL:
- fprintf(stream, "border-bottom-color: initial ");
- break;
- case CSS_BORDER_COLOR_TRANSPARENT:
- fprintf(stream, "border-bottom-color: transparent ");
- break;
case CSS_BORDER_COLOR_COLOR:
fprintf(stream, "border-bottom-color: #%08x ", color);
break;
@@ -188,12 +167,6 @@ void nscss_dump_computed_style(FILE *stream, const css_computed_style *style)
/* border-left-color */
val = css_computed_border_left_color(style, &color);
switch (val) {
- case CSS_BORDER_COLOR_INITIAL:
- fprintf(stream, "border-left-color: initial ");
- break;
- case CSS_BORDER_COLOR_TRANSPARENT:
- fprintf(stream, "border-left-color: transparent ");
- break;
case CSS_BORDER_COLOR_COLOR:
fprintf(stream, "border-left-color: #%08x ", color);
break;
diff --git a/css/utils.h b/css/utils.h
index 11403b5da..9d40aba7b 100644
--- a/css/utils.h
+++ b/css/utils.h
@@ -39,6 +39,15 @@ extern css_fixed nscss_screen_dpi;
((color) & 0xff00) | \
(((color) & 0xff) << 16)
+/**
+ * Determine if a CSS color primitive is transparent
+ *
+ * \param color The CSS color to consider
+ * \return True if the color is transparent, false otherwise
+ */
+#define nscss_color_is_transparent(color) \
+ (((color) >> 24) == 0)
+
css_fixed nscss_len2pt(css_fixed length, css_unit unit);
css_fixed nscss_len2px(css_fixed length, css_unit unit,
const css_computed_style *style);
diff --git a/render/box.h b/render/box.h
index 5ca366497..5889645b2 100644
--- a/render/box.h
+++ b/render/box.h
@@ -123,7 +123,6 @@ enum box_side { TOP, RIGHT, BOTTOM, LEFT };
*/
struct box_border {
enum css_border_style_e style; /**< border-style */
- enum css_border_color_e color; /**< border-color type */
css_color c; /**< border-color value */
int width; /**< border-width (pixels) */
};
diff --git a/render/box_construct.c b/render/box_construct.c
index 6c66e127e..209b9cc39 100644
--- a/render/box_construct.c
+++ b/render/box_construct.c
@@ -1070,11 +1070,10 @@ void box_text_transform(char *s, unsigned int len, enum css_text_transform_e tt)
bool box_body(BOX_SPECIAL_PARAMS)
{
- enum css_background_color_e type;
css_color color;
- type = css_computed_background_color(box->style, &color);
- if (type == CSS_BACKGROUND_COLOR_TRANSPARENT)
+ css_computed_background_color(box->style, &color);
+ if (nscss_color_is_transparent(color))
content->data.html.background_colour = NS_TRANSPARENT;
else
content->data.html.background_colour = nscss_color_to_ns(color);
diff --git a/render/html_redraw.c b/render/html_redraw.c
index 5a70d040f..9e7e6fc6a 100644
--- a/render/html_redraw.c
+++ b/render/html_redraw.c
@@ -190,6 +190,70 @@ bool html_redraw(struct content *c, int x, int y,
}
+/**
+ * Determine if a box has a background that needs drawing
+ *
+ * \param box Box to consider
+ * \return True if box has a background, false otherwise.
+ */
+static bool html_redraw_box_has_background(struct box *box)
+{
+ if (box->background != NULL)
+ return true;
+
+ if (box->style != NULL) {
+ css_color colour;
+
+ css_computed_background_color(box->style, &colour);
+
+ if (nscss_color_is_transparent(colour) == false)
+ return true;
+ }
+
+ return false;
+}
+
+/**
+ * Find the background box for a box
+ *
+ * \param box Box to find background box for
+ * \return Pointer to background box, or NULL if there is none
+ */
+static struct box *html_redraw_find_bg_box(struct box *box)
+{
+ /* Thanks to backwards compatibility, CSS defines the following:
+ *
+ * + If the box is for the root element and it has a background,
+ * use that (and then process the body box with no special case)
+ * + If the box is for the root element and it has no background,
+ * then use the background (if any) from the body element as if
+ * it were specified on the root. Then, when the box for the body
+ * element is processed, ignore the background.
+ * + For any other box, just use its own styling.
+ */
+ if (box->parent == NULL) {
+ /* Root box */
+ if (html_redraw_box_has_background(box))
+ return box;
+
+ /* No background on root box: consider body box, if any */
+ if (box->children != NULL) {
+ if (html_redraw_box_has_background(box->children))
+ return box->children;
+ }
+ } else if (box->parent != NULL && box->parent->parent == NULL) {
+ /* Body box: only render background if root has its own */
+ if (html_redraw_box_has_background(box) &&
+ html_redraw_box_has_background(box->parent))
+ return box;
+ } else {
+ /* Any other box */
+ if (html_redraw_box_has_background(box))
+ return box;
+ }
+
+ return NULL;
+}
/**
* Recursively draw a box.
@@ -216,7 +280,6 @@ bool html_redraw_box(struct box *box, int x_parent, int y_parent,
struct rect r;
int x_scrolled, y_scrolled;
struct box *bg_box = NULL;
- css_color bgcol = 0;
bool has_x_scroll, has_y_scroll;
if (html_redraw_printing && box->printed)
@@ -371,71 +434,16 @@ bool html_redraw_box(struct box *box, int x_parent, int y_parent,
/* background colour and image for block level content and replaced
* inlines */
- /* Thanks to backwards compatibility, CSS defines the following:
- *
- * + If the box is for the root element and it has a background,
- * use that (and then process the body box with no special case)
- * + If the box is for the root element and it has no background,
- * then use the background (if any) from the body element as if
- * it were specified on the root. Then, when the box for the body
- * element is processed, ignore the background.
- * + For any other box, just use its own styling.
- */
- if (!box->parent) {
- /* Root box */
- if (box->style && (css_computed_background_color(box->style,
- &bgcol) != CSS_BACKGROUND_COLOR_TRANSPARENT ||
- box->background)) {
- /* With its own background */
- bg_box = box;
- } else if (!box->style ||
- (css_computed_background_color(box->style,
- &bgcol) == CSS_BACKGROUND_COLOR_TRANSPARENT &&
- !box->background)) {
- /* Without its own background */
- if (box->children && box->children->style &&
- (css_computed_background_color(
- box->children->style,
- &bgcol) !=
- CSS_BACKGROUND_COLOR_TRANSPARENT ||
- box->children->background)) {
- /* But body has one, so use that */
- bg_box = box->children;
- }
- }
- } else if (box->parent && !box->parent->parent) {
- /* Body box */
- if (box->style && (css_computed_background_color(box->style,
- &bgcol) != CSS_BACKGROUND_COLOR_TRANSPARENT ||
- box->background)) {
- /* With a background */
- if (box->parent->style &&
- (css_computed_background_color(
- box->parent->style, &bgcol) !=
- CSS_BACKGROUND_COLOR_TRANSPARENT ||
- box->parent->background)) {
- /* Root has own background; process normally */
- bg_box = box;
- }
- }
- } else {
- /* Any other box */
- bg_box = box;
- }
+ bg_box = html_redraw_find_bg_box(box);
/* bg_box == NULL implies that this box should not have
* its background rendered. Otherwise filter out linebreaks,
* optimize away non-differing inlines, only plot background
- * for BOX_TEXT it's in an inline and ensure the bg_box
- * has something worth rendering */
- if (bg_box && bg_box->style &&
- bg_box->type != BOX_BR &&
+ * for BOX_TEXT it's in an inline */
+ if (bg_box && bg_box->type != BOX_BR &&
bg_box->type != BOX_TEXT &&
bg_box->type != BOX_INLINE_END &&
- (bg_box->type != BOX_INLINE || bg_box->object) &&
- (css_computed_background_color(bg_box->style,
- &bgcol) != CSS_BACKGROUND_COLOR_TRANSPARENT ||
- bg_box->background)) {
+ (bg_box->type != BOX_INLINE || bg_box->object)) {
/* find intersection of clip box and border edge */
struct rect p;
p.x0 = x - border_left < r.x0 ? r.x0 : x - border_left;
@@ -490,9 +498,8 @@ bool html_redraw_box(struct box *box, int x_parent, int y_parent,
/* backgrounds and borders for non-replaced inlines */
if (box->style && box->type == BOX_INLINE && box->inline_end &&
- (css_computed_background_color(box->style, &bgcol) !=
- CSS_BACKGROUND_COLOR_TRANSPARENT ||
- box->background || border_top || border_right ||
+ (html_redraw_box_has_background(box) ||
+ border_top || border_right ||
border_bottom || border_left)) {
/* inline backgrounds and borders span other boxes and may
* wrap onto separate lines */
@@ -1086,8 +1093,8 @@ bool html_redraw_borders(struct box *box, int x_parent, int y_parent,
colour col = 0;
side = sides[i]; /* plot order */
- if (box->border[side].width == 0 || box->border[side].color ==
- CSS_BORDER_COLOR_TRANSPARENT)
+ if (box->border[side].width == 0 ||
+ nscss_color_is_transparent(box->border[side].c))
continue;
switch (side) {
@@ -1100,8 +1107,8 @@ bool html_redraw_borders(struct box *box, int x_parent, int y_parent,
z[4] = p[2]; z[5] = p[3];
z[6] = p[0]; z[7] = p[1];
- if (box->border[TOP].color !=
- CSS_BORDER_COLOR_TRANSPARENT &&
+ if (nscss_color_is_transparent(box->border[TOP].c) ==
+ false &&
box->border[TOP].style !=
CSS_BORDER_STYLE_DOUBLE) {
/* make border overhang top corner fully,
@@ -1109,8 +1116,8 @@ bool html_redraw_borders(struct box *box, int x_parent, int y_parent,
z[5] -= top;
square_end_1 = true;
}
- if (box->border[BOTTOM].color !=
- CSS_BORDER_COLOR_TRANSPARENT &&
+ if (nscss_color_is_transparent(box->border[BOTTOM].c) ==
+ false &&
box->border[BOTTOM].style !=
CSS_BORDER_STYLE_DOUBLE) {
/* make border overhang bottom corner fully,
@@ -1136,8 +1143,8 @@ bool html_redraw_borders(struct box *box, int x_parent, int y_parent,
z[4] = p[4]; z[5] = p[5];
z[6] = p[6]; z[7] = p[7];
- if (box->border[TOP].color !=
- CSS_BORDER_COLOR_TRANSPARENT &&
+ if (nscss_color_is_transparent(box->border[TOP].c) ==
+ false &&
box->border[TOP].style !=
CSS_BORDER_STYLE_DOUBLE) {
/* make border overhang top corner fully,
@@ -1145,8 +1152,8 @@ bool html_redraw_borders(struct box *box, int x_parent, int y_parent,
z[3] -= top;
square_end_1 = true;
}
- if (box->border[BOTTOM].color !=
- CSS_BORDER_COLOR_TRANSPARENT &&
+ if (nscss_color_is_transparent(box->border[BOTTOM].c) ==
+ false &&
box->border[BOTTOM].style !=
CSS_BORDER_STYLE_DOUBLE) {
/* make border overhang bottom corner fully,
@@ -1307,8 +1314,8 @@ bool html_redraw_inline_borders(struct box *box, struct rect b,
/* Left */
square_end_1 = (top == 0);
square_end_2 = (bottom == 0);
- if (left != 0 && first && box->border[LEFT].color !=
- CSS_BORDER_COLOR_TRANSPARENT) {
+ if (left != 0 && first && nscss_color_is_transparent(
+ box->border[LEFT].c) == false) {
col = nscss_color_to_ns(box->border[LEFT].c);
z[0] = p[0]; z[1] = p[7];
@@ -1316,8 +1323,7 @@ bool html_redraw_inline_borders(struct box *box, struct rect b,
z[4] = p[2]; z[5] = p[3];
z[6] = p[0]; z[7] = p[1];
- if (box->border[TOP].color !=
- CSS_BORDER_COLOR_TRANSPARENT &&
+ if (nscss_color_is_transparent(box->border[TOP].c) == false &&
box->border[TOP].style !=
CSS_BORDER_STYLE_DOUBLE) {
/* make border overhang top corner fully,
@@ -1325,8 +1331,9 @@ bool html_redraw_inline_borders(struct box *box, struct rect b,
z[5] -= top;
square_end_1 = true;
}
- if (box->border[BOTTOM].color !=
- CSS_BORDER_COLOR_TRANSPARENT &&
+
+ if (nscss_color_is_transparent(box->border[BOTTOM].c) ==
+ false &&
box->border[BOTTOM].style !=
CSS_BORDER_STYLE_DOUBLE) {
/* make border overhang bottom corner fully,
@@ -1344,8 +1351,8 @@ bool html_redraw_inline_borders(struct box *box, struct rect b,
/* Right */
square_end_1 = (top == 0);
square_end_2 = (bottom == 0);
- if (right != 0 && last && box->border[RIGHT].color !=
- CSS_BORDER_COLOR_TRANSPARENT) {
+ if (right != 0 && last && nscss_color_is_transparent(
+ box->border[RIGHT].c) == false) {
col = nscss_color_to_ns(box->border[RIGHT].c);
z[0] = p[6]; z[1] = p[1];
@@ -1353,8 +1360,7 @@ bool html_redraw_inline_borders(struct box *box, struct rect b,
z[4] = p[4]; z[5] = p[5];
z[6] = p[6]; z[7] = p[7];
- if (box->border[TOP].color !=
- CSS_BORDER_COLOR_TRANSPARENT &&
+ if (nscss_color_is_transparent(box->border[TOP].c) == false &&
box->border[TOP].style !=
CSS_BORDER_STYLE_DOUBLE) {
/* make border overhang top corner fully,
@@ -1362,8 +1368,9 @@ bool html_redraw_inline_borders(struct box *box, struct rect b,
z[3] -= top;
square_end_1 = true;
}
- if (box->border[BOTTOM].color !=
- CSS_BORDER_COLOR_TRANSPARENT &&
+
+ if (nscss_color_is_transparent(box->border[BOTTOM].c) ==
+ false &&
box->border[BOTTOM].style !=
CSS_BORDER_STYLE_DOUBLE) {
/* make border overhang bottom corner fully,
@@ -1381,8 +1388,8 @@ bool html_redraw_inline_borders(struct box *box, struct rect b,
/* Top */
square_end_1 = (left == 0);
square_end_2 = (right == 0);
- if (top != 0 && box->border[TOP].color !=
- CSS_BORDER_COLOR_TRANSPARENT) {
+ if (top != 0 && nscss_color_is_transparent(
+ box->border[TOP].c) == false) {
col = nscss_color_to_ns(box->border[TOP].c);
z[0] = p[2]; z[1] = p[3];
@@ -1399,6 +1406,7 @@ bool html_redraw_inline_borders(struct box *box, struct rect b,
z[2] += left;
square_end_1 = true;
}
+
if (last && box->border[TOP].style ==
CSS_BORDER_STYLE_SOLID &&
box->border[TOP].c ==
@@ -1418,8 +1426,8 @@ bool html_redraw_inline_borders(struct box *box, struct rect b,
/* Bottom */
square_end_1 = (left == 0);
square_end_2 = (right == 0);
- if (bottom != 0 && box->border[BOTTOM].color !=
- CSS_BORDER_COLOR_TRANSPARENT) {
+ if (bottom != 0 && nscss_color_is_transparent(
+ box->border[BOTTOM].c) == false) {
col = nscss_color_to_ns(box->border[BOTTOM].c);
z[0] = p[4]; z[1] = p[5];
@@ -1436,6 +1444,7 @@ bool html_redraw_inline_borders(struct box *box, struct rect b,
z[4] += left;
square_end_1 = true;
}
+
if (last && box->border[BOTTOM].style ==
CSS_BORDER_STYLE_SOLID &&
box->border[BOTTOM].c ==
@@ -2135,18 +2144,20 @@ bool html_redraw_background(int x, int y, struct box *box, float scale,
if (clip_box->background != NULL)
bmp = content_get_bitmap(clip_box->background);
+ css_computed_background_color(clip_box->style, &bgcol);
+
/* <td> attributes override <tr> */
if ((clip.x0 >= clip.x1) || (clip.y0 >= clip.y1) ||
- (css_computed_background_color(
- clip_box->style, &bgcol) !=
- CSS_BACKGROUND_COLOR_TRANSPARENT) ||
+ (nscss_color_is_transparent(bgcol) ==
+ false) ||
(bmp != NULL && bitmap_get_opaque(bmp)))
continue;
}
/* plot the background colour */
- if (css_computed_background_color(background->style, &bgcol) !=
- CSS_BACKGROUND_COLOR_TRANSPARENT) {
+ css_computed_background_color(background->style, &bgcol);
+
+ if (nscss_color_is_transparent(bgcol) == false) {
*background_colour = nscss_color_to_ns(bgcol);
pstyle_fill_bg.fill_colour = *background_colour;
if (plot_colour)
@@ -2287,8 +2298,9 @@ bool html_redraw_inline_background(int x, int y, struct box *box, float scale,
}
/* plot the background colour */
- if (css_computed_background_color(box->style, &bgcol) !=
- CSS_BACKGROUND_COLOR_TRANSPARENT) {
+ css_computed_background_color(box->style, &bgcol);
+
+ if (nscss_color_is_transparent(bgcol) == false) {
*background_colour = nscss_color_to_ns(bgcol);
pstyle_fill_bg.fill_colour = *background_colour;
diff --git a/render/layout.c b/render/layout.c
index 9445b4327..213082ee6 100644
--- a/render/layout.c
+++ b/render/layout.c
@@ -1571,8 +1571,6 @@ void layout_find_dimensions(int available_width, int viewport_height,
/* Table cell borders are populated in table.c */
if (border && box->type != BOX_TABLE_CELL) {
enum css_border_style_e bstyle = CSS_BORDER_STYLE_NONE;
- enum css_border_color_e bcolor =
- CSS_BORDER_COLOR_TRANSPARENT;
css_color color = 0;
css_fixed value = 0;
css_unit unit = CSS_UNIT_PX;
@@ -1582,35 +1580,30 @@ void layout_find_dimensions(int available_width, int viewport_height,
css_computed_border_top_width(style, &value,
&unit);
bstyle = css_computed_border_top_style(style);
- bcolor = css_computed_border_top_color(style,
- &color);
+ css_computed_border_top_color(style, &color);
break;
case RIGHT:
css_computed_border_right_width(style, &value,
&unit);
bstyle = css_computed_border_right_style(style);
- bcolor = css_computed_border_right_color(style,
- &color);
+ css_computed_border_right_color(style, &color);
break;
case BOTTOM:
css_computed_border_bottom_width(style, &value,
&unit);
bstyle = css_computed_border_bottom_style(
style);
- bcolor = css_computed_border_bottom_color(style,
- &color);
+ css_computed_border_bottom_color(style, &color);
break;
case LEFT:
css_computed_border_left_width(style, &value,
&unit);
bstyle = css_computed_border_left_style(style);
- bcolor = css_computed_border_left_color(style,
- &color);
+ css_computed_border_left_color(style, &color);
break;
}
border[i].style = bstyle;
- border[i].color = bcolor;
border[i].c = color;
if (bstyle == CSS_BORDER_STYLE_HIDDEN ||
diff --git a/render/table.c b/render/table.c
index f2f46dd44..ad7e3bd3c 100644
--- a/render/table.c
+++ b/render/table.c
@@ -244,8 +244,7 @@ void table_used_border_for_cell(struct box *cell)
/* Left border */
cell->border[LEFT].style =
css_computed_border_left_style(cell->style);
- cell->border[LEFT].color =
- css_computed_border_left_color(cell->style,
+ css_computed_border_left_color(cell->style,
&cell->border[LEFT].c);
css_computed_border_left_width(cell->style, &width, &unit);
cell->border[LEFT].width =
@@ -254,8 +253,7 @@ void table_used_border_for_cell(struct box *cell)
/* Top border */
cell->border[TOP].style =
css_computed_border_top_style(cell->style);
- cell->border[TOP].color =
- css_computed_border_top_color(cell->style,
+ css_computed_border_top_color(cell->style,
&cell->border[TOP].c);
css_computed_border_top_width(cell->style, &width, &unit);
cell->border[TOP].width =
@@ -264,8 +262,7 @@ void table_used_border_for_cell(struct box *cell)
/* Right border */
cell->border[RIGHT].style =
css_computed_border_right_style(cell->style);
- cell->border[RIGHT].color =
- css_computed_border_right_color(cell->style,
+ css_computed_border_right_color(cell->style,
&cell->border[RIGHT].c);
css_computed_border_right_width(cell->style, &width, &unit);
cell->border[RIGHT].width =
@@ -274,8 +271,7 @@ void table_used_border_for_cell(struct box *cell)
/* Bottom border */
cell->border[BOTTOM].style =
css_computed_border_bottom_style(cell->style);
- cell->border[BOTTOM].color =
- css_computed_border_bottom_color(cell->style,
+ css_computed_border_bottom_color(cell->style,
&cell->border[BOTTOM].c);
css_computed_border_bottom_width(cell->style, &width, &unit);
cell->border[BOTTOM].width =
@@ -423,7 +419,6 @@ void table_used_left_border_for_cell(struct box *cell)
/* a now contains the used left border for the cell */
cell->border[LEFT].style = a.style;
- cell->border[LEFT].color = a.color;
cell->border[LEFT].c = a.c;
cell->border[LEFT].width =
FIXTOINT(nscss_len2px(a.width, a.unit, cell->style));
@@ -443,7 +438,7 @@ void table_used_top_border_for_cell(struct box *cell)
/* Initialise to computed top border for cell */
a.style = css_computed_border_top_style(cell->style);
- a.color = css_computed_border_top_color(cell->style, &a.c);
+ css_computed_border_top_color(cell->style, &a.c);
css_computed_border_top_width(cell->style, &a.width, &a.unit);
a.width = nscss_len2px(a.width, a.unit, cell->style);
a.unit = CSS_UNIT_PX;
@@ -451,7 +446,7 @@ void table_used_top_border_for_cell(struct box *cell)
/* Top border of row */
b.style = css_computed_border_top_style(row->style);
- b.color = css_computed_border_top_color(row->style, &b.c);
+ css_computed_border_top_color(row->style, &b.c);
css_computed_border_top_width(row->style, &b.width, &b.unit);
b.width = nscss_len2px(b.width, b.unit, row->style);
b.unit = CSS_UNIT_PX;
@@ -516,7 +511,6 @@ void table_used_top_border_for_cell(struct box *cell)
/* a now contains the used top border for the cell */
cell->border[TOP].style = a.style;
- cell->border[TOP].color = a.color;
cell->border[TOP].c = a.c;
cell->border[TOP].width =
FIXTOINT(nscss_len2px(a.width, a.unit, cell->style));
@@ -536,7 +530,7 @@ void table_used_right_border_for_cell(struct box *cell)
/* Initialise to computed right border for cell */
a.style = css_computed_border_right_style(cell->style);
- a.color = css_computed_border_right_color(cell->style, &a.c);
+ css_computed_border_right_color(cell->style, &a.c);
css_computed_border_right_width(cell->style, &a.width, &a.unit);
a.width = nscss_len2px(a.width, a.unit, cell->style);
a.unit = CSS_UNIT_PX;
@@ -608,7 +602,6 @@ void table_used_right_border_for_cell(struct box *cell)
/* a now contains the used right border for the cell */
cell->border[RIGHT].style = a.style;
- cell->border[RIGHT].color = a.color;
cell->border[RIGHT].c = a.c;
cell->border[RIGHT].width =
FIXTOINT(nscss_len2px(a.width, a.unit, cell->style));
@@ -628,7 +621,7 @@ void table_used_bottom_border_for_cell(struct box *cell)
/* Initialise to computed bottom border for cell */
a.style = css_computed_border_bottom_style(cell->style);
- a.color = css_computed_border_bottom_color(cell->style, &a.c);
+ css_computed_border_bottom_color(cell->style, &a.c);
css_computed_border_bottom_width(cell->style, &a.width, &a.unit);
a.width = nscss_len2px(a.width, a.unit, cell->style);
a.unit = CSS_UNIT_PX;
@@ -694,7 +687,6 @@ void table_used_bottom_border_for_cell(struct box *cell)
/* a now contains the used bottom border for the cell */
cell->border[BOTTOM].style = a.style;
- cell->border[BOTTOM].color = a.color;
cell->border[BOTTOM].c = a.c;
cell->border[BOTTOM].width =
FIXTOINT(nscss_len2px(a.width, a.unit, cell->style));