diff options
author | 2020-02-12 06:41:24 +0100 | |
---|---|---|
committer | 2020-02-12 06:41:24 +0100 | |
commit | 74dd79e97f83d3e9e13d87444740edeb353f9be8 (patch) | |
tree | 22c5d14e7aec9eb3d268424d6deaa3fad32513d9 | |
parent | 64097983f195ac1e923b6a1bd8cb0fc2c109fabc (diff) | |
download | iced-74dd79e97f83d3e9e13d87444740edeb353f9be8.tar.gz iced-74dd79e97f83d3e9e13d87444740edeb353f9be8.tar.bz2 iced-74dd79e97f83d3e9e13d87444740edeb353f9be8.zip |
Rename current `Path` to `path::Builder`
-rw-r--r-- | examples/clock/src/main.rs | 42 | ||||
-rw-r--r-- | wgpu/src/widget/canvas/frame.rs | 4 | ||||
-rw-r--r-- | wgpu/src/widget/canvas/path.rs | 32 |
3 files changed, 50 insertions, 28 deletions
diff --git a/examples/clock/src/main.rs b/examples/clock/src/main.rs index dc2c06cf..76752d20 100644 --- a/examples/clock/src/main.rs +++ b/examples/clock/src/main.rs @@ -86,17 +86,17 @@ impl canvas::layer::Drawable for LocalTime { let center = frame.center(); let radius = frame.width().min(frame.height()) as f32 / 2.0; - let mut path = canvas::Path::new(); - - path.arc(canvas::path::Arc { - center, - radius, - start_angle: 0.0, - end_angle: 360.0 * 2.0 * std::f32::consts::PI, + let path = canvas::Path::new(|path| { + path.arc(canvas::path::Arc { + center, + radius, + start_angle: 0.0, + end_angle: 360.0 * 2.0 * std::f32::consts::PI, + }) }); frame.fill( - path, + &path, canvas::Fill::Color(Color::from_rgb8(0x12, 0x93, 0xD8)), ); @@ -104,7 +104,7 @@ impl canvas::layer::Drawable for LocalTime { n: u32, total: u32, length: f32, - path: &mut canvas::Path, + path: &mut canvas::path::Builder, ) { let turns = n as f32 / total as f32; let t = 2.0 * std::f32::consts::PI * (turns - 0.25); @@ -115,16 +115,16 @@ impl canvas::layer::Drawable for LocalTime { path.line_to(Point::new(x, y)); } - let mut path = canvas::Path::new(); - - path.move_to(center); - draw_handle(self.hour, 12, 0.6 * radius, &mut path); + let path = canvas::Path::new(|path| { + path.move_to(center); + draw_handle(self.hour, 12, 0.6 * radius, path); - path.move_to(center); - draw_handle(self.minute, 60, 0.9 * radius, &mut path); + path.move_to(center); + draw_handle(self.minute, 60, 0.9 * radius, path) + }); frame.stroke( - path, + &path, canvas::Stroke { width: 4.0, color: Color::WHITE, @@ -133,13 +133,13 @@ impl canvas::layer::Drawable for LocalTime { }, ); - let mut path = canvas::Path::new(); - - path.move_to(center); - draw_handle(self.second, 60, 0.9 * radius, &mut path); + let path = canvas::Path::new(|path| { + path.move_to(center); + draw_handle(self.second, 60, 0.9 * radius, path) + }); frame.stroke( - path, + &path, canvas::Stroke { width: 2.0, color: Color::WHITE, diff --git a/wgpu/src/widget/canvas/frame.rs b/wgpu/src/widget/canvas/frame.rs index 65c22c0c..e5daeedb 100644 --- a/wgpu/src/widget/canvas/frame.rs +++ b/wgpu/src/widget/canvas/frame.rs @@ -33,7 +33,7 @@ impl Frame { Point::new(self.width as f32 / 2.0, self.height as f32 / 2.0) } - pub fn fill(&mut self, path: Path, fill: Fill) {} + pub fn fill(&mut self, path: &Path, fill: Fill) {} - pub fn stroke(&mut self, path: Path, stroke: Stroke) {} + pub fn stroke(&mut self, path: &Path, stroke: Stroke) {} } diff --git a/wgpu/src/widget/canvas/path.rs b/wgpu/src/widget/canvas/path.rs index 2732b1bd..86326e8e 100644 --- a/wgpu/src/widget/canvas/path.rs +++ b/wgpu/src/widget/canvas/path.rs @@ -1,13 +1,28 @@ use iced_native::{Point, Vector}; -#[allow(missing_debug_implementations)] +#[derive(Debug, Clone)] pub struct Path { - raw: lyon::path::Builder, + raw: lyon::path::Path, } impl Path { - pub fn new() -> Path { - Path { + pub fn new(f: impl FnOnce(&mut Builder)) -> Self { + let mut builder = Builder::new(); + + f(&mut builder); + + builder.build() + } +} + +#[allow(missing_debug_implementations)] +pub struct Builder { + raw: lyon::path::Builder, +} + +impl Builder { + pub fn new() -> Builder { + Builder { raw: lyon::path::Path::builder(), } } @@ -24,7 +39,7 @@ impl Path { #[inline] pub fn arc(&mut self, arc: Arc) { - self.ellipse(arc.into()) + self.ellipse(arc.into()); } #[inline] @@ -46,6 +61,13 @@ impl Path { pub fn close(&mut self) { self.raw.close() } + + #[inline] + pub fn build(self) -> Path { + Path { + raw: self.raw.build(), + } + } } #[derive(Debug, Clone, Copy)] |