chiark / gitweb /
Replace make_svg_defs with render
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 1 May 2022 19:30:23 +0000 (20:30 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 1 May 2022 19:30:23 +0000 (20:30 +0100)
This now demonstrates that there aren't any more svg generation sites
that forget to propagate a possibly-changed desc.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/session.rs
src/pcrender.rs

index 9947e62182bec1e20a75e80c383c4829ba859a53..aa6172de05af899ac1447eba008495dd8c305d8b 100644 (file)
@@ -143,9 +143,9 @@ fn session_inner(form: Json<SessionForm>,
                           piece, gpc, ipc);
       let pri = if let Some(pri) = pri { pri } else { continue /*invisible*/};
 
-      let (defs, bbox) = pri.make_svg_defs(ioccults, &ig.gs, gpc, ipc)?;
+      let Rendered { svg: defs, bbox, desc } =
+        pri.render(ioccults, &ig.gs, gpc, ipc)?;
       alldefs.push((pri.vpid, defs));
-      let desc = pri.describe(ioccults,&ig.gs.occults, gpc, ipc);
 
       let vangle = pri.angle(gpc).to_compass();
       let (pos, zlevel) = pri.pos_zlevel(gpc);
index 4c55c1e2a020d0ff5b20762701b172735c57f616..451aea9a3f1b496e56ce1de8e868b5e39e146171 100644 (file)
@@ -87,6 +87,12 @@ impl<P,Z> PriOccultedGeneral<P,Z> {
   }
 }
 
+pub struct Rendered {
+  pub svg: Html,
+  pub desc: Html,
+  pub bbox: Rect,
+}
+
 impl PieceRenderInstructions {
   #[throws(IE)]
   pub fn map_piece_update_op(&self, ioccults: &IOccults, gs: &GameState,
@@ -127,8 +133,8 @@ impl PieceRenderInstructions {
     let (pos, zlevel) = pri.pos_zlevel(gpc);
     let occregion = gpc.occult.active_region(&gs.occults)?
       .map(|r| JsonString(r.clone()));
-    let (svg, bbox) = pri.make_svg_defs(ioccults, gs, gpc, ipc)?;
-    let desc = pri.describe(ioccults,&gs.occults, gpc, ipc);
+    let Rendered { svg, bbox, desc } = pri.render(ioccults, gs, gpc, ipc)?;
+
     let r = PreparedPieceState {
       pos, svg, desc, occregion, bbox,
       held       : gpc.held,
@@ -151,8 +157,7 @@ impl PieceRenderInstructions {
                          gpc: &GPiece, ipc: &IPiece)
                          -> PreparedPieceImage {
     let pri = self;
-    let (svg, bbox) = pri.make_svg_defs(ioccults, gs, gpc, ipc)?;
-    let desc = pri.describe(ioccults, &gs.occults, gpc, ipc);
+    let Rendered { svg, bbox, desc } = pri.render(ioccults, gs, gpc, ipc)?;
     let r = PreparedPieceImage {
       svg, desc, bbox,
       uos: pri.ui_operations(gs, gpc, ipc)?,
@@ -184,7 +189,16 @@ impl PieceRenderInstructions {
   }
 
   #[throws(IE)]
-  pub fn make_svg_defs(&self, ioccults: &IOccults, gs: &GameState,
+  pub fn render(&self, ioccults: &IOccults, gs: &GameState,
+                gpc: &GPiece, ipc: &IPiece) -> Rendered
+  {
+    let (svg, bbox) = self.make_just_svg_defs(ioccults, gs, gpc, ipc)?;
+    let desc = self.describe(ioccults,&gs.occults, gpc, ipc);
+    Rendered { svg, desc, bbox }
+  }
+
+  #[throws(IE)]
+  fn make_just_svg_defs(&self, ioccults: &IOccults, gs: &GameState,
                        gpc: &GPiece, ipc: &IPiece) -> (Html, Rect)
   {
     let pri = self;