summaryrefslogtreecommitdiffstats
path: root/graphics/src/widget/canvas/frame.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-06-02 02:21:07 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-06-02 02:21:07 +0200
commitede4440e997191c947697ee7aab89f32b9d0b2ea (patch)
tree166eac740a736d3effbd4054509a61ee12f58666 /graphics/src/widget/canvas/frame.rs
parentb96d87ff6917e7dc75178e4c623d20d577ef583f (diff)
downloadiced-ede4440e997191c947697ee7aab89f32b9d0b2ea.tar.gz
iced-ede4440e997191c947697ee7aab89f32b9d0b2ea.tar.bz2
iced-ede4440e997191c947697ee7aab89f32b9d0b2ea.zip
Introduce fill rule setting in `canvas`
Diffstat (limited to 'graphics/src/widget/canvas/frame.rs')
-rw-r--r--graphics/src/widget/canvas/frame.rs27
1 files changed, 10 insertions, 17 deletions
diff --git a/graphics/src/widget/canvas/frame.rs b/graphics/src/widget/canvas/frame.rs
index 48d28d95..b5c6a2b1 100644
--- a/graphics/src/widget/canvas/frame.rs
+++ b/graphics/src/widget/canvas/frame.rs
@@ -92,29 +92,22 @@ impl Frame {
BuffersBuilder, FillOptions, FillTessellator,
};
+ let Fill { color, rule } = fill.into();
+
let mut buffers = BuffersBuilder::new(
&mut self.buffers,
- FillVertex(match fill.into() {
- Fill::Color(color) => color.into_linear(),
- }),
+ FillVertex(color.into_linear()),
);
let mut tessellator = FillTessellator::new();
+ let options = FillOptions::default().with_fill_rule(rule.into());
let result = if self.transforms.current.is_identity {
- tessellator.tessellate_path(
- path.raw(),
- &FillOptions::default(),
- &mut buffers,
- )
+ tessellator.tessellate_path(path.raw(), &options, &mut buffers)
} else {
let path = path.transformed(&self.transforms.current.raw);
- tessellator.tessellate_path(
- path.raw(),
- &FillOptions::default(),
- &mut buffers,
- )
+ tessellator.tessellate_path(path.raw(), &options, &mut buffers)
};
let _ = result.expect("Tessellate path");
@@ -132,11 +125,11 @@ impl Frame {
) {
use lyon::tessellation::{BuffersBuilder, FillOptions};
+ let Fill { color, rule } = fill.into();
+
let mut buffers = BuffersBuilder::new(
&mut self.buffers,
- FillVertex(match fill.into() {
- Fill::Color(color) => color.into_linear(),
- }),
+ FillVertex(color.into_linear()),
);
let top_left =
@@ -151,7 +144,7 @@ impl Frame {
let _ = lyon::tessellation::basic_shapes::fill_rectangle(
&lyon::math::Rect::new(top_left, size.into()),
- &FillOptions::default(),
+ &FillOptions::default().with_fill_rule(rule.into()),
&mut buffers,
)
.expect("Fill rectangle");