aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBryan Bell <bryan.w.bell@gmail.com>2014-05-21 16:30:15 -0700
committerBryan Bell <bryan.w.bell@gmail.com>2014-05-21 16:30:15 -0700
commit13bfaeb97d61a153d00c34f648ec260fb0632241 (patch)
tree676fd2dce9c16869d44ae826ca952fcab81e2f65 /src
parent432b8cdb3bf2cb5aa784e7cb2d7406f92db9608f (diff)
downloadservo-13bfaeb97d61a153d00c34f648ec260fb0632241.tar.gz
servo-13bfaeb97d61a153d00c34f648ec260fb0632241.zip
Double border support
Diffstat (limited to 'src')
-rw-r--r--src/components/gfx/render_context.rs18
-rw-r--r--src/components/style/properties.rs.mako3
-rwxr-xr-xsrc/test/html/test_border.html6
-rw-r--r--src/test/ref/borders.pngbin2993 -> 3027 bytes
-rw-r--r--src/test/ref/borders_a.html6
5 files changed, 31 insertions, 2 deletions
diff --git a/src/components/gfx/render_context.rs b/src/components/gfx/render_context.rs
index 494a9952302..6d4d62d79bc 100644
--- a/src/components/gfx/render_context.rs
+++ b/src/components/gfx/render_context.rs
@@ -159,6 +159,9 @@ impl<'a> RenderContext<'a> {
border_style::solid => {
self.draw_solid_border_segment(direction,bounds,border,color_select);
}
+ border_style::double => {
+ self.draw_double_border_segment(direction, bounds, border, color_select);
+ }
border_style::groove | border_style::ridge => {
self.draw_groove_ridge_border_segment(direction, bounds, border, color_select, style_select);
}
@@ -182,6 +185,9 @@ impl<'a> RenderContext<'a> {
border_style::solid => {
self.draw_solid_border_segment(Right,bounds,border,color);
}
+ border_style::double => {
+ self.draw_double_border_segment(Right, bounds, border, color);
+ }
border_style::groove | border_style::ridge => {
self.draw_groove_ridge_border_segment(Right, bounds, border, color, style);
}
@@ -329,6 +335,18 @@ impl<'a> RenderContext<'a> {
return Color(color.r * scale_factor, color.g * scale_factor, color.b * scale_factor, color.a);
}
+ fn draw_double_border_segment(&self, direction: Direction, bounds: &Rect<Au>, border: SideOffsets2D<f32>, color: Color) {
+ let scaled_border = SideOffsets2D::new((1.0/3.0) * border.top,
+ (1.0/3.0) * border.right,
+ (1.0/3.0) * border.bottom,
+ (1.0/3.0) * border.left);
+ let inner_scaled_bounds = self.get_scaled_bounds(bounds, border, 2.0/3.0);
+ // draw the outer portion of the double border.
+ self.draw_solid_border_segment(direction, bounds, scaled_border, color);
+ // draw the inner portion of the double border.
+ self.draw_border_path(inner_scaled_bounds, direction, scaled_border, color);
+ }
+
fn draw_groove_ridge_border_segment(&self,
direction: Direction,
bounds: &Rect<Au>,
diff --git a/src/components/style/properties.rs.mako b/src/components/style/properties.rs.mako
index 184a0f58f0e..2f928bfa812 100644
--- a/src/components/style/properties.rs.mako
+++ b/src/components/style/properties.rs.mako
@@ -221,8 +221,7 @@ pub mod longhands {
${predefined_type("border-%s-color" % side, "CSSColor", "CurrentColor")}
% endfor
- // double
- ${single_keyword("border-top-style", values="none solid dotted dashed hidden groove ridge inset outset")}
+ ${single_keyword("border-top-style", values="none solid double dotted dashed hidden groove ridge inset outset")}
% for side in ["right", "bottom", "left"]:
<%self:longhand name="border-${side}-style", no_super="True">
diff --git a/src/test/html/test_border.html b/src/test/html/test_border.html
index 3b81f02982d..6e8d60f5d1a 100755
--- a/src/test/html/test_border.html
+++ b/src/test/html/test_border.html
@@ -16,6 +16,11 @@
border-width: 10px;
border-color: yellow green red black;
}
+#double{
+ border-style: double;
+ border-width: 10px;
+ border-color: yellow green red black;
+}
#dashed{
border-style: dashed;
border-width: 10px;
@@ -67,6 +72,7 @@
<div id="none"> none test.</div>
<div id="hidden"> hidden test.</div>
<div id="solid"> solid test</div>
+<div id="double"> double test</div>
<div id="dashed"> dashed test</div>
<div id="dotted"> dotted test</div>
<div id="groove"> groove test</div>
diff --git a/src/test/ref/borders.png b/src/test/ref/borders.png
index 7de3f724b7c..7d7ee68b35a 100644
--- a/src/test/ref/borders.png
+++ b/src/test/ref/borders.png
Binary files differ
diff --git a/src/test/ref/borders_a.html b/src/test/ref/borders_a.html
index ee7bd78db7b..42657346f47 100644
--- a/src/test/ref/borders_a.html
+++ b/src/test/ref/borders_a.html
@@ -12,6 +12,11 @@
border-width: 10px;
border-color: green red yellow black;
}
+#double{
+ border-style: double;
+ border-width: 10px;
+ border-color: yellow;
+}
#solid{
border-style: solid;
border-width: 10px;
@@ -65,6 +70,7 @@
<div id="none"></div>
<div id="hidden"></div>
<div id="solid"></div>
+<div id="double"></div>
<div id="dashed"></div>
<div id="dotted"></div>
<div id="groove"></div>