diff options
author | Bryan Bell <bryan.w.bell@gmail.com> | 2014-05-21 16:30:15 -0700 |
---|---|---|
committer | Bryan Bell <bryan.w.bell@gmail.com> | 2014-05-21 16:30:15 -0700 |
commit | 13bfaeb97d61a153d00c34f648ec260fb0632241 (patch) | |
tree | 676fd2dce9c16869d44ae826ca952fcab81e2f65 /src | |
parent | 432b8cdb3bf2cb5aa784e7cb2d7406f92db9608f (diff) | |
download | servo-13bfaeb97d61a153d00c34f648ec260fb0632241.tar.gz servo-13bfaeb97d61a153d00c34f648ec260fb0632241.zip |
Double border support
Diffstat (limited to 'src')
-rw-r--r-- | src/components/gfx/render_context.rs | 18 | ||||
-rw-r--r-- | src/components/style/properties.rs.mako | 3 | ||||
-rwxr-xr-x | src/test/html/test_border.html | 6 | ||||
-rw-r--r-- | src/test/ref/borders.png | bin | 2993 -> 3027 bytes | |||
-rw-r--r-- | src/test/ref/borders_a.html | 6 |
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 Binary files differindex 7de3f724b7c..7d7ee68b35a 100644 --- a/src/test/ref/borders.png +++ b/src/test/ref/borders.png 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> |