This repository has no description
0

Configure Feed

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

1use super::canvas; 2use crate::{ 3 Color, Fill, Filter, Layer, Object, Point, 4 wasm::{RNG, append_new_div_inside, render_canvas, replace_content_with}, 5}; 6use wasm_bindgen::prelude::wasm_bindgen; 7 8#[wasm_bindgen(getter_with_clone)] 9pub struct LayerWeb { 10 pub name: String, 11} 12 13#[wasm_bindgen] 14pub fn new_layer(name: &str) -> LayerWeb { 15 canvas().add_or_replace_layer(Layer::new(name)); 16 LayerWeb { 17 name: name.to_string(), 18 } 19} 20 21#[wasm_bindgen] 22impl LayerWeb { 23 pub fn render(&self) -> String { 24 render_canvas() 25 } 26 27 pub fn render_into(&self, selector: String) { 28 append_new_div_inside(self.render(), selector) 29 } 30 31 pub fn render_at(self, selector: String) { 32 replace_content_with(self.render(), selector) 33 } 34 35 pub fn paint_all(&self, color: Color, opacity: Option<f32>, filter: Filter) { 36 canvas() 37 .layer(&self.name) 38 .paint_all_objects(Fill::Translucent(color, opacity.unwrap_or(1.0))); 39 canvas().layer(&self.name).filter_all_objects(filter); 40 } 41 42 pub fn random(name: &str) -> Self { 43 unsafe { 44 #[allow(static_mut_refs)] 45 canvas().random_layer(&mut RNG, name); 46 } 47 LayerWeb { 48 name: name.to_string(), 49 } 50 } 51 52 pub fn new_line( 53 &self, 54 name: &str, 55 start: Point, 56 end: Point, 57 thickness: f32, 58 color: Color, 59 ) { 60 canvas() 61 .layer(name) 62 .set(name, Object::Line(start, end, thickness).colored(color)) 63 } 64 pub fn new_curve_outward( 65 &self, 66 name: &str, 67 start: Point, 68 end: Point, 69 thickness: f32, 70 color: Color, 71 ) { 72 canvas().layer(name).set( 73 name, 74 Object::CurveOutward(start, end, thickness).colored(color), 75 ) 76 } 77 pub fn new_curve_inward( 78 &self, 79 name: &str, 80 start: Point, 81 end: Point, 82 thickness: f32, 83 color: Color, 84 ) { 85 canvas().layer(name).set( 86 name, 87 Object::CurveInward(start, end, thickness).colored(color), 88 ) 89 } 90 pub fn new_small_circle(&self, name: &str, center: Point, color: Color) { 91 canvas() 92 .layer(name) 93 .set(name, Object::SmallCircle(center).colored(color)) 94 } 95 pub fn new_dot(&self, name: &str, center: Point, color: Color) { 96 canvas() 97 .layer(name) 98 .set(name, Object::Dot(center).colored(color)) 99 } 100 pub fn new_big_circle(&self, name: &str, center: Point, color: Color) { 101 canvas() 102 .layer(name) 103 .set(name, Object::BigCircle(center).colored(color)) 104 } 105 pub fn new_text( 106 &self, 107 name: &str, 108 anchor: Point, 109 text: String, 110 font_size: f32, 111 color: Color, 112 ) { 113 canvas() 114 .layer(name) 115 .set(name, Object::Text(anchor, text, font_size).colored(color)) 116 } 117 pub fn new_rectangle( 118 &self, 119 name: &str, 120 topleft: Point, 121 bottomright: Point, 122 color: Color, 123 ) { 124 canvas() 125 .layer(name) 126 .set(name, Object::Rectangle(topleft, bottomright).colored(color)) 127 } 128}