Просмотр исходного кода

wallet: add network status indicator

darkfi 1 год назад
Родитель
Сommit
83d334642e

BIN
bin/darkwallet/data/netlogo.blend


+ 3 - 5
bin/darkwallet/data/obj_to_rust.py

@@ -1,8 +1,6 @@
 #!/usr/bin/python
 #!/usr/bin/python
 import sys
 import sys
 
 
-COLOR = "[0., 1., 1., 1.]"
-
 class Obj:
 class Obj:
 
 
     def __init__(self, name):
     def __init__(self, name):
@@ -61,12 +59,12 @@ def parse_obj(fname):
 
 
 def output(obj):
 def output(obj):
     name = obj.name
     name = obj.name
-    print("use crate::ui::{VectorShape, ShapeVertex};")
-    print(f"pub fn create_{name}() -> VectorShape {{")
+    print("use crate::{mesh::Color, ui::{VectorShape, ShapeVertex}};")
+    print(f"pub fn create_{name}(color: Color) -> VectorShape {{")
     print("    VectorShape {")
     print("    VectorShape {")
     print("        verts: vec![")
     print("        verts: vec![")
     for (x, y) in obj.v:
     for (x, y) in obj.v:
-        print(f"            ShapeVertex::from_xy({x}, {y}, {COLOR}),")
+        print(f"            ShapeVertex::from_xy({x}, {y}, color),")
     print("        ],")
     print("        ],")
     indices = ", ".join([str(f) for f in obj.f])
     indices = ", ".join([str(f) for f in obj.f])
     print(f"        indices: vec![{indices}]")
     print(f"        indices: vec![{indices}]")

+ 1 - 1
bin/darkwallet/src/app/mod.rs

@@ -52,7 +52,7 @@ macro_rules! d { ($($arg:tt)*) => { debug!(target: "app", $($arg)*); } }
 macro_rules! t { ($($arg:tt)*) => { trace!(target: "app", $($arg)*); } }
 macro_rules! t { ($($arg:tt)*) => { trace!(target: "app", $($arg)*); } }
 macro_rules! i { ($($arg:tt)*) => { info!(target: "app", $($arg)*); } }
 macro_rules! i { ($($arg:tt)*) => { info!(target: "app", $($arg)*); } }
 
 
-const PLUGINS_ENABLED: bool = false;
+const PLUGINS_ENABLED: bool = true;
 
 
 //fn print_type_of<T>(_: &T) {
 //fn print_type_of<T>(_: &T) {
 //    println!("{}", std::any::type_name::<T>())
 //    println!("{}", std::any::type_name::<T>())

+ 26 - 42
bin/darkwallet/src/app/schema/mod.rs

@@ -54,6 +54,7 @@ pub const COLOR_SCHEME: ColorScheme = ColorScheme::DarkMode;
 
 
 mod android_ui_consts {
 mod android_ui_consts {
     pub const NETSTATUS_ICON_SIZE: f32 = 140.;
     pub const NETSTATUS_ICON_SIZE: f32 = 140.;
+    pub const NETLOGO_SCALE: f32 = 50.;
     pub const EMOJI_PICKER_ICON_SIZE: f32 = 100.;
     pub const EMOJI_PICKER_ICON_SIZE: f32 = 100.;
 }
 }
 
 
@@ -98,6 +99,7 @@ mod ui_consts {
 ))]
 ))]
 mod ui_consts {
 mod ui_consts {
     pub const NETSTATUS_ICON_SIZE: f32 = 60.;
     pub const NETSTATUS_ICON_SIZE: f32 = 60.;
+    pub const NETLOGO_SCALE: f32 = 25.;
     pub const EMOJI_PICKER_ICON_SIZE: f32 = 40.;
     pub const EMOJI_PICKER_ICON_SIZE: f32 = 40.;
     pub use super::desktop_paths::*;
     pub use super::desktop_paths::*;
 }
 }
@@ -231,8 +233,10 @@ pub async fn make(app: &App, window: SceneNodePtr) {
     let code = cc.compile("w - NETSTATUS_ICON_SIZE").unwrap();
     let code = cc.compile("w - NETSTATUS_ICON_SIZE").unwrap();
     prop.clone().set_expr(atom, Role::App, 0, code).unwrap();
     prop.clone().set_expr(atom, Role::App, 0, code).unwrap();
     prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
     prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
-    prop.clone().set_f32(atom, Role::App, 2, NETSTATUS_ICON_SIZE).unwrap();
-    prop.clone().set_f32(atom, Role::App, 3, NETSTATUS_ICON_SIZE).unwrap();
+    //prop.clone().set_f32(atom, Role::App, 2, NETSTATUS_ICON_SIZE).unwrap();
+    //prop.clone().set_f32(atom, Role::App, 3, NETSTATUS_ICON_SIZE).unwrap();
+    prop.clone().set_f32(atom, Role::App, 2, 1000.).unwrap();
+    prop.clone().set_f32(atom, Role::App, 3, 1000.).unwrap();
     netlayer_node.set_property_bool(atom, Role::App, "is_visible", true).unwrap();
     netlayer_node.set_property_bool(atom, Role::App, "is_visible", true).unwrap();
     netlayer_node.set_property_u32(atom, Role::App, "z_index", 2).unwrap();
     netlayer_node.set_property_u32(atom, Role::App, "z_index", 2).unwrap();
     let netlayer_node =
     let netlayer_node =
@@ -241,80 +245,60 @@ pub async fn make(app: &App, window: SceneNodePtr) {
 
 
     let node = create_vector_art("net0");
     let node = create_vector_art("net0");
     let prop = node.get_property("rect").unwrap();
     let prop = node.get_property("rect").unwrap();
-    prop.clone().set_f32(atom, Role::App, 0, 0.).unwrap();
-    prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
+    prop.clone().set_f32(atom, Role::App, 0, NETSTATUS_ICON_SIZE / 2.).unwrap();
+    prop.clone().set_f32(atom, Role::App, 1, NETSTATUS_ICON_SIZE / 2.).unwrap();
     prop.clone().set_expr(atom, Role::App, 2, expr::load_var("w")).unwrap();
     prop.clone().set_expr(atom, Role::App, 2, expr::load_var("w")).unwrap();
     prop.clone().set_expr(atom, Role::App, 3, expr::load_var("h")).unwrap();
     prop.clone().set_expr(atom, Role::App, 3, expr::load_var("h")).unwrap();
     node.set_property_bool(atom, Role::App, "is_visible", true).unwrap();
     node.set_property_bool(atom, Role::App, "is_visible", true).unwrap();
     node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
     node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
-    let mut shape = VectorShape::new();
-    shape.add_filled_box(
-        expr::const_f32(0.),
-        expr::const_f32(0.),
-        expr::load_var("w"),
-        expr::load_var("h"),
-        [1., 0., 0., 1.],
-    );
+    let mut shape = shape::create_netlogo1([1., 0., 0.25, 1.]).scaled(NETLOGO_SCALE);
+    shape.join(shape::create_netlogo2([0.27, 0.4, 0.4, 1.]).scaled(NETLOGO_SCALE));
+    shape.join(shape::create_netlogo3([0.27, 0.4, 0.4, 1.]).scaled(NETLOGO_SCALE));
     let net0_node =
     let net0_node =
         node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
         node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
     netlayer_node.clone().link(net0_node);
     netlayer_node.clone().link(net0_node);
 
 
     let node = create_vector_art("net1");
     let node = create_vector_art("net1");
     let prop = node.get_property("rect").unwrap();
     let prop = node.get_property("rect").unwrap();
-    prop.clone().set_f32(atom, Role::App, 0, 0.).unwrap();
-    prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
+    prop.clone().set_f32(atom, Role::App, 0, NETSTATUS_ICON_SIZE / 2.).unwrap();
+    prop.clone().set_f32(atom, Role::App, 1, NETSTATUS_ICON_SIZE / 2.).unwrap();
     prop.clone().set_expr(atom, Role::App, 2, expr::load_var("w")).unwrap();
     prop.clone().set_expr(atom, Role::App, 2, expr::load_var("w")).unwrap();
     prop.clone().set_expr(atom, Role::App, 3, expr::load_var("h")).unwrap();
     prop.clone().set_expr(atom, Role::App, 3, expr::load_var("h")).unwrap();
     node.set_property_bool(atom, Role::App, "is_visible", false).unwrap();
     node.set_property_bool(atom, Role::App, "is_visible", false).unwrap();
     node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
     node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
-    let mut shape = VectorShape::new();
-    shape.add_filled_box(
-        expr::const_f32(0.),
-        expr::const_f32(0.),
-        expr::load_var("w"),
-        expr::load_var("h"),
-        [0., 0.3, 0., 1.],
-    );
+    let mut shape = shape::create_netlogo1([0.49, 0.57, 1., 1.]).scaled(NETLOGO_SCALE);
+    shape.join(shape::create_netlogo2([0.49, 0.57, 1., 1.]).scaled(NETLOGO_SCALE));
+    shape.join(shape::create_netlogo3([0.27, 0.4, 0.4, 1.]).scaled(NETLOGO_SCALE));
     let net1_node =
     let net1_node =
         node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
         node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
     netlayer_node.clone().link(net1_node);
     netlayer_node.clone().link(net1_node);
 
 
     let node = create_vector_art("net2");
     let node = create_vector_art("net2");
     let prop = node.get_property("rect").unwrap();
     let prop = node.get_property("rect").unwrap();
-    prop.clone().set_f32(atom, Role::App, 0, 0.).unwrap();
-    prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
+    prop.clone().set_f32(atom, Role::App, 0, NETSTATUS_ICON_SIZE / 2.).unwrap();
+    prop.clone().set_f32(atom, Role::App, 1, NETSTATUS_ICON_SIZE / 2.).unwrap();
     prop.clone().set_expr(atom, Role::App, 2, expr::load_var("w")).unwrap();
     prop.clone().set_expr(atom, Role::App, 2, expr::load_var("w")).unwrap();
     prop.clone().set_expr(atom, Role::App, 3, expr::load_var("h")).unwrap();
     prop.clone().set_expr(atom, Role::App, 3, expr::load_var("h")).unwrap();
     node.set_property_bool(atom, Role::App, "is_visible", false).unwrap();
     node.set_property_bool(atom, Role::App, "is_visible", false).unwrap();
     node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
     node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
-    let mut shape = VectorShape::new();
-    shape.add_filled_box(
-        expr::const_f32(0.),
-        expr::const_f32(0.),
-        expr::load_var("w"),
-        expr::load_var("h"),
-        [0., 0.6, 0., 1.],
-    );
+    let mut shape = shape::create_netlogo1([0., 0.94, 1., 1.]).scaled(NETLOGO_SCALE);
+    shape.join(shape::create_netlogo2([0., 0.94, 1., 1.]).scaled(NETLOGO_SCALE));
+    shape.join(shape::create_netlogo3([0., 0.94, 1., 1.]).scaled(NETLOGO_SCALE));
     let net2_node =
     let net2_node =
         node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
         node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
     netlayer_node.clone().link(net2_node);
     netlayer_node.clone().link(net2_node);
 
 
     let node = create_vector_art("net3");
     let node = create_vector_art("net3");
     let prop = node.get_property("rect").unwrap();
     let prop = node.get_property("rect").unwrap();
-    prop.clone().set_f32(atom, Role::App, 0, 0.).unwrap();
-    prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
+    prop.clone().set_f32(atom, Role::App, 0, NETSTATUS_ICON_SIZE / 2.).unwrap();
+    prop.clone().set_f32(atom, Role::App, 1, NETSTATUS_ICON_SIZE / 2.).unwrap();
     prop.clone().set_expr(atom, Role::App, 2, expr::load_var("w")).unwrap();
     prop.clone().set_expr(atom, Role::App, 2, expr::load_var("w")).unwrap();
     prop.clone().set_expr(atom, Role::App, 3, expr::load_var("h")).unwrap();
     prop.clone().set_expr(atom, Role::App, 3, expr::load_var("h")).unwrap();
     node.set_property_bool(atom, Role::App, "is_visible", false).unwrap();
     node.set_property_bool(atom, Role::App, "is_visible", false).unwrap();
     node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
     node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
-    let mut shape = VectorShape::new();
-    shape.add_filled_box(
-        expr::const_f32(0.),
-        expr::const_f32(0.),
-        expr::load_var("w"),
-        expr::load_var("h"),
-        [0., 1., 0., 1.],
-    );
+    let mut shape = shape::create_netlogo1([0., 0.94, 1., 1.]).scaled(NETLOGO_SCALE);
+    shape.join(shape::create_netlogo2([0., 0.94, 1., 1.]).scaled(NETLOGO_SCALE));
+    shape.join(shape::create_netlogo3([0., 0.94, 1., 1.]).scaled(NETLOGO_SCALE));
     let net3_node =
     let net3_node =
         node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
         node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
     netlayer_node.clone().link(net3_node);
     netlayer_node.clone().link(net3_node);

+ 7 - 2
bin/darkwallet/src/shape/mod.rs

@@ -16,8 +16,6 @@
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
  */
 
 
-use crate::ui::{ShapeVertex, VectorShape};
-
 mod back_arrow;
 mod back_arrow;
 pub use back_arrow::create_back_arrow;
 pub use back_arrow::create_back_arrow;
 
 
@@ -29,3 +27,10 @@ pub use send_arrow::create_send_arrow;
 
 
 mod emoji_sel;
 mod emoji_sel;
 pub use emoji_sel::create_emoji_selector;
 pub use emoji_sel::create_emoji_selector;
+
+mod netlogo1;
+pub use netlogo1::create_netlogo1;
+mod netlogo2;
+pub use netlogo2::create_netlogo2;
+mod netlogo3;
+pub use netlogo3::create_netlogo3;

+ 399 - 0
bin/darkwallet/src/shape/netlogo1.rs

@@ -0,0 +1,399 @@
+use crate::{
+    mesh::Color,
+    ui::{ShapeVertex, VectorShape},
+};
+pub fn create_netlogo1(color: Color) -> VectorShape {
+    VectorShape {
+        verts: vec![
+            ShapeVertex::from_xy(-0.034947, -0.03768, color),
+            ShapeVertex::from_xy(-0.021192, -0.189183, color),
+            ShapeVertex::from_xy(-0.035545, -0.043763, color),
+            ShapeVertex::from_xy(-0.041013, -0.052745, color),
+            ShapeVertex::from_xy(-0.043934, -0.066087, color),
+            ShapeVertex::from_xy(-0.050937, -0.077335, color),
+            ShapeVertex::from_xy(-0.058013, -0.083846, color),
+            ShapeVertex::from_xy(-0.065698, -0.087646, color),
+            ShapeVertex::from_xy(-0.070556, -0.117769, color),
+            ShapeVertex::from_xy(-0.061582, -0.12456, color),
+            ShapeVertex::from_xy(-0.065026, -0.133213, color),
+            ShapeVertex::from_xy(-0.069929, -0.143103, color),
+            ShapeVertex::from_xy(-0.089029, -0.169798, color),
+            ShapeVertex::from_xy(-0.102098, -0.166296, color),
+            ShapeVertex::from_xy(-0.128435, -0.185978, color),
+            ShapeVertex::from_xy(-0.128735, -0.193764, color),
+            ShapeVertex::from_xy(-0.130746, -0.200187, color),
+            ShapeVertex::from_xy(-0.136462, -0.210338, color),
+            ShapeVertex::from_xy(-0.139587, -0.214786, color),
+            ShapeVertex::from_xy(-0.14413, -0.218396, color),
+            ShapeVertex::from_xy(-0.149987, -0.222294, color),
+            ShapeVertex::from_xy(-0.156709, -0.228816, color),
+            ShapeVertex::from_xy(-0.166206, -0.238353, color),
+            ShapeVertex::from_xy(-0.170992, -0.244264, color),
+            ShapeVertex::from_xy(-0.175793, -0.246293, color),
+            ShapeVertex::from_xy(-0.178205, -0.250923, color),
+            ShapeVertex::from_xy(-0.184379, -0.25771, color),
+            ShapeVertex::from_xy(-0.188044, -0.261778, color),
+            ShapeVertex::from_xy(-0.193191, -0.265462, color),
+            ShapeVertex::from_xy(-0.197933, -0.269105, color),
+            ShapeVertex::from_xy(-0.201634, -0.272823, color),
+            ShapeVertex::from_xy(-0.205271, -0.278574, color),
+            ShapeVertex::from_xy(-0.211892, -0.286262, color),
+            ShapeVertex::from_xy(-0.190459, -0.289964, color),
+            ShapeVertex::from_xy(-0.217679, -0.290015, color),
+            ShapeVertex::from_xy(-0.23765, -0.303975, color),
+            ShapeVertex::from_xy(-0.183855, -0.288948, color),
+            ShapeVertex::from_xy(-0.167231, -0.287985, color),
+            ShapeVertex::from_xy(-0.173053, -0.287682, color),
+            ShapeVertex::from_xy(-0.160765, -0.285338, color),
+            ShapeVertex::from_xy(-0.156231, -0.283501, color),
+            ShapeVertex::from_xy(-0.150933, -0.282416, color),
+            ShapeVertex::from_xy(-0.144131, -0.282047, color),
+            ShapeVertex::from_xy(-0.139105, -0.28198, color),
+            ShapeVertex::from_xy(-0.137028, -0.282181, color),
+            ShapeVertex::from_xy(-0.130159, -0.2793, color),
+            ShapeVertex::from_xy(-0.127579, -0.278503, color),
+            ShapeVertex::from_xy(-0.121213, -0.277565, color),
+            ShapeVertex::from_xy(-0.115617, -0.277196, color),
+            ShapeVertex::from_xy(-0.11173, -0.277129, color),
+            ShapeVertex::from_xy(-0.106235, -0.274449, color),
+            ShapeVertex::from_xy(-0.090828, -0.272991, color),
+            ShapeVertex::from_xy(-0.098648, -0.272465, color),
+            ShapeVertex::from_xy(-0.086355, -0.272604, color),
+            ShapeVertex::from_xy(-0.078448, -0.274, color),
+            ShapeVertex::from_xy(-0.07436, -0.276346, color),
+            ShapeVertex::from_xy(-0.069447, -0.279078, color),
+            ShapeVertex::from_xy(-0.061317, -0.277878, color),
+            ShapeVertex::from_xy(-0.058731, -0.276119, color),
+            ShapeVertex::from_xy(-0.053502, -0.273612, color),
+            ShapeVertex::from_xy(-0.048871, -0.272132, color),
+            ShapeVertex::from_xy(-0.041516, -0.270446, color),
+            ShapeVertex::from_xy(-0.037495, -0.268798, color),
+            ShapeVertex::from_xy(-0.033343, -0.258513, color),
+            ShapeVertex::from_xy(-0.005825, -0.253528, color),
+            ShapeVertex::from_xy(-0.010887, -0.159248, color),
+            ShapeVertex::from_xy(0.022911, -0.257567, color),
+            ShapeVertex::from_xy(0.027097, -0.268467, color),
+            ShapeVertex::from_xy(0.035949, -0.271778, color),
+            ShapeVertex::from_xy(0.038884, -0.273788, color),
+            ShapeVertex::from_xy(0.043709, -0.275196, color),
+            ShapeVertex::from_xy(0.047891, -0.276925, color),
+            ShapeVertex::from_xy(0.050585, -0.278292, color),
+            ShapeVertex::from_xy(0.052032, -0.279217, color),
+            ShapeVertex::from_xy(0.055289, -0.279659, color),
+            ShapeVertex::from_xy(0.058947, -0.280677, color),
+            ShapeVertex::from_xy(0.06392, -0.277919, color),
+            ShapeVertex::from_xy(0.067445, -0.27624, color),
+            ShapeVertex::from_xy(0.074522, -0.274672, color),
+            ShapeVertex::from_xy(0.080449, -0.273801, color),
+            ShapeVertex::from_xy(0.087469, -0.272994, color),
+            ShapeVertex::from_xy(0.094503, -0.273854, color),
+            ShapeVertex::from_xy(0.099004, -0.275738, color),
+            ShapeVertex::from_xy(0.105236, -0.278673, color),
+            ShapeVertex::from_xy(0.110684, -0.278078, color),
+            ShapeVertex::from_xy(0.117037, -0.278802, color),
+            ShapeVertex::from_xy(0.125919, -0.28279, color),
+            ShapeVertex::from_xy(0.139413, -0.28226, color),
+            ShapeVertex::from_xy(0.155799, -0.287535, color),
+            ShapeVertex::from_xy(0.159433, -0.287361, color),
+            ShapeVertex::from_xy(0.163614, -0.287482, color),
+            ShapeVertex::from_xy(0.170249, -0.288246, color),
+            ShapeVertex::from_xy(0.175797, -0.289412, color),
+            ShapeVertex::from_xy(0.181547, -0.291583, color),
+            ShapeVertex::from_xy(0.186211, -0.293513, color),
+            ShapeVertex::from_xy(0.189629, -0.293151, color),
+            ShapeVertex::from_xy(0.194856, -0.293111, color),
+            ShapeVertex::from_xy(0.192982, -0.27479, color),
+            ShapeVertex::from_xy(0.201829, -0.295799, color),
+            ShapeVertex::from_xy(0.207612, -0.289348, color),
+            ShapeVertex::from_xy(0.213632, -0.298818, color),
+            ShapeVertex::from_xy(0.218915, -0.296493, color),
+            ShapeVertex::from_xy(0.227358, -0.303067, color),
+            ShapeVertex::from_xy(0.195836, -0.278807, color),
+            ShapeVertex::from_xy(-0.055987, -0.130842, color),
+            ShapeVertex::from_xy(0.20248, -0.285282, color),
+            ShapeVertex::from_xy(0.190426, -0.271567, color),
+            ShapeVertex::from_xy(0.182951, -0.267009, color),
+            ShapeVertex::from_xy(0.173783, -0.256039, color),
+            ShapeVertex::from_xy(0.166673, -0.250674, color),
+            ShapeVertex::from_xy(0.163513, -0.247794, color),
+            ShapeVertex::from_xy(0.161185, -0.245619, color),
+            ShapeVertex::from_xy(0.145324, -0.246395, color),
+            ShapeVertex::from_xy(0.146137, -0.232547, color),
+            ShapeVertex::from_xy(0.147306, -0.230421, color),
+            ShapeVertex::from_xy(0.143754, -0.227196, color),
+            ShapeVertex::from_xy(0.142123, -0.2251, color),
+            ShapeVertex::from_xy(0.140259, -0.223067, color),
+            ShapeVertex::from_xy(0.139128, -0.221226, color),
+            ShapeVertex::from_xy(0.134733, -0.217778, color),
+            ShapeVertex::from_xy(0.129959, -0.214425, color),
+            ShapeVertex::from_xy(0.127537, -0.21242, color),
+            ShapeVertex::from_xy(0.125499, -0.209697, color),
+            ShapeVertex::from_xy(0.123571, -0.206786, color),
+            ShapeVertex::from_xy(0.121662, -0.203137, color),
+            ShapeVertex::from_xy(0.119125, -0.198462, color),
+            ShapeVertex::from_xy(0.118679, -0.193919, color),
+            ShapeVertex::from_xy(0.118429, -0.189801, color),
+            ShapeVertex::from_xy(0.118692, -0.185132, color),
+            ShapeVertex::from_xy(0.115331, -0.181253, color),
+            ShapeVertex::from_xy(0.101671, -0.172815, color),
+            ShapeVertex::from_xy(0.091478, -0.16607, color),
+            ShapeVertex::from_xy(0.078808, -0.169053, color),
+            ShapeVertex::from_xy(0.066995, -0.152747, color),
+            ShapeVertex::from_xy(0.056905, -0.137464, color),
+            ShapeVertex::from_xy(0.051096, -0.124789, color),
+            ShapeVertex::from_xy(0.059499, -0.115899, color),
+            ShapeVertex::from_xy(0.054934, -0.085968, color),
+            ShapeVertex::from_xy(0.045071, -0.080438, color),
+            ShapeVertex::from_xy(0.038293, -0.073144, color),
+            ShapeVertex::from_xy(0.032963, -0.062968, color),
+            ShapeVertex::from_xy(0.031455, -0.057931, color),
+            ShapeVertex::from_xy(0.030805, -0.051949, color),
+            ShapeVertex::from_xy(0.028478, -0.048789, color),
+            ShapeVertex::from_xy(0.026924, -0.045304, color),
+            ShapeVertex::from_xy(0.022982, -0.037228, color),
+            ShapeVertex::from_xy(0.022338, -0.030443, color),
+            ShapeVertex::from_xy(0.021837, -0.029112, color),
+            ShapeVertex::from_xy(0.0199, -0.026512, color),
+            ShapeVertex::from_xy(0.01722, -0.021213, color),
+            ShapeVertex::from_xy(0.015567, -0.015618, color),
+            ShapeVertex::from_xy(0.014016, -0.010161, color),
+            ShapeVertex::from_xy(0.013053, -0.004162, color),
+            ShapeVertex::from_xy(0.010806, -0.001432, color),
+            ShapeVertex::from_xy(0.007505, 0.00557, color),
+            ShapeVertex::from_xy(-0.005448, 0.056362, color),
+            ShapeVertex::from_xy(0.005167, 0.011373, color),
+            ShapeVertex::from_xy(-0.008566, 0.041082, color),
+            ShapeVertex::from_xy(0.003552, 0.020114, color),
+            ShapeVertex::from_xy(-0.014445, 0.019435, color),
+            ShapeVertex::from_xy(-0.011269, 0.027052, color),
+            ShapeVertex::from_xy(-0.016056, 0.007257, color),
+            ShapeVertex::from_xy(-0.018448, 0.001526, color),
+            ShapeVertex::from_xy(-0.021091, -0.002164, color),
+            ShapeVertex::from_xy(-0.024393, -0.00859, color),
+            ShapeVertex::from_xy(-0.027054, -0.01401, color),
+            ShapeVertex::from_xy(-0.028888, -0.017512, color),
+            ShapeVertex::from_xy(-0.030055, -0.019096, color),
+            ShapeVertex::from_xy(-0.030389, -0.022598, color),
+            ShapeVertex::from_xy(-0.030921, -0.025879, color),
+            ShapeVertex::from_xy(-0.032269, -0.029088, color),
+            ShapeVertex::from_xy(-0.034574, -0.031806, color),
+            ShapeVertex::from_xy(0.064686, -0.259031, color),
+            ShapeVertex::from_xy(-0.011083, -0.159246, color),
+            ShapeVertex::from_xy(-0.024801, -0.159233, color),
+            ShapeVertex::from_xy(0.063958, -0.259284, color),
+            ShapeVertex::from_xy(-0.011555, -0.159243, color),
+            ShapeVertex::from_xy(0.063189, -0.25955, color),
+            ShapeVertex::from_xy(-0.012406, -0.159236, color),
+            ShapeVertex::from_xy(-0.09813, -0.224381, color),
+            ShapeVertex::from_xy(-0.013025, -0.159235, color),
+            ShapeVertex::from_xy(-0.097722, -0.225108, color),
+            ShapeVertex::from_xy(-0.013577, -0.159235, color),
+            ShapeVertex::from_xy(-0.096878, -0.225718, color),
+            ShapeVertex::from_xy(-0.014013, -0.159234, color),
+            ShapeVertex::from_xy(-0.096281, -0.226295, color),
+            ShapeVertex::from_xy(-0.014513, -0.159234, color),
+            ShapeVertex::from_xy(-0.095695, -0.22711, color),
+            ShapeVertex::from_xy(-0.09857, -0.223282, color),
+            ShapeVertex::from_xy(-0.095994, -0.22658, color),
+            ShapeVertex::from_xy(-0.098619, -0.22146, color),
+            ShapeVertex::from_xy(-0.095368, -0.227237, color),
+            ShapeVertex::from_xy(-0.09858, -0.222061, color),
+            ShapeVertex::from_xy(-0.094761, -0.228093, color),
+            ShapeVertex::from_xy(-0.015319, -0.159233, color),
+            ShapeVertex::from_xy(-0.094143, -0.229017, color),
+            ShapeVertex::from_xy(-0.015877, -0.159233, color),
+            ShapeVertex::from_xy(-0.09324, -0.229333, color),
+            ShapeVertex::from_xy(-0.016363, -0.159233, color),
+            ShapeVertex::from_xy(-0.092688, -0.2297, color),
+            ShapeVertex::from_xy(-0.099165, -0.219482, color),
+            ShapeVertex::from_xy(-0.019272, -0.159233, color),
+            ShapeVertex::from_xy(-0.089827, -0.229834, color),
+            ShapeVertex::from_xy(-0.09919, -0.218889, color),
+            ShapeVertex::from_xy(-0.087231, -0.230738, color),
+            ShapeVertex::from_xy(-0.021111, -0.159233, color),
+            ShapeVertex::from_xy(-0.085087, -0.23228, color),
+            ShapeVertex::from_xy(-0.021723, -0.159233, color),
+            ShapeVertex::from_xy(-0.082941, -0.233815, color),
+            ShapeVertex::from_xy(-0.021254, -0.159233, color),
+            ShapeVertex::from_xy(-0.081185, -0.235069, color),
+            ShapeVertex::from_xy(-0.098334, -0.224094, color),
+            ShapeVertex::from_xy(-0.079764, -0.236046, color),
+            ShapeVertex::from_xy(-0.022194, -0.159233, color),
+            ShapeVertex::from_xy(-0.079071, -0.236127, color),
+            ShapeVertex::from_xy(-0.022977, -0.159233, color),
+            ShapeVertex::from_xy(-0.077484, -0.236522, color),
+            ShapeVertex::from_xy(-0.022535, -0.159233, color),
+            ShapeVertex::from_xy(-0.075765, -0.23663, color),
+            ShapeVertex::from_xy(-0.022753, -0.159233, color),
+            ShapeVertex::from_xy(-0.072824, -0.236872, color),
+            ShapeVertex::from_xy(-0.022846, -0.159233, color),
+            ShapeVertex::from_xy(-0.070142, -0.23701, color),
+            ShapeVertex::from_xy(-0.099232, -0.218765, color),
+            ShapeVertex::from_xy(-0.071212, -0.237005, color),
+            ShapeVertex::from_xy(-0.099474, -0.218051, color),
+            ShapeVertex::from_xy(-0.055509, -0.235356, color),
+            ShapeVertex::from_xy(-0.023147, -0.159233, color),
+            ShapeVertex::from_xy(-0.09977, -0.2174, color),
+            ShapeVertex::from_xy(-0.023687, -0.159233, color),
+            ShapeVertex::from_xy(-0.020224, -0.159233, color),
+            ShapeVertex::from_xy(0.059823, -0.26024, color),
+            ShapeVertex::from_xy(-0.019818, -0.159233, color),
+            ShapeVertex::from_xy(0.06035, -0.260129, color),
+            ShapeVertex::from_xy(-0.01955, -0.159233, color),
+            ShapeVertex::from_xy(0.061543, -0.259837, color),
+            ShapeVertex::from_xy(-0.021012, -0.159233, color),
+            ShapeVertex::from_xy(0.062458, -0.259677, color),
+            ShapeVertex::from_xy(0.062967, -0.259589, color),
+            ShapeVertex::from_xy(0.066547, -0.258386, color),
+            ShapeVertex::from_xy(0.067887, -0.258014, color),
+            ShapeVertex::from_xy(0.07004, -0.257309, color),
+            ShapeVertex::from_xy(0.071653, -0.256721, color),
+            ShapeVertex::from_xy(0.074543, -0.255857, color),
+            ShapeVertex::from_xy(0.075867, -0.255461, color),
+            ShapeVertex::from_xy(0.076304, -0.255347, color),
+            ShapeVertex::from_xy(0.076776, -0.255223, color),
+            ShapeVertex::from_xy(0.077765, -0.25473, color),
+            ShapeVertex::from_xy(0.078621, -0.254303, color),
+            ShapeVertex::from_xy(0.079304, -0.254101, color),
+            ShapeVertex::from_xy(0.079705, -0.253983, color),
+            ShapeVertex::from_xy(0.084591, -0.234438, color),
+            ShapeVertex::from_xy(-0.02509, -0.159233, color),
+            ShapeVertex::from_xy(0.084454, -0.246992, color),
+            ShapeVertex::from_xy(-0.025419, -0.159233, color),
+            ShapeVertex::from_xy(0.084755, -0.246549, color),
+            ShapeVertex::from_xy(-0.026684, -0.159456, color),
+            ShapeVertex::from_xy(0.08494, -0.246032, color),
+            ShapeVertex::from_xy(-0.029013, -0.159776, color),
+            ShapeVertex::from_xy(0.085077, -0.245651, color),
+            ShapeVertex::from_xy(-0.031462, -0.159804, color),
+            ShapeVertex::from_xy(0.085089, -0.245244, color),
+            ShapeVertex::from_xy(-0.034065, -0.159816, color),
+            ShapeVertex::from_xy(0.085093, -0.244838, color),
+            ShapeVertex::from_xy(0.085095, -0.244581, color),
+            ShapeVertex::from_xy(0.085197, -0.244219, color),
+            ShapeVertex::from_xy(-0.043031, -0.160046, color),
+            ShapeVertex::from_xy(0.08534, -0.243711, color),
+            ShapeVertex::from_xy(-0.050281, -0.161081, color),
+            ShapeVertex::from_xy(0.085372, -0.24305, color),
+            ShapeVertex::from_xy(-0.106779, -0.188431, color),
+            ShapeVertex::from_xy(0.085381, -0.242279, color),
+            ShapeVertex::from_xy(-0.106826, -0.18927, color),
+            ShapeVertex::from_xy(0.085392, -0.241218, color),
+            ShapeVertex::from_xy(-0.105986, -0.198897, color),
+            ShapeVertex::from_xy(0.085184, -0.239298, color),
+            ShapeVertex::from_xy(-0.104937, -0.202471, color),
+            ShapeVertex::from_xy(0.084811, -0.237365, color),
+            ShapeVertex::from_xy(-0.10419, -0.204777, color),
+            ShapeVertex::from_xy(0.084803, -0.236092, color),
+            ShapeVertex::from_xy(-0.103318, -0.207974, color),
+            ShapeVertex::from_xy(-0.10301, -0.209201, color),
+            ShapeVertex::from_xy(-0.10245, -0.210605, color),
+            ShapeVertex::from_xy(0.0231, -0.188042, color),
+            ShapeVertex::from_xy(-0.102131, -0.211545, color),
+            ShapeVertex::from_xy(0.02043, -0.18195, color),
+            ShapeVertex::from_xy(-0.102013, -0.211899, color),
+            ShapeVertex::from_xy(0.0193, -0.179456, color),
+            ShapeVertex::from_xy(-0.101246, -0.213619, color),
+            ShapeVertex::from_xy(0.035385, -0.129474, color),
+            ShapeVertex::from_xy(-0.100984, -0.214397, color),
+            ShapeVertex::from_xy(0.034789, -0.128797, color),
+            ShapeVertex::from_xy(-0.100965, -0.214453, color),
+            ShapeVertex::from_xy(0.02832, -0.124036, color),
+            ShapeVertex::from_xy(-0.100513, -0.215161, color),
+            ShapeVertex::from_xy(0.026496, -0.123395, color),
+            ShapeVertex::from_xy(-0.100175, -0.216001, color),
+            ShapeVertex::from_xy(0.024577, -0.122305, color),
+            ShapeVertex::from_xy(-0.10007, -0.216506, color),
+            ShapeVertex::from_xy(0.022202, -0.121382, color),
+            ShapeVertex::from_xy(-0.099891, -0.216732, color),
+            ShapeVertex::from_xy(0.019673, -0.120967, color),
+            ShapeVertex::from_xy(-0.099838, -0.217023, color),
+            ShapeVertex::from_xy(0.017803, -0.120827, color),
+            ShapeVertex::from_xy(-0.097975, -0.2246, color),
+            ShapeVertex::from_xy(0.016976, -0.120765, color),
+            ShapeVertex::from_xy(-0.008383, -0.159268, color),
+            ShapeVertex::from_xy(-0.009077, -0.159263, color),
+            ShapeVertex::from_xy(-0.010141, -0.159254, color),
+            ShapeVertex::from_xy(0.031415, -0.246154, color),
+            ShapeVertex::from_xy(0.036001, -0.245594, color),
+            ShapeVertex::from_xy(-0.057723, -0.120552, color),
+            ShapeVertex::from_xy(0.155174, -0.23772, color),
+            ShapeVertex::from_xy(0.150658, -0.23322, color),
+        ],
+        indices: vec![
+            174, 2, 0, 252, 3, 2, 254, 4, 3, 256, 5, 4, 258, 6, 5, 6, 262, 7, 311, 8, 7, 311, 9, 8,
+            104, 266, 10, 10, 268, 11, 268, 12, 11, 12, 272, 13, 272, 14, 13, 274, 15, 14, 276, 16,
+            15, 16, 280, 17, 17, 281, 18, 18, 282, 19, 19, 284, 20, 20, 286, 21, 21, 288, 22, 22,
+            290, 23, 23, 292, 24, 24, 294, 25, 25, 296, 26, 26, 298, 27, 27, 300, 28, 28, 302, 29,
+            29, 228, 30, 30, 225, 31, 31, 223, 32, 32, 203, 34, 34, 200, 35, 200, 33, 35, 190, 36,
+            33, 192, 38, 36, 188, 37, 38, 211, 39, 37, 179, 40, 39, 304, 41, 40, 181, 42, 41, 183,
+            43, 42, 185, 44, 43, 189, 45, 44, 187, 46, 45, 191, 47, 46, 47, 195, 48, 195, 49, 48,
+            197, 50, 49, 199, 51, 50, 51, 202, 52, 52, 204, 53, 53, 206, 54, 54, 208, 55, 55, 210,
+            56, 56, 212, 57, 57, 214, 58, 58, 216, 59, 59, 218, 60, 60, 220, 61, 61, 224, 62, 62,
+            222, 63, 63, 226, 64, 104, 311, 1, 64, 1, 66, 66, 309, 67, 310, 231, 68, 231, 69, 68,
+            233, 70, 69, 235, 71, 70, 237, 72, 71, 238, 73, 72, 177, 74, 73, 175, 75, 74, 172, 76,
+            75, 239, 77, 76, 240, 78, 77, 78, 242, 79, 79, 243, 80, 80, 244, 81, 81, 245, 82, 82,
+            246, 83, 83, 247, 84, 84, 248, 85, 85, 249, 86, 86, 250, 87, 250, 88, 87, 88, 1, 89,
+            89, 1, 90, 90, 1, 91, 91, 1, 92, 92, 1, 93, 93, 1, 94, 94, 1, 95, 95, 1, 96, 96, 1, 98,
+            98, 1, 100, 100, 1, 102, 102, 1, 101, 101, 1, 99, 99, 1, 105, 105, 1, 103, 103, 1, 97,
+            97, 1, 106, 106, 1, 107, 107, 1, 108, 108, 1, 109, 109, 1, 110, 1, 111, 110, 312, 112,
+            111, 313, 1, 113, 113, 255, 114, 114, 257, 115, 115, 259, 116, 116, 261, 117, 117, 263,
+            118, 118, 264, 119, 119, 265, 120, 120, 267, 121, 121, 269, 122, 122, 271, 123, 123,
+            273, 124, 124, 275, 125, 125, 277, 126, 126, 279, 127, 127, 251, 128, 251, 129, 128,
+            129, 1, 130, 130, 283, 131, 283, 132, 131, 285, 133, 132, 287, 134, 133, 289, 135, 134,
+            135, 293, 136, 293, 137, 136, 295, 138, 137, 138, 299, 139, 139, 301, 140, 140, 303,
+            141, 141, 305, 142, 305, 143, 142, 143, 307, 144, 144, 308, 145, 145, 65, 146, 146,
+            173, 147, 147, 176, 148, 148, 178, 149, 149, 180, 150, 150, 182, 151, 151, 184, 152,
+            152, 186, 153, 153, 194, 154, 154, 196, 156, 156, 198, 158, 158, 201, 155, 201, 157,
+            155, 234, 160, 157, 232, 159, 160, 230, 161, 159, 236, 162, 161, 205, 163, 162, 209,
+            164, 163, 207, 165, 164, 213, 166, 165, 217, 167, 166, 219, 168, 167, 221, 169, 168,
+            215, 170, 169, 227, 171, 170, 229, 0, 171, 176, 173, 1, 252, 174, 1, 178, 176, 1, 254,
+            252, 1, 180, 178, 1, 256, 254, 1, 182, 180, 1, 258, 256, 1, 184, 182, 1, 260, 258, 1,
+            186, 184, 1, 262, 260, 1, 194, 186, 1, 196, 194, 1, 198, 196, 1, 201, 198, 1, 268, 266,
+            1, 234, 201, 1, 270, 268, 1, 232, 234, 1, 272, 270, 1, 230, 232, 1, 274, 272, 1, 236,
+            230, 1, 276, 274, 1, 205, 236, 1, 278, 276, 1, 209, 205, 1, 280, 278, 1, 207, 209, 1,
+            281, 280, 1, 213, 207, 1, 282, 281, 1, 217, 213, 1, 284, 282, 1, 219, 217, 1, 286, 284,
+            1, 221, 219, 1, 288, 286, 1, 215, 221, 1, 290, 288, 1, 227, 215, 1, 292, 290, 1, 229,
+            227, 1, 294, 292, 1, 174, 229, 1, 296, 294, 1, 298, 296, 1, 300, 298, 1, 302, 300, 1,
+            228, 302, 1, 225, 228, 1, 223, 225, 1, 203, 223, 1, 200, 203, 1, 190, 200, 1, 192, 190,
+            1, 188, 192, 1, 211, 188, 1, 179, 211, 1, 304, 179, 1, 181, 304, 1, 183, 181, 1, 185,
+            183, 1, 189, 185, 1, 187, 189, 1, 191, 187, 1, 193, 191, 1, 195, 193, 1, 197, 195, 1,
+            199, 197, 1, 204, 202, 1, 206, 204, 1, 208, 206, 1, 210, 208, 1, 212, 210, 1, 214, 212,
+            1, 216, 214, 1, 218, 216, 1, 220, 218, 1, 224, 220, 1, 222, 224, 1, 226, 222, 1, 233,
+            231, 1, 235, 233, 1, 237, 235, 1, 238, 237, 1, 177, 238, 1, 175, 177, 1, 172, 175, 1,
+            239, 172, 1, 240, 239, 1, 241, 240, 1, 242, 241, 1, 243, 242, 1, 244, 243, 1, 245, 244,
+            1, 246, 245, 1, 247, 246, 1, 248, 247, 1, 249, 248, 1, 250, 249, 1, 255, 253, 1, 257,
+            255, 1, 259, 257, 1, 261, 259, 1, 263, 261, 1, 264, 263, 1, 265, 264, 1, 267, 265, 1,
+            269, 267, 1, 271, 269, 1, 273, 271, 1, 275, 273, 1, 277, 275, 1, 279, 277, 1, 251, 279,
+            1, 285, 283, 1, 287, 285, 1, 289, 287, 1, 291, 289, 1, 293, 291, 1, 295, 293, 1, 297,
+            295, 1, 299, 297, 1, 301, 299, 1, 303, 301, 1, 305, 303, 1, 306, 305, 1, 307, 306, 1,
+            308, 307, 1, 65, 308, 1, 173, 65, 1, 310, 1, 231, 313, 312, 1, 114, 313, 113, 174, 252,
+            2, 252, 254, 3, 254, 256, 4, 256, 258, 5, 258, 260, 6, 6, 260, 262, 7, 262, 311, 262,
+            1, 311, 311, 104, 9, 10, 9, 104, 104, 1, 266, 10, 266, 268, 268, 270, 12, 12, 270, 272,
+            272, 274, 14, 274, 276, 15, 276, 278, 16, 16, 278, 280, 17, 280, 281, 18, 281, 282, 19,
+            282, 284, 20, 284, 286, 21, 286, 288, 22, 288, 290, 23, 290, 292, 24, 292, 294, 25,
+            294, 296, 26, 296, 298, 27, 298, 300, 28, 300, 302, 29, 302, 228, 30, 228, 225, 31,
+            225, 223, 32, 223, 203, 34, 203, 200, 200, 190, 33, 190, 192, 36, 192, 188, 38, 188,
+            211, 37, 211, 179, 39, 179, 304, 40, 304, 181, 41, 181, 183, 42, 183, 185, 43, 185,
+            189, 44, 189, 187, 45, 187, 191, 46, 191, 193, 47, 47, 193, 195, 195, 197, 49, 197,
+            199, 50, 199, 1, 51, 51, 1, 202, 52, 202, 204, 53, 204, 206, 54, 206, 208, 55, 208,
+            210, 56, 210, 212, 57, 212, 214, 58, 214, 216, 59, 216, 218, 60, 218, 220, 61, 220,
+            224, 62, 224, 222, 63, 222, 226, 64, 226, 1, 66, 1, 309, 68, 67, 310, 67, 309, 310,
+            231, 233, 69, 233, 235, 70, 235, 237, 71, 237, 238, 72, 238, 177, 73, 177, 175, 74,
+            175, 172, 75, 172, 239, 76, 239, 240, 77, 240, 241, 78, 78, 241, 242, 79, 242, 243, 80,
+            243, 244, 81, 244, 245, 82, 245, 246, 83, 246, 247, 84, 247, 248, 85, 248, 249, 86,
+            249, 250, 250, 1, 88, 1, 312, 111, 312, 313, 112, 113, 112, 313, 1, 253, 113, 113, 253,
+            255, 114, 255, 257, 115, 257, 259, 116, 259, 261, 117, 261, 263, 118, 263, 264, 119,
+            264, 265, 120, 265, 267, 121, 267, 269, 122, 269, 271, 123, 271, 273, 124, 273, 275,
+            125, 275, 277, 126, 277, 279, 127, 279, 251, 251, 1, 129, 130, 1, 283, 283, 285, 132,
+            285, 287, 133, 287, 289, 134, 289, 291, 135, 135, 291, 293, 293, 295, 137, 295, 297,
+            138, 138, 297, 299, 139, 299, 301, 140, 301, 303, 141, 303, 305, 305, 306, 143, 143,
+            306, 307, 144, 307, 308, 145, 308, 65, 146, 65, 173, 147, 173, 176, 148, 176, 178, 149,
+            178, 180, 150, 180, 182, 151, 182, 184, 152, 184, 186, 153, 186, 194, 154, 194, 196,
+            156, 196, 198, 158, 198, 201, 201, 234, 157, 234, 232, 160, 232, 230, 159, 230, 236,
+            161, 236, 205, 162, 205, 209, 163, 209, 207, 164, 207, 213, 165, 213, 217, 166, 217,
+            219, 167, 219, 221, 168, 221, 215, 169, 215, 227, 170, 227, 229, 171, 229, 174, 0, 310,
+            309, 1,
+        ],
+    }
+}

+ 373 - 0
bin/darkwallet/src/shape/netlogo2.rs

@@ -0,0 +1,373 @@
+use crate::{
+    mesh::Color,
+    ui::{ShapeVertex, VectorShape},
+};
+pub fn create_netlogo2(color: Color) -> VectorShape {
+    VectorShape {
+        verts: vec![
+            ShapeVertex::from_xy(-0.092672, 0.229295, color),
+            ShapeVertex::from_xy(-0.05587, 0.215822, color),
+            ShapeVertex::from_xy(-0.094244, 0.213289, color),
+            ShapeVertex::from_xy(-0.057849, 0.2006, color),
+            ShapeVertex::from_xy(-0.096923, 0.204068, color),
+            ShapeVertex::from_xy(-0.064964, 0.176295, color),
+            ShapeVertex::from_xy(-0.106859, 0.17437, color),
+            ShapeVertex::from_xy(-0.080393, 0.143705, color),
+            ShapeVertex::from_xy(-0.125286, 0.144779, color),
+            ShapeVertex::from_xy(-0.102744, 0.112396, color),
+            ShapeVertex::from_xy(-0.143901, 0.124958, color),
+            ShapeVertex::from_xy(-0.122513, 0.09335, color),
+            ShapeVertex::from_xy(-0.164119, 0.112271, color),
+            ShapeVertex::from_xy(-0.130064, 0.088085, color),
+            ShapeVertex::from_xy(-0.175551, 0.030293, color),
+            ShapeVertex::from_xy(-0.134894, 0.044002, color),
+            ShapeVertex::from_xy(-0.146567, 0.004396, color),
+            ShapeVertex::from_xy(-0.100873, 0.013953, color),
+            ShapeVertex::from_xy(-0.180836, -0.073298, color),
+            ShapeVertex::from_xy(-0.146544, -0.090607, color),
+            ShapeVertex::from_xy(-0.194759, -0.099656, color),
+            ShapeVertex::from_xy(-0.161785, -0.118893, color),
+            ShapeVertex::from_xy(-0.24534, -0.168477, color),
+            ShapeVertex::from_xy(-0.230976, -0.214723, color),
+            ShapeVertex::from_xy(-0.283526, -0.156565, color),
+            ShapeVertex::from_xy(-0.276551, -0.199385, color),
+            ShapeVertex::from_xy(-0.345759, -0.206449, color),
+            ShapeVertex::from_xy(-0.308696, -0.224025, color),
+            ShapeVertex::from_xy(-0.347698, -0.230779, color),
+            ShapeVertex::from_xy(-0.31187, -0.248355, color),
+            ShapeVertex::from_xy(-0.351577, -0.248057, color),
+            ShapeVertex::from_xy(-0.317952, -0.268807, color),
+            ShapeVertex::from_xy(-0.364359, -0.275914, color),
+            ShapeVertex::from_xy(-0.330734, -0.296664, color),
+            ShapeVertex::from_xy(-0.371588, -0.288255, color),
+            ShapeVertex::from_xy(-0.338756, -0.309005, color),
+            ShapeVertex::from_xy(-0.383991, -0.305137, color),
+            ShapeVertex::from_xy(-0.352623, -0.327738, color),
+            ShapeVertex::from_xy(-0.396521, -0.318724, color),
+            ShapeVertex::from_xy(-0.366992, -0.343165, color),
+            ShapeVertex::from_xy(-0.413433, -0.328758, color),
+            ShapeVertex::from_xy(-0.384904, -0.357928, color),
+            ShapeVertex::from_xy(-0.430432, -0.355343, color),
+            ShapeVertex::from_xy(-0.399449, -0.37838, color),
+            ShapeVertex::from_xy(-0.44753, -0.372364, color),
+            ShapeVertex::from_xy(-0.415934, -0.396628, color),
+            ShapeVertex::from_xy(-0.459676, -0.378726, color),
+            ShapeVertex::from_xy(-0.425014, -0.405443, color),
+            ShapeVertex::from_xy(-0.464995, -0.39139, color),
+            ShapeVertex::from_xy(-0.43524, -0.413201, color),
+            ShapeVertex::from_xy(-0.47971, -0.410527, color),
+            ShapeVertex::from_xy(-0.448727, -0.433564, color),
+            ShapeVertex::from_xy(-0.488437, -0.421987, color),
+            ShapeVertex::from_xy(-0.457455, -0.445024, color),
+            ShapeVertex::from_xy(-0.501131, -0.432765, color),
+            ShapeVertex::from_xy(-0.470149, -0.459482, color),
+            ShapeVertex::from_xy(-0.512775, -0.443347, color),
+            ShapeVertex::from_xy(-0.484188, -0.46948, color),
+            ShapeVertex::from_xy(-0.521671, -0.453899, color),
+            ShapeVertex::from_xy(-0.529957, -0.469767, color),
+            ShapeVertex::from_xy(-0.545649, -0.491364, color),
+            ShapeVertex::from_xy(-0.538076, -0.514138, color),
+            ShapeVertex::from_xy(-0.560006, -0.502461, color),
+            ShapeVertex::from_xy(-0.466747, -0.465245, color),
+            ShapeVertex::from_xy(-0.599063, -0.537151, color),
+            ShapeVertex::from_xy(-0.520701, -0.511463, color),
+            ShapeVertex::from_xy(-0.476964, -0.50893, color),
+            ShapeVertex::from_xy(-0.49228, -0.508132, color),
+            ShapeVertex::from_xy(-0.459951, -0.501965, color),
+            ShapeVertex::from_xy(-0.450809, -0.460288, color),
+            ShapeVertex::from_xy(-0.448024, -0.497133, color),
+            ShapeVertex::from_xy(-0.435296, -0.457325, color),
+            ShapeVertex::from_xy(-0.434084, -0.494278, color),
+            ShapeVertex::from_xy(-0.418687, -0.456091, color),
+            ShapeVertex::from_xy(-0.416189, -0.493308, color),
+            ShapeVertex::from_xy(-0.404082, -0.456091, color),
+            ShapeVertex::from_xy(-0.402966, -0.493132, color),
+            ShapeVertex::from_xy(-0.386972, -0.44851, color),
+            ShapeVertex::from_xy(-0.3975, -0.493661, color),
+            ShapeVertex::from_xy(-0.379428, -0.48608, color),
+            ShapeVertex::from_xy(-0.372649, -0.443799, color),
+            ShapeVertex::from_xy(-0.372641, -0.483984, color),
+            ShapeVertex::from_xy(-0.357376, -0.441243, color),
+            ShapeVertex::from_xy(-0.355892, -0.481515, color),
+            ShapeVertex::from_xy(-0.344105, -0.440537, color),
+            ShapeVertex::from_xy(-0.34117, -0.480545, color),
+            ShapeVertex::from_xy(-0.335425, -0.440449, color),
+            ShapeVertex::from_xy(-0.330944, -0.480369, color),
+            ShapeVertex::from_xy(-0.321737, -0.433397, color),
+            ShapeVertex::from_xy(-0.316487, -0.473317, color),
+            ShapeVertex::from_xy(-0.302361, -0.427576, color),
+            ShapeVertex::from_xy(-0.298518, -0.467148, color),
+            ShapeVertex::from_xy(-0.279061, -0.424491, color),
+            ShapeVertex::from_xy(-0.273908, -0.464063, color),
+            ShapeVertex::from_xy(-0.248041, -0.424711, color),
+            ShapeVertex::from_xy(-0.246066, -0.46443, color),
+            ShapeVertex::from_xy(-0.217119, -0.429439, color),
+            ShapeVertex::from_xy(-0.222485, -0.468103, color),
+            ShapeVertex::from_xy(-0.197143, -0.435977, color),
+            ShapeVertex::from_xy(-0.20221, -0.474274, color),
+            ShapeVertex::from_xy(-0.183152, -0.441927, color),
+            ShapeVertex::from_xy(-0.187558, -0.481464, color),
+            ShapeVertex::from_xy(-0.17624, -0.438426, color),
+            ShapeVertex::from_xy(-0.171396, -0.478305, color),
+            ShapeVertex::from_xy(-0.170254, -0.434753, color),
+            ShapeVertex::from_xy(-0.163683, -0.473677, color),
+            ShapeVertex::from_xy(-0.160381, -0.430713, color),
+            ShapeVertex::from_xy(-0.14809, -0.467082, color),
+            ShapeVertex::from_xy(-0.153964, -0.428729, color),
+            ShapeVertex::from_xy(-0.134279, -0.463189, color),
+            ShapeVertex::from_xy(-0.14502, -0.424692, color),
+            ShapeVertex::from_xy(-0.122011, -0.456063, color),
+            ShapeVertex::from_xy(-0.136505, -0.377442, color),
+            ShapeVertex::from_xy(-0.111433, -0.451729, color),
+            ShapeVertex::from_xy(-0.103198, -0.412567, color),
+            ShapeVertex::from_xy(-0.036971, -0.367114, color),
+            ShapeVertex::from_xy(-0.025071, -0.404793, color),
+            ShapeVertex::from_xy(0.012798, -0.363926, color),
+            ShapeVertex::from_xy(0.011879, -0.403525, color),
+            ShapeVertex::from_xy(0.125515, -0.377896, color),
+            ShapeVertex::from_xy(0.093843, -0.412555, color),
+            ShapeVertex::from_xy(0.134011, -0.422327, color),
+            ShapeVertex::from_xy(0.101743, -0.451347, color),
+            ShapeVertex::from_xy(0.142949, -0.427722, color),
+            ShapeVertex::from_xy(0.11803, -0.458503, color),
+            ShapeVertex::from_xy(0.145005, -0.428569, color),
+            ShapeVertex::from_xy(0.125752, -0.463793, color),
+            ShapeVertex::from_xy(0.155283, -0.432483, color),
+            ShapeVertex::from_xy(0.138447, -0.467495, color),
+            ShapeVertex::from_xy(0.164579, -0.437031, color),
+            ShapeVertex::from_xy(0.149448, -0.472044, color),
+            ShapeVertex::from_xy(0.173333, -0.440313, color),
+            ShapeVertex::from_xy(0.156536, -0.47564, color),
+            ShapeVertex::from_xy(0.160344, -0.478074, color),
+            ShapeVertex::from_xy(0.168913, -0.479237, color),
+            ShapeVertex::from_xy(0.185969, -0.435614, color),
+            ShapeVertex::from_xy(0.178537, -0.481917, color),
+            ShapeVertex::from_xy(0.19162, -0.47466, color),
+            ShapeVertex::from_xy(0.197624, -0.431639, color),
+            ShapeVertex::from_xy(0.200895, -0.470241, color),
+            ShapeVertex::from_xy(0.213354, -0.427514, color),
+            ShapeVertex::from_xy(0.219513, -0.466116, color),
+            ShapeVertex::from_xy(0.229496, -0.42515, color),
+            ShapeVertex::from_xy(0.235106, -0.463825, color),
+            ShapeVertex::from_xy(0.268793, -0.424749, color),
+            ShapeVertex::from_xy(0.267581, -0.464036, color),
+            ShapeVertex::from_xy(0.296223, -0.429278, color),
+            ShapeVertex::from_xy(0.286088, -0.466299, color),
+            ShapeVertex::from_xy(0.316019, -0.436803, color),
+            ShapeVertex::from_xy(0.297929, -0.471256, color),
+            ShapeVertex::from_xy(0.323947, -0.439875, color),
+            ShapeVertex::from_xy(0.314326, -0.478978, color),
+            ShapeVertex::from_xy(0.343678, -0.441016, color),
+            ShapeVertex::from_xy(0.328659, -0.478191, color),
+            ShapeVertex::from_xy(0.360488, -0.44292, color),
+            ShapeVertex::from_xy(0.345373, -0.480095, color),
+            ShapeVertex::from_xy(0.375495, -0.448136, color),
+            ShapeVertex::from_xy(0.360183, -0.483586, color),
+            ShapeVertex::from_xy(0.385027, -0.451278, color),
+            ShapeVertex::from_xy(0.374675, -0.489192, color),
+            ShapeVertex::from_xy(0.393009, -0.454805, color),
+            ShapeVertex::from_xy(0.38536, -0.493741, color),
+            ShapeVertex::from_xy(0.410295, -0.455086, color),
+            ShapeVertex::from_xy(0.394919, -0.493283, color),
+            ShapeVertex::from_xy(0.422436, -0.455897, color),
+            ShapeVertex::from_xy(0.405921, -0.4936, color),
+            ShapeVertex::from_xy(0.438469, -0.4584, color),
+            ShapeVertex::from_xy(0.423376, -0.49561, color),
+            ShapeVertex::from_xy(0.450072, -0.462207, color),
+            ShapeVertex::from_xy(0.437974, -0.498678, color),
+            ShapeVertex::from_xy(0.463408, -0.46718, color),
+            ShapeVertex::from_xy(0.453101, -0.50439, color),
+            ShapeVertex::from_xy(0.471083, -0.46856, color),
+            ShapeVertex::from_xy(0.465372, -0.509468, color),
+            ShapeVertex::from_xy(0.474364, -0.508516, color),
+            ShapeVertex::from_xy(0.488116, -0.50841, color),
+            ShapeVertex::from_xy(0.507001, -0.45051, color),
+            ShapeVertex::from_xy(0.503349, -0.509256, color),
+            ShapeVertex::from_xy(0.539638, -0.493907, color),
+            ShapeVertex::from_xy(0.548408, -0.521091, color),
+            ShapeVertex::from_xy(0.566392, -0.516754, color),
+            ShapeVertex::from_xy(0.568084, -0.528496, color),
+            ShapeVertex::from_xy(0.512925, -0.46204, color),
+            ShapeVertex::from_xy(0.587126, -0.534737, color),
+            ShapeVertex::from_xy(0.527798, -0.481394, color),
+            ShapeVertex::from_xy(0.466442, -0.461912, color),
+            ShapeVertex::from_xy(0.501552, -0.441158, color),
+            ShapeVertex::from_xy(0.443865, -0.445315, color),
+            ShapeVertex::from_xy(0.483799, -0.426483, color),
+            ShapeVertex::from_xy(0.442974, -0.44388, color),
+            ShapeVertex::from_xy(0.470232, -0.411259, color),
+            ShapeVertex::from_xy(0.443656, -0.439267, color),
+            ShapeVertex::from_xy(0.45835, -0.395287, color),
+            ShapeVertex::from_xy(0.423418, -0.414497, color),
+            ShapeVertex::from_xy(0.452744, -0.386824, color),
+            ShapeVertex::from_xy(0.418975, -0.405823, color),
+            ShapeVertex::from_xy(0.449147, -0.379736, color),
+            ShapeVertex::from_xy(0.411177, -0.400882, color),
+            ShapeVertex::from_xy(0.438145, -0.371591, color),
+            ShapeVertex::from_xy(0.401022, -0.391784, color),
+            ShapeVertex::from_xy(0.42799, -0.362493, color),
+            ShapeVertex::from_xy(0.391607, -0.381523, color),
+            ShapeVertex::from_xy(0.418575, -0.352232, color),
+            ShapeVertex::from_xy(0.383567, -0.371791, color),
+            ShapeVertex::from_xy(0.410535, -0.3425, color),
+            ShapeVertex::from_xy(0.377432, -0.362905, color),
+            ShapeVertex::from_xy(0.407075, -0.336431, color),
+            ShapeVertex::from_xy(0.373941, -0.357616, color),
+            ShapeVertex::from_xy(0.402985, -0.330437, color),
+            ShapeVertex::from_xy(0.37172, -0.35349, color),
+            ShapeVertex::from_xy(0.400729, -0.32522, color),
+            ShapeVertex::from_xy(0.364209, -0.348413, color),
+            ShapeVertex::from_xy(0.390754, -0.31891, color),
+            ShapeVertex::from_xy(0.355535, -0.341219, color),
+            ShapeVertex::from_xy(0.382079, -0.311717, color),
+            ShapeVertex::from_xy(0.346754, -0.332545, color),
+            ShapeVertex::from_xy(0.373299, -0.303042, color),
+            ShapeVertex::from_xy(0.338883, -0.323098, color),
+            ShapeVertex::from_xy(0.365831, -0.293871, color),
+            ShapeVertex::from_xy(0.328304, -0.309558, color),
+            ShapeVertex::from_xy(0.358723, -0.284034, color),
+            ShapeVertex::from_xy(0.317862, -0.292809, color),
+            ShapeVertex::from_xy(0.351571, -0.271632, color),
+            ShapeVertex::from_xy(0.306149, -0.268144, color),
+            ShapeVertex::from_xy(0.342953, -0.251602, color),
+            ShapeVertex::from_xy(0.298264, -0.241635, color),
+            ShapeVertex::from_xy(0.33755, -0.23293, color),
+            ShapeVertex::from_xy(0.297205, -0.224257, color),
+            ShapeVertex::from_xy(0.33618, -0.220715, color),
+            ShapeVertex::from_xy(0.336474, -0.205485, color),
+            ShapeVertex::from_xy(0.262908, -0.197561, color),
+            ShapeVertex::from_xy(0.27111, -0.154727, color),
+            ShapeVertex::from_xy(0.218121, -0.213047, color),
+            ShapeVertex::from_xy(0.234394, -0.166762, color),
+            ShapeVertex::from_xy(0.163183, -0.137412, color),
+            ShapeVertex::from_xy(0.2138, -0.138901, color),
+            ShapeVertex::from_xy(0.143859, -0.108768, color),
+            ShapeVertex::from_xy(0.185135, -0.098505, color),
+            ShapeVertex::from_xy(0.128552, -0.076177, color),
+            ShapeVertex::from_xy(0.173508, -0.082841, color),
+            ShapeVertex::from_xy(0.088385, 0.015481, color),
+            ShapeVertex::from_xy(0.134512, 0.003277, color),
+            ShapeVertex::from_xy(0.123167, 0.047775, color),
+            ShapeVertex::from_xy(0.163583, 0.031179, color),
+            ShapeVertex::from_xy(0.117501, 0.088977, color),
+            ShapeVertex::from_xy(0.151972, 0.113553, color),
+            ShapeVertex::from_xy(0.107551, 0.095682, color),
+            ShapeVertex::from_xy(0.13681, 0.122953, color),
+            ShapeVertex::from_xy(0.092419, 0.109526, color),
+            ShapeVertex::from_xy(0.120318, 0.137052, color),
+            ShapeVertex::from_xy(0.076275, 0.12943, color),
+            ShapeVertex::from_xy(0.104736, 0.158943, color),
+            ShapeVertex::from_xy(0.059508, 0.158331, color),
+            ShapeVertex::from_xy(0.090712, 0.185717, color),
+            ShapeVertex::from_xy(0.046665, 0.194011, color),
+            ShapeVertex::from_xy(0.083311, 0.215081, color),
+            ShapeVertex::from_xy(0.044018, 0.210065, color),
+            ShapeVertex::from_xy(0.081321, 0.233397, color),
+            ShapeVertex::from_xy(0.042487, 0.219718, color),
+            ShapeVertex::from_xy(0.074196, 0.243074, color),
+            ShapeVertex::from_xy(0.034942, 0.235213, color),
+            ShapeVertex::from_xy(0.069438, 0.253746, color),
+            ShapeVertex::from_xy(0.028356, 0.254561, color),
+            ShapeVertex::from_xy(0.063131, 0.275333, color),
+            ShapeVertex::from_xy(0.025239, 0.264834, color),
+            ShapeVertex::from_xy(0.05969, 0.296005, color),
+            ShapeVertex::from_xy(0.022996, 0.277362, color),
+            ShapeVertex::from_xy(0.058158, 0.30008, color),
+            ShapeVertex::from_xy(0.022203, 0.285144, color),
+            ShapeVertex::from_xy(0.053695, 0.308145, color),
+            ShapeVertex::from_xy(0.0143, 0.298679, color),
+            ShapeVertex::from_xy(0.045487, 0.324373, color),
+            ShapeVertex::from_xy(0.008279, 0.313245, color),
+            ShapeVertex::from_xy(0.040425, 0.341506, color),
+            ShapeVertex::from_xy(0.00288, 0.328564, color),
+            ShapeVertex::from_xy(0.035676, 0.358218, color),
+            ShapeVertex::from_xy(-0.001588, 0.344935, color),
+            ShapeVertex::from_xy(0.032728, 0.376588, color),
+            ShapeVertex::from_xy(-0.005301, 0.360096, color),
+            ShapeVertex::from_xy(0.025845, 0.384946, color),
+            ShapeVertex::from_xy(0.015738, 0.406389, color),
+            ShapeVertex::from_xy(-0.005606, 0.496526, color),
+            ShapeVertex::from_xy(0.008579, 0.424158, color),
+            ShapeVertex::from_xy(-0.013808, 0.456325, color),
+            ShapeVertex::from_xy(0.003633, 0.450925, color),
+            ShapeVertex::from_xy(-0.029276, 0.399374, color),
+            ShapeVertex::from_xy(-0.020921, 0.419415, color),
+            ShapeVertex::from_xy(-0.043889, 0.371874, color),
+            ShapeVertex::from_xy(-0.007666, 0.355748, color),
+            ShapeVertex::from_xy(-0.045644, 0.360687, color),
+            ShapeVertex::from_xy(-0.010079, 0.342147, color),
+            ShapeVertex::from_xy(-0.048057, 0.347087, color),
+            ShapeVertex::from_xy(-0.014247, 0.329644, color),
+            ShapeVertex::from_xy(-0.055449, 0.325642, color),
+            ShapeVertex::from_xy(-0.019511, 0.315606, color),
+            ShapeVertex::from_xy(-0.025653, 0.302006, color),
+            ShapeVertex::from_xy(-0.062448, 0.311381, color),
+            ShapeVertex::from_xy(-0.030479, 0.292793, color),
+            ShapeVertex::from_xy(-0.067274, 0.302168, color),
+            ShapeVertex::from_xy(-0.03355, 0.288625, color),
+            ShapeVertex::from_xy(-0.070345, 0.298, color),
+            ShapeVertex::from_xy(-0.034427, 0.279412, color),
+            ShapeVertex::from_xy(-0.071223, 0.288788, color),
+            ShapeVertex::from_xy(-0.035963, 0.268663, color),
+            ShapeVertex::from_xy(-0.072624, 0.280155, color),
+            ShapeVertex::from_xy(-0.040131, 0.253967, color),
+            ShapeVertex::from_xy(-0.044079, 0.242341, color),
+            ShapeVertex::from_xy(-0.074367, 0.269462, color),
+            ShapeVertex::from_xy(-0.049553, 0.228522, color),
+            ShapeVertex::from_xy(-0.080433, 0.251502, color),
+        ],
+        indices: vec![
+            1, 2, 0, 3, 4, 2, 5, 6, 4, 7, 8, 6, 9, 10, 8, 10, 13, 12, 13, 14, 12, 15, 16, 14, 16,
+            19, 18, 19, 20, 18, 21, 22, 20, 22, 25, 24, 25, 26, 24, 27, 28, 26, 29, 30, 28, 31, 32,
+            30, 33, 34, 32, 34, 37, 36, 36, 39, 38, 38, 41, 40, 41, 42, 40, 42, 45, 44, 44, 47, 46,
+            46, 49, 48, 49, 50, 48, 50, 53, 52, 52, 55, 54, 54, 57, 56, 56, 57, 58, 58, 57, 59, 59,
+            57, 60, 60, 57, 62, 62, 57, 64, 64, 57, 61, 61, 57, 65, 65, 57, 67, 67, 57, 66, 57, 68,
+            66, 63, 70, 68, 69, 72, 70, 71, 74, 72, 74, 75, 76, 76, 75, 78, 75, 79, 78, 77, 81, 79,
+            80, 83, 81, 82, 85, 83, 85, 86, 87, 86, 89, 87, 88, 91, 89, 90, 93, 91, 93, 94, 95, 95,
+            96, 97, 97, 98, 99, 99, 100, 101, 100, 103, 101, 102, 105, 103, 104, 107, 105, 107,
+            108, 109, 109, 110, 111, 111, 110, 113, 110, 114, 113, 114, 115, 116, 116, 117, 118,
+            117, 120, 118, 120, 121, 122, 121, 124, 122, 123, 126, 124, 125, 128, 126, 127, 130,
+            128, 129, 132, 130, 132, 131, 133, 133, 131, 134, 134, 131, 136, 131, 137, 136, 135,
+            139, 137, 138, 141, 139, 141, 142, 143, 143, 144, 145, 144, 147, 145, 147, 148, 149,
+            149, 150, 151, 150, 153, 151, 152, 155, 153, 154, 157, 155, 157, 158, 159, 159, 160,
+            161, 160, 163, 161, 162, 165, 163, 164, 167, 165, 166, 169, 167, 169, 170, 171, 171,
+            172, 173, 173, 172, 174, 174, 172, 175, 175, 172, 177, 177, 172, 179, 179, 172, 181,
+            181, 172, 183, 183, 172, 180, 180, 172, 178, 178, 172, 184, 184, 172, 182, 172, 176,
+            182, 185, 186, 176, 187, 188, 186, 188, 191, 190, 191, 192, 190, 193, 194, 192, 194,
+            195, 196, 195, 198, 196, 197, 200, 198, 200, 201, 202, 202, 203, 204, 204, 205, 206,
+            206, 207, 208, 208, 209, 210, 209, 212, 210, 211, 214, 212, 214, 215, 216, 216, 217,
+            218, 218, 219, 220, 220, 221, 222, 222, 223, 224, 224, 225, 226, 226, 227, 228, 228,
+            227, 229, 229, 230, 231, 230, 233, 231, 232, 235, 233, 234, 237, 235, 236, 239, 237,
+            238, 241, 239, 241, 242, 243, 242, 245, 243, 244, 247, 245, 246, 249, 247, 249, 250,
+            251, 251, 252, 253, 253, 254, 255, 255, 256, 257, 257, 258, 259, 259, 260, 261, 261,
+            262, 263, 263, 264, 265, 265, 266, 267, 267, 268, 269, 269, 270, 271, 271, 272, 273,
+            273, 274, 275, 275, 276, 277, 277, 278, 279, 279, 278, 280, 280, 278, 282, 282, 278,
+            284, 284, 278, 281, 281, 278, 283, 283, 278, 286, 286, 278, 285, 285, 278, 287, 287,
+            288, 289, 289, 290, 291, 291, 292, 293, 293, 292, 294, 293, 295, 296, 296, 297, 298,
+            298, 299, 300, 299, 302, 300, 301, 304, 302, 304, 303, 305, 305, 307, 304, 306, 309,
+            307, 308, 0, 309, 1, 3, 2, 3, 5, 4, 5, 7, 6, 7, 9, 8, 9, 11, 10, 10, 11, 13, 13, 15,
+            14, 15, 17, 16, 16, 17, 19, 19, 21, 20, 21, 23, 22, 22, 23, 25, 25, 27, 26, 27, 29, 28,
+            29, 31, 30, 31, 33, 32, 33, 35, 34, 34, 35, 37, 36, 37, 39, 38, 39, 41, 41, 43, 42, 42,
+            43, 45, 44, 45, 47, 46, 47, 49, 49, 51, 50, 50, 51, 53, 52, 53, 55, 54, 55, 57, 57, 63,
+            68, 63, 69, 70, 69, 71, 72, 71, 73, 74, 74, 73, 75, 75, 77, 79, 77, 80, 81, 80, 82, 83,
+            82, 84, 85, 85, 84, 86, 86, 88, 89, 88, 90, 91, 90, 92, 93, 93, 92, 94, 95, 94, 96, 97,
+            96, 98, 99, 98, 100, 100, 102, 103, 102, 104, 105, 104, 106, 107, 107, 106, 108, 109,
+            108, 110, 110, 112, 114, 114, 112, 115, 116, 115, 117, 117, 119, 120, 120, 119, 121,
+            121, 123, 124, 123, 125, 126, 125, 127, 128, 127, 129, 130, 129, 131, 132, 131, 135,
+            137, 135, 138, 139, 138, 140, 141, 141, 140, 142, 143, 142, 144, 144, 146, 147, 147,
+            146, 148, 149, 148, 150, 150, 152, 153, 152, 154, 155, 154, 156, 157, 157, 156, 158,
+            159, 158, 160, 160, 162, 163, 162, 164, 165, 164, 166, 167, 166, 168, 169, 169, 168,
+            170, 171, 170, 172, 172, 185, 176, 185, 187, 186, 187, 189, 188, 188, 189, 191, 191,
+            193, 192, 193, 195, 194, 195, 197, 198, 197, 199, 200, 200, 199, 201, 202, 201, 203,
+            204, 203, 205, 206, 205, 207, 208, 207, 209, 209, 211, 212, 211, 213, 214, 214, 213,
+            215, 216, 215, 217, 218, 217, 219, 220, 219, 221, 222, 221, 223, 224, 223, 225, 226,
+            225, 227, 229, 227, 230, 230, 232, 233, 232, 234, 235, 234, 236, 237, 236, 238, 239,
+            238, 240, 241, 241, 240, 242, 242, 244, 245, 244, 246, 247, 246, 248, 249, 249, 248,
+            250, 251, 250, 252, 253, 252, 254, 255, 254, 256, 257, 256, 258, 259, 258, 260, 261,
+            260, 262, 263, 262, 264, 265, 264, 266, 267, 266, 268, 269, 268, 270, 271, 270, 272,
+            273, 272, 274, 275, 274, 276, 277, 276, 278, 287, 278, 288, 289, 288, 290, 291, 290,
+            292, 293, 294, 295, 296, 295, 297, 298, 297, 299, 299, 301, 302, 301, 303, 304, 305,
+            306, 307, 306, 308, 309, 308, 1, 0,
+        ],
+    }
+}

+ 390 - 0
bin/darkwallet/src/shape/netlogo3.rs

@@ -0,0 +1,390 @@
+use crate::{
+    mesh::Color,
+    ui::{ShapeVertex, VectorShape},
+};
+pub fn create_netlogo3(color: Color) -> VectorShape {
+    VectorShape {
+        verts: vec![
+            ShapeVertex::from_xy(-0.142341, 0.515982, color),
+            ShapeVertex::from_xy(-0.101938, 0.504233, color),
+            ShapeVertex::from_xy(-0.144884, 0.490086, color),
+            ShapeVertex::from_xy(-0.105618, 0.478168, color),
+            ShapeVertex::from_xy(-0.155439, 0.451718, color),
+            ShapeVertex::from_xy(-0.116172, 0.4398, color),
+            ShapeVertex::from_xy(-0.177259, 0.404146, color),
+            ShapeVertex::from_xy(-0.141135, 0.384678, color),
+            ShapeVertex::from_xy(-0.208986, 0.360096, color),
+            ShapeVertex::from_xy(-0.1773, 0.334021, color),
+            ShapeVertex::from_xy(-0.237192, 0.33329, color),
+            ShapeVertex::from_xy(-0.209285, 0.303205, color),
+            ShapeVertex::from_xy(-0.265118, 0.316591, color),
+            ShapeVertex::from_xy(-0.226287, 0.29038, color),
+            ShapeVertex::from_xy(-0.283232, 0.190078, color),
+            ShapeVertex::from_xy(-0.238696, 0.205942, color),
+            ShapeVertex::from_xy(-0.231742, 0.14301, color),
+            ShapeVertex::from_xy(-0.181929, 0.154453, color),
+            ShapeVertex::from_xy(-0.292931, 0.002946, color),
+            ShapeVertex::from_xy(-0.2541, -0.012425, color),
+            ShapeVertex::from_xy(-0.316607, -0.0397, color),
+            ShapeVertex::from_xy(-0.281057, -0.061062, color),
+            ShapeVertex::from_xy(-0.410458, -0.166927, color),
+            ShapeVertex::from_xy(-0.394163, -0.21496, color),
+            ShapeVertex::from_xy(-0.476211, -0.144676, color),
+            ShapeVertex::from_xy(-0.467903, -0.190143, color),
+            ShapeVertex::from_xy(-0.57591, -0.22241, color),
+            ShapeVertex::from_xy(-0.534797, -0.241918, color),
+            ShapeVertex::from_xy(-0.579048, -0.261776, color),
+            ShapeVertex::from_xy(-0.539932, -0.281284, color),
+            ShapeVertex::from_xy(-0.585323, -0.289732, color),
+            ShapeVertex::from_xy(-0.549773, -0.314374, color),
+            ShapeVertex::from_xy(-0.606005, -0.334803, color),
+            ShapeVertex::from_xy(-0.570455, -0.359445, color),
+            ShapeVertex::from_xy(-0.617701, -0.354771, color),
+            ShapeVertex::from_xy(-0.583434, -0.379413, color),
+            ShapeVertex::from_xy(-0.637769, -0.382085, color),
+            ShapeVertex::from_xy(-0.605869, -0.409722, color),
+            ShapeVertex::from_xy(-0.661018, -0.407045, color),
+            ShapeVertex::from_xy(-0.629118, -0.434682, color),
+            ShapeVertex::from_xy(-0.689374, -0.430227, color),
+            ShapeVertex::from_xy(-0.658099, -0.458569, color),
+            ShapeVertex::from_xy(-0.712908, -0.463317, color),
+            ShapeVertex::from_xy(-0.681633, -0.49166, color),
+            ShapeVertex::from_xy(-0.73958, -0.492841, color),
+            ShapeVertex::from_xy(-0.708305, -0.521184, color),
+            ShapeVertex::from_xy(-0.754271, -0.507104, color),
+            ShapeVertex::from_xy(-0.722996, -0.535447, color),
+            ShapeVertex::from_xy(-0.770816, -0.519656, color),
+            ShapeVertex::from_xy(-0.739541, -0.547999, color),
+            ShapeVertex::from_xy(-0.792639, -0.552603, color),
+            ShapeVertex::from_xy(-0.761364, -0.580946, color),
+            ShapeVertex::from_xy(-0.806759, -0.571146, color),
+            ShapeVertex::from_xy(-0.775484, -0.599488, color),
+            ShapeVertex::from_xy(-0.827298, -0.594537, color),
+            ShapeVertex::from_xy(-0.796023, -0.62288, color),
+            ShapeVertex::from_xy(-0.848122, -0.612651, color),
+            ShapeVertex::from_xy(-0.816847, -0.640994, color),
+            ShapeVertex::from_xy(-0.860531, -0.622778, color),
+            ShapeVertex::from_xy(-0.827402, -0.64998, color),
+            ShapeVertex::from_xy(-0.873938, -0.648451, color),
+            ShapeVertex::from_xy(-0.840809, -0.673371, color),
+            ShapeVertex::from_xy(-0.899327, -0.683396, color),
+            ShapeVertex::from_xy(-0.888772, -0.719339, color),
+            ShapeVertex::from_xy(-0.919865, -0.707215, color),
+            ShapeVertex::from_xy(-0.786324, -0.663957, color),
+            ShapeVertex::from_xy(-0.960943, -0.743586, color),
+            ShapeVertex::from_xy(-0.858962, -0.715916, color),
+            ShapeVertex::from_xy(-0.808043, -0.71777, color),
+            ShapeVertex::from_xy(-0.82687, -0.715488, color),
+            ShapeVertex::from_xy(-0.813852, -0.675225, color),
+            ShapeVertex::from_xy(-0.825547, -0.673799, color),
+            ShapeVertex::from_xy(-0.780515, -0.706502, color),
+            ShapeVertex::from_xy(-0.759087, -0.655938, color),
+            ShapeVertex::from_xy(-0.755264, -0.697691, color),
+            ShapeVertex::from_xy(-0.732577, -0.651144, color),
+            ShapeVertex::from_xy(-0.73271, -0.693072, color),
+            ShapeVertex::from_xy(-0.704193, -0.649147, color),
+            ShapeVertex::from_xy(-0.703756, -0.691503, color),
+            ShapeVertex::from_xy(-0.679233, -0.649147, color),
+            ShapeVertex::from_xy(-0.682361, -0.691217, color),
+            ShapeVertex::from_xy(-0.649993, -0.636881, color),
+            ShapeVertex::from_xy(-0.673518, -0.692073, color),
+            ShapeVertex::from_xy(-0.644279, -0.679807, color),
+            ShapeVertex::from_xy(-0.625517, -0.629259, color),
+            ShapeVertex::from_xy(-0.619405, -0.671454, color),
+            ShapeVertex::from_xy(-0.599415, -0.625123, color),
+            ShapeVertex::from_xy(-0.592305, -0.66746, color),
+            ShapeVertex::from_xy(-0.576737, -0.623982, color),
+            ShapeVertex::from_xy(-0.568486, -0.665891, color),
+            ShapeVertex::from_xy(-0.561904, -0.623839, color),
+            ShapeVertex::from_xy(-0.551941, -0.665606, color),
+            ShapeVertex::from_xy(-0.538512, -0.612428, color),
+            ShapeVertex::from_xy(-0.528549, -0.654196, color),
+            ShapeVertex::from_xy(-0.505399, -0.603011, color),
+            ShapeVertex::from_xy(-0.499476, -0.644215, color),
+            ShapeVertex::from_xy(-0.465581, -0.598019, color),
+            ShapeVertex::from_xy(-0.459658, -0.639223, color),
+            ShapeVertex::from_xy(-0.41257, -0.598376, color),
+            ShapeVertex::from_xy(-0.414611, -0.639817, color),
+            ShapeVertex::from_xy(-0.366096, -0.605032, color),
+            ShapeVertex::from_xy(-0.376457, -0.64576, color),
+            ShapeVertex::from_xy(-0.333172, -0.61561, color),
+            ShapeVertex::from_xy(-0.343652, -0.655745, color),
+            ShapeVertex::from_xy(-0.310114, -0.625238, color),
+            ShapeVertex::from_xy(-0.315958, -0.66977, color),
+            ShapeVertex::from_xy(-0.292879, -0.618582, color),
+            ShapeVertex::from_xy(-0.289809, -0.664659, color),
+            ShapeVertex::from_xy(-0.28135, -0.612639, color),
+            ShapeVertex::from_xy(-0.277329, -0.657171, color),
+            ShapeVertex::from_xy(-0.262332, -0.606101, color),
+            ShapeVertex::from_xy(-0.256885, -0.648494, color),
+            ShapeVertex::from_xy(-0.249971, -0.602892, color),
+            ShapeVertex::from_xy(-0.23454, -0.642195, color),
+            ShapeVertex::from_xy(-0.233925, -0.593383, color),
+            ShapeVertex::from_xy(-0.21469, -0.630665, color),
+            ShapeVertex::from_xy(-0.217523, -0.516933, color),
+            ShapeVertex::from_xy(-0.197574, -0.623653, color),
+            ShapeVertex::from_xy(-0.183454, -0.555903, color),
+            ShapeVertex::from_xy(-0.033272, -0.496651, color),
+            ShapeVertex::from_xy(-0.03121, -0.538188, color),
+            ShapeVertex::from_xy(0.022525, -0.495796, color),
+            ShapeVertex::from_xy(0.024587, -0.537333, color),
+            ShapeVertex::from_xy(0.209086, -0.516677, color),
+            ShapeVertex::from_xy(0.174349, -0.555133, color),
+            ShapeVertex::from_xy(0.224832, -0.593526, color),
+            ShapeVertex::from_xy(0.188726, -0.623082, color),
+            ShapeVertex::from_xy(0.241948, -0.602255, color),
+            ShapeVertex::from_xy(0.21149, -0.632667, color),
+            ShapeVertex::from_xy(0.245884, -0.603624, color),
+            ShapeVertex::from_xy(0.223985, -0.641225, color),
+            ShapeVertex::from_xy(0.265567, -0.609957, color),
+            ShapeVertex::from_xy(0.244523, -0.647215, color),
+            ShapeVertex::from_xy(0.283368, -0.617317, color),
+            ShapeVertex::from_xy(0.262324, -0.654575, color),
+            ShapeVertex::from_xy(0.294835, -0.623136, color),
+            ShapeVertex::from_xy(0.273791, -0.660394, color),
+            ShapeVertex::from_xy(0.298258, -0.62519, color),
+            ShapeVertex::from_xy(0.279953, -0.664331, color),
+            ShapeVertex::from_xy(0.303051, -0.625532, color),
+            ShapeVertex::from_xy(0.293816, -0.666214, color),
+            ShapeVertex::from_xy(0.324328, -0.615024, color),
+            ShapeVertex::from_xy(0.306996, -0.67015, color),
+            ShapeVertex::from_xy(0.328164, -0.658408, color),
+            ShapeVertex::from_xy(0.346646, -0.608593, color),
+            ShapeVertex::from_xy(0.350348, -0.650462, color),
+            ShapeVertex::from_xy(0.376769, -0.601918, color),
+            ShapeVertex::from_xy(0.380471, -0.643787, color),
+            ShapeVertex::from_xy(0.40768, -0.598094, color),
+            ShapeVertex::from_xy(0.4057, -0.64008, color),
+            ShapeVertex::from_xy(0.460225, -0.598436, color),
+            ShapeVertex::from_xy(0.458246, -0.640422, color),
+            ShapeVertex::from_xy(0.497033, -0.602991, color),
+            ShapeVertex::from_xy(0.488189, -0.644083, color),
+            ShapeVertex::from_xy(0.532546, -0.613971, color),
+            ShapeVertex::from_xy(0.517715, -0.6533, color),
+            ShapeVertex::from_xy(0.553256, -0.623726, color),
+            ShapeVertex::from_xy(0.544244, -0.665794, color),
+            ShapeVertex::from_xy(0.581077, -0.624775, color),
+            ShapeVertex::from_xy(0.572221, -0.666115, color),
+            ShapeVertex::from_xy(0.608119, -0.627855, color),
+            ShapeVertex::from_xy(0.599263, -0.669196, color),
+            ShapeVertex::from_xy(0.632081, -0.633504, color),
+            ShapeVertex::from_xy(0.623225, -0.674845, color),
+            ShapeVertex::from_xy(0.65553, -0.642575, color),
+            ShapeVertex::from_xy(0.646674, -0.683916, color),
+            ShapeVertex::from_xy(0.671276, -0.649079, color),
+            ShapeVertex::from_xy(0.663961, -0.691276, color),
+            ShapeVertex::from_xy(0.691131, -0.648737, color),
+            ShapeVertex::from_xy(0.683815, -0.690933, color),
+            ShapeVertex::from_xy(0.708931, -0.64925, color),
+            ShapeVertex::from_xy(0.701615, -0.691447, color),
+            ShapeVertex::from_xy(0.737172, -0.652502, color),
+            ShapeVertex::from_xy(0.729856, -0.694699, color),
+            ShapeVertex::from_xy(0.760791, -0.657466, color),
+            ShapeVertex::from_xy(0.753476, -0.699662, color),
+            ShapeVertex::from_xy(0.785267, -0.666708, color),
+            ShapeVertex::from_xy(0.777951, -0.708905, color),
+            ShapeVertex::from_xy(0.805121, -0.674924, color),
+            ShapeVertex::from_xy(0.797805, -0.71712, color),
+            ShapeVertex::from_xy(0.819669, -0.673383, color),
+            ShapeVertex::from_xy(0.812354, -0.71558, color),
+            ShapeVertex::from_xy(0.831137, -0.673041, color),
+            ShapeVertex::from_xy(0.834604, -0.715409, color),
+            ShapeVertex::from_xy(0.84881, -0.62093, color),
+            ShapeVertex::from_xy(0.859251, -0.716778, color),
+            ShapeVertex::from_xy(0.885266, -0.679979, color),
+            ShapeVertex::from_xy(0.88869, -0.72157, color),
+            ShapeVertex::from_xy(0.917786, -0.714553, color),
+            ShapeVertex::from_xy(0.920525, -0.733551, color),
+            ShapeVertex::from_xy(0.858395, -0.639586, color),
+            ShapeVertex::from_xy(0.951333, -0.743649, color),
+            ShapeVertex::from_xy(0.816931, -0.649079, color),
+            ShapeVertex::from_xy(0.874484, -0.664917, color),
+            ShapeVertex::from_xy(0.803923, -0.637782, color),
+            ShapeVertex::from_xy(0.820056, -0.597824, color),
+            ShapeVertex::from_xy(0.775169, -0.614676, color),
+            ShapeVertex::from_xy(0.816054, -0.594019, color),
+            ShapeVertex::from_xy(0.773693, -0.609923, color),
+            ShapeVertex::from_xy(0.793306, -0.56819, color),
+            ShapeVertex::from_xy(0.75194, -0.583721, color),
+            ShapeVertex::from_xy(0.775677, -0.543543, color),
+            ShapeVertex::from_xy(0.734311, -0.559074, color),
+            ShapeVertex::from_xy(0.766606, -0.529851, color),
+            ShapeVertex::from_xy(0.727122, -0.545039, color),
+            ShapeVertex::from_xy(0.760787, -0.518383, color),
+            ShapeVertex::from_xy(0.709322, -0.53186, color),
+            ShapeVertex::from_xy(0.742986, -0.505204, color),
+            ShapeVertex::from_xy(0.692891, -0.517141, color),
+            ShapeVertex::from_xy(0.726555, -0.490485, color),
+            ShapeVertex::from_xy(0.677658, -0.500538, color),
+            ShapeVertex::from_xy(0.711322, -0.473883, color),
+            ShapeVertex::from_xy(0.66465, -0.484792, color),
+            ShapeVertex::from_xy(0.698314, -0.458136, color),
+            ShapeVertex::from_xy(0.654723, -0.470415, color),
+            ShapeVertex::from_xy(0.687531, -0.44393, color),
+            ShapeVertex::from_xy(0.649075, -0.461857, color),
+            ShapeVertex::from_xy(0.681712, -0.43503, color),
+            ShapeVertex::from_xy(0.645481, -0.455182, color),
+            ShapeVertex::from_xy(0.67846, -0.428184, color),
+            ShapeVertex::from_xy(0.633329, -0.446966, color),
+            ShapeVertex::from_xy(0.666308, -0.419968, color),
+            ShapeVertex::from_xy(0.619294, -0.435328, color),
+            ShapeVertex::from_xy(0.652273, -0.40833, color),
+            ShapeVertex::from_xy(0.605088, -0.421293, color),
+            ShapeVertex::from_xy(0.638067, -0.394295, color),
+            ShapeVertex::from_xy(0.592351, -0.406009, color),
+            ShapeVertex::from_xy(0.624788, -0.379456, color),
+            ShapeVertex::from_xy(0.575236, -0.384101, color),
+            ShapeVertex::from_xy(0.607672, -0.357547, color),
+            ShapeVertex::from_xy(0.558341, -0.357, color),
+            ShapeVertex::from_xy(0.594443, -0.335697, color),
+            ShapeVertex::from_xy(0.539389, -0.317094, color),
+            ShapeVertex::from_xy(0.578308, -0.300294, color),
+            ShapeVertex::from_xy(0.526631, -0.274203, color),
+            ShapeVertex::from_xy(0.567959, -0.267192, color),
+            ShapeVertex::from_xy(0.523722, -0.252466, color),
+            ShapeVertex::from_xy(0.56505, -0.245455, color),
+            ShapeVertex::from_xy(0.522523, -0.239458, color),
+            ShapeVertex::from_xy(0.56505, -0.220808, color),
+            ShapeVertex::from_xy(0.456471, -0.188193, color),
+            ShapeVertex::from_xy(0.463999, -0.142432, color),
+            ShapeVertex::from_xy(0.382284, -0.2121, color),
+            ShapeVertex::from_xy(0.399425, -0.163628, color),
+            ShapeVertex::from_xy(0.312042, -0.117457, color),
+            ShapeVertex::from_xy(0.342738, -0.087717, color),
+            ShapeVertex::from_xy(0.259342, -0.042536, color),
+            ShapeVertex::from_xy(0.296358, -0.021167, color),
+            ShapeVertex::from_xy(0.245294, -0.018382, color),
+            ShapeVertex::from_xy(0.282309, 0.002986, color),
+            ShapeVertex::from_xy(0.168397, 0.156116, color),
+            ShapeVertex::from_xy(0.219214, 0.144704, color),
+            ShapeVertex::from_xy(0.227056, 0.208366, color),
+            ShapeVertex::from_xy(0.272204, 0.19104, color),
+            ShapeVertex::from_xy(0.215472, 0.292904, color),
+            ShapeVertex::from_xy(0.253966, 0.31723, color),
+            ShapeVertex::from_xy(0.199205, 0.303502, color),
+            ShapeVertex::from_xy(0.233263, 0.330046, color),
+            ShapeVertex::from_xy(0.174378, 0.325519, color),
+            ShapeVertex::from_xy(0.206578, 0.3519, color),
+            ShapeVertex::from_xy(0.14776, 0.357313, color),
+            ShapeVertex::from_xy(0.178974, 0.384927, color),
+            ShapeVertex::from_xy(0.119909, 0.403648, color),
+            ShapeVertex::from_xy(0.155806, 0.426333, color),
+            ShapeVertex::from_xy(0.098236, 0.461047, color),
+            ShapeVertex::from_xy(0.139524, 0.470971, color),
+            ShapeVertex::from_xy(0.09051, 0.497913, color),
+            ShapeVertex::from_xy(0.132955, 0.499172, color),
+            ShapeVertex::from_xy(0.090263, 0.508265, color),
+            ShapeVertex::from_xy(0.131476, 0.519136, color),
+            ShapeVertex::from_xy(0.080651, 0.52601, color),
+            ShapeVertex::from_xy(0.121864, 0.536881, color),
+            ShapeVertex::from_xy(0.067095, 0.558544, color),
+            ShapeVertex::from_xy(0.108308, 0.569415, color),
+            ShapeVertex::from_xy(0.05773, 0.590338, color),
+            ShapeVertex::from_xy(0.097957, 0.600469, color),
+            ShapeVertex::from_xy(0.053786, 0.610548, color),
+            ShapeVertex::from_xy(0.094999, 0.621419, color),
+            ShapeVertex::from_xy(0.052308, 0.623118, color),
+            ShapeVertex::from_xy(0.09352, 0.633989, color),
+            ShapeVertex::from_xy(0.039984, 0.645546, color),
+            ShapeVertex::from_xy(0.081197, 0.656417, color),
+            ShapeVertex::from_xy(0.029879, 0.66896, color),
+            ShapeVertex::from_xy(0.071092, 0.679831, color),
+            ShapeVertex::from_xy(0.02076, 0.693607, color),
+            ShapeVertex::from_xy(0.061973, 0.704478, color),
+            ShapeVertex::from_xy(0.01312, 0.719979, color),
+            ShapeVertex::from_xy(0.054332, 0.73085, color),
+            ShapeVertex::from_xy(0.008683, 0.748815, color),
+            ShapeVertex::from_xy(0.049896, 0.759686, color),
+            ShapeVertex::from_xy(-0.005365, 0.772476, color),
+            ShapeVertex::from_xy(0.030672, 0.792466, color),
+            ShapeVertex::from_xy(-0.00482, 0.911509, color),
+            ShapeVertex::from_xy(0.019088, 0.818345, color),
+            ShapeVertex::from_xy(-0.016177, 0.855078, color),
+            ShapeVertex::from_xy(0.007257, 0.851125, color),
+            ShapeVertex::from_xy(0.001536, 0.759167, color),
+            ShapeVertex::from_xy(-0.045989, 0.783031, color),
+            ShapeVertex::from_xy(-0.035342, 0.803971, color),
+            ShapeVertex::from_xy(-0.020627, 0.745858, color),
+            ShapeVertex::from_xy(-0.06054, 0.761027, color),
+            ShapeVertex::from_xy(-0.023466, 0.727757, color),
+            ShapeVertex::from_xy(-0.06338, 0.742927, color),
+            ShapeVertex::from_xy(-0.02737, 0.705753, color),
+            ShapeVertex::from_xy(-0.067284, 0.720922, color),
+            ShapeVertex::from_xy(-0.034113, 0.685523, color),
+            ShapeVertex::from_xy(-0.074027, 0.700692, color),
+            ShapeVertex::from_xy(-0.042631, 0.662808, color),
+            ShapeVertex::from_xy(-0.082545, 0.677978, color),
+            ShapeVertex::from_xy(-0.052569, 0.640804, color),
+            ShapeVertex::from_xy(-0.092482, 0.655973, color),
+            ShapeVertex::from_xy(-0.060377, 0.625898, color),
+            ShapeVertex::from_xy(-0.10029, 0.641067, color),
+            ShapeVertex::from_xy(-0.065345, 0.619155, color),
+            ShapeVertex::from_xy(-0.105259, 0.634324, color),
+            ShapeVertex::from_xy(-0.066765, 0.604248, color),
+            ShapeVertex::from_xy(-0.106679, 0.619418, color),
+            ShapeVertex::from_xy(-0.069249, 0.586858, color),
+            ShapeVertex::from_xy(-0.109163, 0.602027, color),
+            ShapeVertex::from_xy(-0.075993, 0.563079, color),
+            ShapeVertex::from_xy(-0.115907, 0.578248, color),
+            ShapeVertex::from_xy(-0.082381, 0.544268, color),
+            ShapeVertex::from_xy(-0.122295, 0.559438, color),
+            ShapeVertex::from_xy(-0.092673, 0.521909, color),
+            ShapeVertex::from_xy(-0.132587, 0.537078, color),
+        ],
+        indices: vec![
+            1, 2, 0, 3, 4, 2, 4, 7, 6, 6, 9, 8, 8, 11, 10, 10, 13, 12, 12, 15, 14, 15, 16, 14, 16,
+            19, 18, 18, 21, 20, 21, 22, 20, 22, 25, 24, 25, 26, 24, 27, 28, 26, 29, 30, 28, 31, 32,
+            30, 33, 34, 32, 35, 36, 34, 36, 39, 38, 38, 41, 40, 41, 42, 40, 43, 44, 42, 44, 47, 46,
+            46, 49, 48, 49, 50, 48, 51, 52, 50, 53, 54, 52, 54, 57, 56, 56, 59, 58, 59, 60, 58, 60,
+            61, 62, 62, 61, 64, 64, 61, 66, 66, 61, 63, 63, 61, 67, 67, 61, 69, 69, 71, 68, 68, 71,
+            70, 70, 72, 68, 65, 74, 72, 73, 76, 74, 75, 78, 76, 77, 80, 78, 80, 79, 82, 79, 83, 82,
+            81, 85, 83, 85, 86, 87, 87, 88, 89, 89, 90, 91, 90, 93, 91, 92, 95, 93, 95, 96, 97, 97,
+            98, 99, 98, 101, 99, 101, 102, 103, 103, 104, 105, 104, 107, 105, 106, 109, 107, 108,
+            111, 109, 110, 113, 111, 112, 115, 113, 115, 114, 117, 114, 118, 117, 118, 119, 120,
+            120, 121, 122, 121, 124, 122, 124, 125, 126, 125, 128, 126, 127, 130, 128, 129, 132,
+            130, 131, 134, 132, 133, 136, 134, 136, 137, 138, 137, 140, 138, 140, 139, 142, 139,
+            143, 142, 141, 145, 143, 144, 147, 145, 146, 149, 147, 148, 151, 149, 150, 153, 151,
+            153, 154, 155, 155, 156, 157, 156, 159, 157, 158, 161, 159, 161, 162, 163, 163, 164,
+            165, 165, 166, 167, 166, 169, 167, 168, 171, 169, 170, 173, 171, 173, 174, 175, 175,
+            176, 177, 177, 178, 179, 178, 181, 179, 180, 183, 181, 183, 182, 185, 185, 182, 187,
+            187, 182, 189, 189, 182, 191, 191, 182, 188, 188, 182, 186, 186, 182, 193, 182, 190,
+            193, 192, 184, 190, 194, 195, 184, 196, 197, 195, 198, 199, 197, 200, 201, 199, 202,
+            203, 201, 203, 204, 205, 204, 207, 205, 206, 209, 207, 208, 211, 209, 210, 213, 211,
+            213, 214, 215, 215, 216, 217, 217, 218, 219, 218, 221, 219, 220, 223, 221, 222, 225,
+            223, 224, 227, 225, 227, 228, 229, 229, 230, 231, 231, 232, 233, 232, 235, 233, 235,
+            236, 237, 237, 238, 239, 238, 241, 239, 240, 243, 241, 243, 244, 245, 245, 246, 247,
+            246, 249, 247, 248, 251, 249, 251, 252, 253, 252, 255, 253, 254, 257, 255, 256, 259,
+            257, 259, 260, 261, 261, 262, 263, 263, 264, 265, 264, 267, 265, 267, 268, 269, 268,
+            271, 269, 270, 273, 271, 272, 275, 273, 275, 276, 277, 277, 278, 279, 278, 281, 279,
+            280, 283, 281, 282, 285, 283, 284, 287, 285, 287, 288, 289, 289, 288, 291, 291, 288,
+            293, 293, 288, 295, 295, 288, 292, 292, 288, 296, 292, 296, 290, 292, 290, 294, 294,
+            290, 298, 290, 297, 298, 297, 299, 300, 299, 302, 300, 301, 304, 302, 303, 306, 304,
+            305, 308, 306, 308, 309, 310, 310, 311, 312, 312, 313, 314, 313, 316, 314, 315, 318,
+            316, 317, 320, 318, 319, 322, 320, 322, 323, 324, 324, 1, 0, 1, 3, 2, 3, 5, 4, 4, 5, 7,
+            6, 7, 9, 8, 9, 11, 10, 11, 13, 12, 13, 15, 15, 17, 16, 16, 17, 19, 18, 19, 21, 21, 23,
+            22, 22, 23, 25, 25, 27, 26, 27, 29, 28, 29, 31, 30, 31, 33, 32, 33, 35, 34, 35, 37, 36,
+            36, 37, 39, 38, 39, 41, 41, 43, 42, 43, 45, 44, 44, 45, 47, 46, 47, 49, 49, 51, 50, 51,
+            53, 52, 53, 55, 54, 54, 55, 57, 56, 57, 59, 59, 61, 60, 69, 61, 71, 70, 65, 72, 65, 73,
+            74, 73, 75, 76, 75, 77, 78, 77, 79, 80, 79, 81, 83, 81, 84, 85, 85, 84, 86, 87, 86, 88,
+            89, 88, 90, 90, 92, 93, 92, 94, 95, 95, 94, 96, 97, 96, 98, 98, 100, 101, 101, 100,
+            102, 103, 102, 104, 104, 106, 107, 106, 108, 109, 108, 110, 111, 110, 112, 113, 112,
+            114, 115, 114, 116, 118, 118, 116, 119, 120, 119, 121, 121, 123, 124, 124, 123, 125,
+            125, 127, 128, 127, 129, 130, 129, 131, 132, 131, 133, 134, 133, 135, 136, 136, 135,
+            137, 137, 139, 140, 139, 141, 143, 141, 144, 145, 144, 146, 147, 146, 148, 149, 148,
+            150, 151, 150, 152, 153, 153, 152, 154, 155, 154, 156, 156, 158, 159, 158, 160, 161,
+            161, 160, 162, 163, 162, 164, 165, 164, 166, 166, 168, 169, 168, 170, 171, 170, 172,
+            173, 173, 172, 174, 175, 174, 176, 177, 176, 178, 178, 180, 181, 180, 182, 183, 182,
+            192, 190, 192, 194, 184, 194, 196, 195, 196, 198, 197, 198, 200, 199, 200, 202, 201,
+            202, 204, 203, 204, 206, 207, 206, 208, 209, 208, 210, 211, 210, 212, 213, 213, 212,
+            214, 215, 214, 216, 217, 216, 218, 218, 220, 221, 220, 222, 223, 222, 224, 225, 224,
+            226, 227, 227, 226, 228, 229, 228, 230, 231, 230, 232, 232, 234, 235, 235, 234, 236,
+            237, 236, 238, 238, 240, 241, 240, 242, 243, 243, 242, 244, 245, 244, 246, 246, 248,
+            249, 248, 250, 251, 251, 250, 252, 252, 254, 255, 254, 256, 257, 256, 258, 259, 259,
+            258, 260, 261, 260, 262, 263, 262, 264, 264, 266, 267, 267, 266, 268, 268, 270, 271,
+            270, 272, 273, 272, 274, 275, 275, 274, 276, 277, 276, 278, 278, 280, 281, 280, 282,
+            283, 282, 284, 285, 284, 286, 287, 287, 286, 288, 290, 299, 297, 299, 301, 302, 301,
+            303, 304, 303, 305, 306, 305, 307, 308, 308, 307, 309, 310, 309, 311, 312, 311, 313,
+            313, 315, 316, 315, 317, 318, 317, 319, 320, 319, 321, 322, 322, 321, 323, 324, 323, 1,
+        ],
+    }
+}

+ 9 - 0
bin/darkwallet/src/ui/vector_art/shape.rs

@@ -85,6 +85,15 @@ impl VectorShape {
         Ok(verts)
         Ok(verts)
     }
     }
 
 
+    pub fn join(&mut self, mut other: Self) {
+        let off = self.verts.len() as u16;
+        for index in &mut other.indices {
+            *index += off;
+        }
+        self.verts.append(&mut other.verts);
+        self.indices.append(&mut other.indices);
+    }
+
     pub fn add_filled_box(
     pub fn add_filled_box(
         &mut self,
         &mut self,
         x1: SExprCode,
         x1: SExprCode,