This repository has no description
0

Configure Feed

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

at main 3.4 kB View raw
1use super::canvas; 2use crate::{ 3 Color, Fill, Filter, Layer, Object, Point, Shape, 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_unchecked(&self.name) 38 .paint_all_objects(Fill::Translucent(color, opacity.unwrap_or(1.0))); 39 canvas() 40 .layer_unchecked(&self.name) 41 .filter_all_objects(filter); 42 } 43 44 pub fn random(name: &str) -> Self { 45 unsafe { 46 #[allow(static_mut_refs)] 47 canvas().random_layer(&mut RNG, name); 48 } 49 LayerWeb { 50 name: name.to_string(), 51 } 52 } 53 54 pub fn new_line( 55 &self, 56 name: &str, 57 start: Point, 58 end: Point, 59 thickness: f32, 60 color: Color, 61 ) { 62 canvas() 63 .layer_unchecked(name) 64 .set(name, Shape::Line(start, end, thickness).colored(color)) 65 } 66 pub fn new_curve_outward( 67 &self, 68 name: &str, 69 start: Point, 70 end: Point, 71 thickness: f32, 72 color: Color, 73 ) { 74 canvas().layer_unchecked(name).set( 75 name, 76 Shape::CurveOutward(start, end, thickness).colored(color), 77 ) 78 } 79 pub fn new_curve_inward( 80 &self, 81 name: &str, 82 start: Point, 83 end: Point, 84 thickness: f32, 85 color: Color, 86 ) { 87 canvas().layer_unchecked(name).set( 88 name, 89 Shape::CurveInward(start, end, thickness).colored(color), 90 ) 91 } 92 pub fn new_small_circle(&self, name: &str, center: Point, color: Color) { 93 canvas() 94 .layer_unchecked(name) 95 .set(name, Shape::SmallCircle(center).colored(color)) 96 } 97 pub fn new_dot(&self, name: &str, center: Point, color: Color) { 98 canvas() 99 .layer_unchecked(name) 100 .set(name, Shape::Dot(center).colored(color)) 101 } 102 pub fn new_big_circle(&self, name: &str, center: Point, color: Color) { 103 canvas() 104 .layer_unchecked(name) 105 .set(name, Shape::BigCircle(center).colored(color)) 106 } 107 pub fn new_text( 108 &self, 109 name: &str, 110 anchor: Point, 111 text: String, 112 font_size: f32, 113 color: Color, 114 ) { 115 canvas() 116 .layer_unchecked(name) 117 .set(name, Shape::Text(anchor, text, font_size).colored(color)) 118 } 119 pub fn new_rectangle( 120 &self, 121 name: &str, 122 topleft: Point, 123 bottomright: Point, 124 color: Color, 125 ) { 126 canvas() 127 .layer_unchecked(name) 128 .set(name, Shape::Rectangle(topleft, bottomright).colored(color)) 129 } 130}