diff options
Diffstat (limited to 'core/src/rendering.rs')
-rw-r--r-- | core/src/rendering.rs | 53 |
1 files changed, 31 insertions, 22 deletions
diff --git a/core/src/rendering.rs b/core/src/rendering.rs index f7a0189..9c9f9e4 100644 --- a/core/src/rendering.rs +++ b/core/src/rendering.rs | |||
@@ -1,7 +1,7 @@ | |||
1 | use super::core_shapes::*; | 1 | use super::core_shapes::*; |
2 | use super::styles::{DefinedDashStyle, DefinedStrokeStyle, FillStyle, Pattern}; | 2 | use super::styles::{DefinedDashStyle, DefinedStrokeStyle, FillStyle, Pattern}; |
3 | use super::text::{DefinedFontDescription, FontDescription}; | 3 | use super::text::{DefinedFontDescription, FontDescription}; |
4 | use super::types::DefinedShapeContext; | 4 | use super::types::DefinedCoreShapeContext; |
5 | 5 | ||
6 | pub trait Renderer { | 6 | pub trait Renderer { |
7 | fn move_to(&mut self, x: f64, y: f64); | 7 | fn move_to(&mut self, x: f64, y: f64); |
@@ -20,7 +20,16 @@ pub trait Renderer { | |||
20 | } | 20 | } |
21 | 21 | ||
22 | pub trait Render { | 22 | pub trait Render { |
23 | fn render(&self, context: DefinedShapeContext, renderer: &mut dyn Renderer); | 23 | fn render(&self, context: DefinedCoreShapeContext, renderer: &mut dyn Renderer); |
24 | } | ||
25 | |||
26 | impl Render for DefinedCoreShape { | ||
27 | fn render(&self, context: DefinedCoreShapeContext, renderer: &mut dyn Renderer) { | ||
28 | match self { | ||
29 | Self::Rectangle(r) => r.render(context, renderer), | ||
30 | Self::Text(t) => t.render(context, renderer), | ||
31 | } | ||
32 | } | ||
24 | } | 33 | } |
25 | 34 | ||
26 | fn draw(fill: &FillStyle, stroke: &DefinedStrokeStyle, renderer: &mut dyn Renderer) { | 35 | fn draw(fill: &FillStyle, stroke: &DefinedStrokeStyle, renderer: &mut dyn Renderer) { |
@@ -47,7 +56,7 @@ fn draw(fill: &FillStyle, stroke: &DefinedStrokeStyle, renderer: &mut dyn Render | |||
47 | } | 56 | } |
48 | 57 | ||
49 | impl Render for Rectangle { | 58 | impl Render for Rectangle { |
50 | fn render(&self, context: DefinedShapeContext, renderer: &mut dyn Renderer) { | 59 | fn render(&self, context: DefinedCoreShapeContext, renderer: &mut dyn Renderer) { |
51 | let bounds = &context.bounds; | 60 | let bounds = &context.bounds; |
52 | renderer.rectangle(bounds.left, bounds.top, bounds.width, bounds.height); | 61 | renderer.rectangle(bounds.left, bounds.top, bounds.width, bounds.height); |
53 | draw(&context.fill, &context.stroke, renderer); | 62 | draw(&context.fill, &context.stroke, renderer); |
@@ -55,7 +64,7 @@ impl Render for Rectangle { | |||
55 | } | 64 | } |
56 | 65 | ||
57 | impl Render for DefinedText { | 66 | impl Render for DefinedText { |
58 | fn render(&self, context: DefinedShapeContext, renderer: &mut dyn Renderer) { | 67 | fn render(&self, context: DefinedCoreShapeContext, renderer: &mut dyn Renderer) { |
59 | // TODO: select font, style, text shaping (renderer specific), etc. | 68 | // TODO: select font, style, text shaping (renderer specific), etc. |
60 | let bounds = &context.bounds; | 69 | let bounds = &context.bounds; |
61 | //renderer.move_to(bounds.left, bounds.top + self.font.size); | 70 | //renderer.move_to(bounds.left, bounds.top + self.font.size); |
@@ -66,21 +75,21 @@ impl Render for DefinedText { | |||
66 | } | 75 | } |
67 | } | 76 | } |
68 | 77 | ||
69 | impl Render for DefinedStraightPath { | 78 | // impl Render for DefinedStraightPath { |
70 | fn render(&self, context: DefinedShapeContext, renderer: &mut dyn Renderer) { | 79 | // fn render(&self, context: DefinedShapeContext, renderer: &mut dyn Renderer) { |
71 | let mut iter = self.points.iter(); | 80 | // let mut iter = self.points.iter(); |
72 | 81 | // | |
73 | let first_point = match iter.next() { | 82 | // let first_point = match iter.next() { |
74 | Some(point) => point, | 83 | // Some(point) => point, |
75 | None => return, | 84 | // None => return, |
76 | }; | 85 | // }; |
77 | 86 | // | |
78 | renderer.move_to(first_point.x, first_point.y); | 87 | // renderer.move_to(first_point.x, first_point.y); |
79 | 88 | // | |
80 | for point in iter { | 89 | // for point in iter { |
81 | renderer.line_to(point.x, point.y); | 90 | // renderer.line_to(point.x, point.y); |
82 | } | 91 | // } |
83 | 92 | // | |
84 | draw(&context.fill, &context.stroke, renderer); | 93 | // draw(&context.fill, &context.stroke, renderer); |
85 | } | 94 | // } |
86 | } | 95 | // } |