From: Ian Jackson Date: Sun, 1 May 2022 19:30:23 +0000 (+0100) Subject: Replace make_svg_defs with render X-Git-Tag: otter-1.1.0~332 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=2982f5547015c0fac034c5d786aa453ae5992599;p=otter.git Replace make_svg_defs with render 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 --- diff --git a/daemon/session.rs b/daemon/session.rs index 9947e621..aa6172de 100644 --- a/daemon/session.rs +++ b/daemon/session.rs @@ -143,9 +143,9 @@ fn session_inner(form: Json, 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); diff --git a/src/pcrender.rs b/src/pcrender.rs index 4c55c1e2..451aea9a 100644 --- a/src/pcrender.rs +++ b/src/pcrender.rs @@ -87,6 +87,12 @@ impl PriOccultedGeneral { } } +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;