chiark / gitweb /
fix new_from_path
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 21 Jul 2020 21:21:23 +0000 (22:21 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 21 Jul 2020 21:21:42 +0000 (22:21 +0100)
src/pieces.rs

index 87d5ba8e4c11243a63bddf8cbfd0c19953af0721..6674e35ef2a9a47edeeaa1006bdc281a0d57b9a1 100644 (file)
@@ -4,23 +4,16 @@ use crate::imports::*;
 type ColourMap = IndexVec<FaceId,Colour>;
 
 #[derive(Debug,Serialize,Deserialize)]
-#[serde(try_from="SimpleShapeLoad")]
 struct SimpleShape {
   desc : String,
   path : String,
-  #[serde(skip)]
   scaled_path : String,
   approx_dia : Coord,
   colours : ColourMap,
 }
 
-#[derive(Deserialize)]
-#[serde(transparent)]
-struct SimpleShapeLoad(SimpleShape);
-
 const SELECT_SCALE : f64 = 1.1;
 
-
 #[derive(Copy,Clone,Debug,Error)]
 pub enum SVGProcessingError {
   UnknownOperator,
@@ -114,22 +107,12 @@ impl Piece for SimpleShape {
   }
 }
 
-impl TryFrom<SimpleShapeLoad> for SimpleShape {
-  type Error = SVGProcessingError;
-  #[throws(SE)]
-  fn try_from(l: SimpleShapeLoad) -> SimpleShape {
-    let mut s = l.0;
-    s.scaled_path = svg_rescale_path(&s.path, SELECT_SCALE)?;
-    s
-  }
-}
-
 impl SimpleShape {
   fn new_from_path(desc: String, path: String, approx_dia: Coord,
                    colours: ColourMap) -> Result<Box<dyn Piece>,SE> {
+    let scaled_path = svg_rescale_path(&path, SELECT_SCALE)?;
     Ok(Box::new(SimpleShape {
-      scaled_path : Default::default(),
-      desc, approx_dia, path, colours,
+      scaled_path, desc, approx_dia, path, colours,
     }))
   }
   fn new_square(edgelen: Coord, colours: ColourMap) -> Result<Box<dyn Piece>,SE> {