@@ -7,20 +7,37 @@ use svg_render;
77use text_render;
88use representation:: Representation ;
99
10- #[ derive( Debug ) ]
10+ #[ derive( Debug , Clone ) ]
1111pub enum Marker {
1212 Circle ,
1313 Square ,
1414}
1515
16- #[ derive( Debug ) ]
16+ #[ derive( Debug , Clone ) ]
1717pub struct Style {
18- pub marker : Marker ,
18+ pub marker : Option < Marker > ,
19+ pub colour : Option < String > ,
1920}
2021
2122impl Style {
22- fn defaults ( ) -> Self {
23- Style { marker : Marker :: Circle }
23+ pub fn new ( ) -> Self {
24+ Style {
25+ marker : None ,
26+ colour : None ,
27+ }
28+ }
29+
30+ pub fn fill_defaults ( & self ) -> Self {
31+ Style {
32+ marker : match self . marker {
33+ Some ( ref m) => Some ( m. clone ( ) ) ,
34+ None => Some ( Marker :: Circle ) ,
35+ } ,
36+ colour : match self . colour {
37+ Some ( ref c) => Some ( c. clone ( ) ) ,
38+ None => Some ( "" . into ( ) ) ,
39+ }
40+ }
2441 }
2542}
2643
@@ -29,7 +46,7 @@ impl Style {
2946#[ derive( Debug ) ]
3047pub struct Scatter {
3148 pub data : Vec < ( f64 , f64 ) > ,
32- pub style : Style ,
49+ style : Style ,
3350}
3451
3552impl Scatter {
@@ -41,7 +58,7 @@ impl Scatter {
4158
4259 Scatter {
4360 data : data,
44- style : Style :: defaults ( ) ,
61+ style : Style :: new ( ) ,
4562 }
4663 }
4764
@@ -50,6 +67,10 @@ impl Scatter {
5067 self
5168 }
5269
70+ pub fn get_style ( & self ) -> Style {
71+ self . style . clone ( )
72+ }
73+
5374 fn x_range ( & self ) -> ( f64 , f64 ) {
5475 let mut min = f64:: INFINITY ;
5576 let mut max = f64:: NEG_INFINITY ;
@@ -86,7 +107,7 @@ impl Representation for Scatter {
86107 face_width : f64 ,
87108 face_height : f64 )
88109 -> svg:: node:: element:: Group {
89- svg_render:: draw_face_points ( self , & x_axis, & y_axis, face_width, face_height, & self . style )
110+ svg_render:: draw_face_points ( self , & x_axis, & y_axis, face_width, face_height, & self . style . fill_defaults ( ) )
90111 }
91112
92113 fn to_text ( & self ,
@@ -95,6 +116,6 @@ impl Representation for Scatter {
95116 face_width : u32 ,
96117 face_height : u32 )
97118 -> String {
98- text_render:: render_face_points ( self , & x_axis, & y_axis, face_width, face_height, & self . style )
119+ text_render:: render_face_points ( self , & x_axis, & y_axis, face_width, face_height, & self . style . fill_defaults ( ) )
99120 }
100121}
0 commit comments