aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas/raqote_backend.rs
diff options
context:
space:
mode:
authorpylbrecht <palbrecht@mailbox.org>2019-07-07 20:26:10 +0200
committerBastien Orivel <eijebong@bananium.fr>2019-08-21 19:08:17 +0200
commit398929ffefd1b718e22cbcdc6fa53824d9c3dfe4 (patch)
tree001f3cb24d39604ab23de2f6b249ccd62f8352f6 /components/canvas/raqote_backend.rs
parent4e51caeb7eb741e0fa99503ac0005bcf75ea5c78 (diff)
downloadservo-398929ffefd1b718e22cbcdc6fa53824d9c3dfe4.tar.gz
servo-398929ffefd1b718e22cbcdc6fa53824d9c3dfe4.zip
Implement fill() for raqote::DrawTarget
Diffstat (limited to 'components/canvas/raqote_backend.rs')
-rw-r--r--components/canvas/raqote_backend.rs37
1 files changed, 31 insertions, 6 deletions
diff --git a/components/canvas/raqote_backend.rs b/components/canvas/raqote_backend.rs
index 18d69176d9a..a80443af4a2 100644
--- a/components/canvas/raqote_backend.rs
+++ b/components/canvas/raqote_backend.rs
@@ -72,10 +72,11 @@ impl Backend for RaqoteBackend {
impl<'a> CanvasPaintState<'a> {
pub fn new(_antialias: AntialiasMode) -> CanvasPaintState<'a> {
+ let solid_src = raqote::SolidSource { r: 0, g: 0, b: 0, a: 255 };
CanvasPaintState {
draw_options: DrawOptions::Raqote(raqote::DrawOptions::new()),
- fill_style: Pattern::Raqote(()),
- stroke_style: Pattern::Raqote(()),
+ fill_style: Pattern::Raqote(raqote::Source::Solid(solid_src)),
+ stroke_style: Pattern::Raqote(raqote::Source::Solid(solid_src)),
stroke_opts: StrokeOptions::Raqote(Default::default(), PhantomData),
transform: Transform2D::identity(),
shadow_offset_x: 0.0,
@@ -86,10 +87,15 @@ impl<'a> CanvasPaintState<'a> {
}
}
-impl Pattern {
+impl Pattern<'_> {
pub fn is_zero_size_gradient(&self) -> bool {
match *self {
- Pattern::Raqote(()) => unimplemented!(),
+ Pattern::Raqote(_) => unimplemented!(),
+ }
+ }
+ pub fn as_raqote(&self) -> &raqote::Source {
+ match self {
+ Pattern::Raqote(p) => p,
}
}
}
@@ -123,6 +129,11 @@ impl DrawOptions {
DrawOptions::Raqote(draw_options) => draw_options.alpha = _val,
}
}
+ pub fn as_raqote(&self) -> &raqote::DrawOptions {
+ match self {
+ DrawOptions::Raqote(options) => options,
+ }
+ }
}
impl Path {
@@ -140,6 +151,12 @@ impl Path {
pub fn copy_to_builder(&self) -> Box<dyn GenericPathBuilder> {
unimplemented!()
}
+
+ pub fn as_raqote(&self) -> &raqote::Path {
+ match self {
+ Path::Raqote(p) => p,
+ }
+ }
}
impl GenericDrawTarget for raqote::DrawTarget {
@@ -200,8 +217,8 @@ impl GenericDrawTarget for raqote::DrawTarget {
) {
unimplemented!();
}
- fn fill(&mut self, _path: &Path, _pattern: Pattern, _draw_options: &DrawOptions) {
- unimplemented!();
+ fn fill(&mut self, path: &Path, pattern: Pattern, draw_options: &DrawOptions) {
+ self.fill(path.as_raqote(), pattern.as_raqote(), draw_options.as_raqote());
}
fn fill_rect(
&mut self,
@@ -363,3 +380,11 @@ impl ToRaqoteStyle for LineCapStyle {
}
}
}
+
+// TODO(pylbrecht)
+#[cfg(feature = "raqote_backend")]
+impl Clone for Pattern<'_> {
+ fn clone(&self) -> Self {
+ unimplemented!();
+ }
+}