From 99f5e3371ee4e24b2eee459b6af920a15f5ce5ac Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 12 Jan 2021 01:07:58 +0000 Subject: [PATCH] otterlib: wip preview, ready for inseveral Signed-off-by: Ian Jackson --- src/bin/otterlib.rs | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/src/bin/otterlib.rs b/src/bin/otterlib.rs index 6016fc4d..904e9253 100644 --- a/src/bin/otterlib.rs +++ b/src/bin/otterlib.rs @@ -43,6 +43,18 @@ fn preview(items: Vec) { size: Vec, }; + const SEVERAL: usize = 3; + + impl Prep { + fn want_several(&self) -> bool { + self.size[0] < 20.0 + } + fn face_cols(&self) -> usize { + usize::from(self.pc.nfaces()) + * if self.want_several() { SEVERAL } else { 1 } + } + } + let pieces : Vec = items.into_iter().map(|it| { let spec = ItemSpec { lib: it.0, item: it.1.itemname }; (||{ @@ -68,27 +80,36 @@ fn preview(items: Vec) { })().with_context(|| format!("{:?}", &spec)) }).collect::,_>>()?; - let max_faces = pieces.iter().map(|s| s.pc.nfaces()).max().unwrap_or(1); + let max_facecols = pieces.iter().map(|s| s.face_cols()).max().unwrap_or(1); let max_uos = pieces.iter().map(|s| s.uos.len()).max().unwrap_or(0); println!(r#""#); - for Prep { spec, pc, uos, bbox, size } in &pieces { + for s in &pieces { + let Prep { spec, pc, uos, bbox, size } = s; println!(r#""#); println!(r#""#, pc.describe_html(None).0); - let only1 = pc.nfaces() == 1; + let only1 = s.face_cols() == 1; let getpri = |face: FaceId| PieceRenderInstructions { id: default(), angle: VisiblePieceAngle(default()), face }; - for face in 0..(if only1 { 1 } else { max_faces }) { + for facecol in 0..(if only1 { 1 } else { max_facecols }) { + let (face, inseveral) = if s.want_several() { + (facecol / SEVERAL, facecol % SEVERAL) + } else { + (facecol, 0) + }; print!(r#"
{}"#, &spec.lib); println!(r#"{}"#, &spec.item); println!(r#"{}"#); - if face < pc.nfaces() { + if face < (pc.nfaces() as usize) { let pri = getpri(face.into()); let viewport = [bbox[0].clone(), size.clone()] @@ -104,7 +125,7 @@ fn preview(items: Vec) { &viewport, wh[0], wh[1]); let mut html = Html("".into()); pc.svg_piece(&mut html, &pri)?; - println!("{}", html.0); + println!("{}", html.0); // // println!(r#" width={} height={} {:?}"#, // &viewport, size[0], size[1], &surround); -- 2.30.2