This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

✨ Add remove_objects_in

+54 -10
+6
src/canvas.rs
··· 439 439 return self.height() as f32 / self.width() as f32; 440 440 } 441 441 442 + pub fn remove_all_objects_in(&mut self, region: &Region) { 443 + self.layers 444 + .iter_mut() 445 + .for_each(|layer| layer.remove_all_objects_in(region)); 446 + } 447 + 442 448 /// returns a list of all unique filters used throughout the canvas 443 449 /// used to only generate one definition per filter 444 450 ///
+16
src/examples.rs
··· 4 4 5 5 pub fn dna_analysis_machine() -> Canvas { 6 6 let mut canvas = Canvas::new(vec!["root"]); 7 + 8 + canvas.colormap = ColorMapping { 9 + black: "#000000".into(), 10 + white: "#ffffff".into(), 11 + red: "#cf0a2b".into(), 12 + green: "#22e753".into(), 13 + blue: "#2734e6".into(), 14 + yellow: "#f8e21e".into(), 15 + orange: "#f05811".into(), 16 + purple: "#6a24ec".into(), 17 + brown: "#a05634".into(), 18 + pink: "#e92e76".into(), 19 + gray: "#81a0a8".into(), 20 + cyan: "#4fecec".into(), 21 + }; 22 + 7 23 canvas.set_grid_size(16, 9); 8 24 canvas.set_background(Color::Black); 9 25 let mut hatches_layer = Layer::new("root");
+7 -1
src/layer.rs
··· 1 - use crate::{ColorMapping, ColoredObject, Fill, Filter, Object, ObjectSizes}; 1 + use crate::{ColorMapping, ColoredObject, Containable, Fill, Filter, Object, ObjectSizes, Region}; 2 2 use anyhow::Context; 3 3 use std::collections::HashMap; 4 4 use wasm_bindgen::prelude::*; 5 + use web_sys::js_sys::RegExp; 5 6 6 7 #[derive(Debug, Clone, Default)] 7 8 // #[wasm_bindgen(getter_with_clone)] ··· 34 35 pub fn replace(&mut self, with: Layer) -> () { 35 36 self.objects = with.objects.clone(); 36 37 self.flush(); 38 + } 39 + 40 + pub fn remove_all_objects_in(&mut self, region: &Region) { 41 + self.objects 42 + .retain(|_, ColoredObject(o, ..)| !o.region().within(region)) 37 43 } 38 44 39 45 pub fn paint_all_objects(&mut self, fill: Fill) {
+7 -6
src/main.rs
··· 13 13 let mut canvas = canvas_from_cli(&args); 14 14 15 15 if args.cmd_image && !args.cmd_video { 16 - canvas.root().add_object( 17 - "hello", 18 - Object::Text(Anchor(3, 4), "hello world!".into(), 16.0) 19 - .color(Fill::Solid(Color::Black)), 20 - ); 21 - canvas.set_background(Color::White); 16 + // canvas.root().add_object( 17 + // "hello", 18 + // Object::Text(Anchor(3, 4), "hello world!".into(), 16.0) 19 + // .color(Fill::Solid(Color::Black)), 20 + // ); 21 + // canvas.set_background(Color::White); 22 + canvas = examples::dna_analysis_machine(); 22 23 let rendered = canvas.render(&vec!["*"], true); 23 24 if args.arg_file.ends_with(".svg") { 24 25 std::fs::write(args.arg_file, rendered).unwrap();
+1 -1
src/objects.rs
··· 159 159 Object::Text(anchor, _, _) | Object::Dot(anchor) | Object::SmallCircle(anchor) => { 160 160 (anchor, anchor).into() 161 161 } 162 - Object::BigCircle(center) => (center, center).into(), // FIXME will be wrong lmao, 162 + Object::BigCircle(center) => Region::from((center, center)), 163 163 Object::RawSVG(_) => { 164 164 unimplemented!() 165 165 }
+8 -1
src/region.rs
··· 11 11 pub fn translated(&self, dx: i32, dy: i32) -> Self { 12 12 Self((self.0 as i32 + dx) as usize, (self.1 as i32 + dy) as usize) 13 13 } 14 + 15 + pub fn region(&self) -> Region { 16 + Region { 17 + start: self.clone(), 18 + end: self.clone(), 19 + } 20 + } 14 21 } 15 22 16 23 impl From<(usize, usize)> for Point { ··· 129 136 fn from(value: (&CenterAnchor, &CenterAnchor)) -> Self { 130 137 Region { 131 138 start: (value.0 .0, value.0 .1).into(), 132 - end: (value.1 .0, value.1 .1).into(), 139 + end: (value.1 .0 - 1, value.1 .1 - 1).into(), 133 140 } 134 141 } 135 142 }
+9 -1
src/web.rs
··· 8 8 9 9 use crate::{ 10 10 examples, layer, Anchor, Canvas, CenterAnchor, Color, ColorMapping, Fill, Filter, FilterType, 11 - HatchDirection, Layer, Object, Point, 11 + HatchDirection, Layer, Object, Point, Region, 12 12 }; 13 13 14 14 static WEB_CANVAS: Lazy<Mutex<Canvas>> = Lazy::new(|| Mutex::new(Canvas::default_settings())); ··· 59 59 cyan: "#4fecec".into(), 60 60 }; 61 61 62 + canvas.remove_all_objects_in(&Region::from_topleft(Point(8, 2), (2, 2))); 63 + canvas.remove_all_objects_in(&Point(11, 7).region()); 64 + 62 65 *WEB_CANVAS.lock().unwrap() = canvas; 63 66 render_canvas_at(String::from("body")); 64 67 65 68 Ok(()) 69 + } 70 + 71 + #[wasm_bindgen] 72 + pub fn map_to_midi_controller() { 73 + 66 74 } 67 75 68 76 #[wasm_bindgen]