logo-runtime 0.1.0

Implements the runtime for graphic functionality of Logo programming language
Documentation
use wasm_bindgen::prelude::*;

#[wasm_bindgen]
#[derive(Copy, Clone, PartialEq)]
pub struct LogoColor {
    pub r: u8,
    pub g: u8,
    pub b: u8
}

static COLORS: &'static [(u8, u8, u8)] = &[
    (255, 255, 255),
    (235, 235, 235),
    (230, 230, 230),
    (205, 205, 205),
    (190, 190, 190),
    (165, 165, 165),
    (135, 135, 135),
    (100, 100, 100),
    (60, 60, 60),
    (0, 0, 0),
    (250, 230, 230),
    (245, 200, 200),
    (240, 155, 150),
    (235, 105, 100),
    (235, 51, 35),
    (225, 49, 33),
    (204, 43, 30),
    (180, 37, 25),
    (150, 30, 20),
    (115, 20, 12),
    (250, 235, 230),
    (250, 220, 200),
    (245, 200, 155),
    (241, 170, 105),
    (239, 140, 52),
    (229, 130, 49),
    (204, 116, 42),
    (186, 101, 36),
    (156, 80, 28),
    (115, 55, 18),
    (246, 245, 240),
    (235, 230, 220),
    (225, 205, 200),
    (211, 190, 170),
    (199, 166, 135),
    (185, 151, 130),
    (164, 135, 110),
    (146, 120, 95),
    (121, 95, 80),
    (91, 70, 55),
    (255, 255, 230),
    (255, 250, 205),
    (255, 250, 160),
    (255, 250, 120),
    (255, 250, 83),
    (246, 247, 81),
    (220, 221, 72),
    (194, 196, 63),
    (164, 166, 52),
    (125, 126, 37),
    (241, 251, 230),
    (225, 245, 200),
    (205, 236, 160),
    (180, 236, 115),
    (156, 227, 70),
    (146, 211, 65),
    (129, 196, 59),
    (111, 161, 47),
    (96, 140, 40),
    (65, 101, 26),
    (235, 250, 230),
    (211, 250, 200),
    (175, 250, 160),
    (140, 250, 115),
    (117, 250, 76),
    (112, 241, 73),
    (100, 217, 65),
    (91, 196, 57),
    (73, 161, 45),
    (56, 121, 32),
    (236, 250, 254),
    (212, 250, 245),
    (177, 250, 235),
    (141, 250, 235),
    (116, 250, 230),
    (112, 240, 215),
    (101, 216, 190),
    (90, 195, 165),
    (73, 161, 140),
    (56, 125, 100),
    (246, 255, 255),
    (211, 250, 250),
    (175, 250, 250),
    (141, 250, 250),
    (117, 250, 250),
    (112, 239, 245),
    (101, 220, 220),
    (90, 195, 195),
    (73, 160, 165),
    (56, 125, 125),
    (231, 245, 250),
    (205, 230, 250),
    (161, 209, 250),
    (122, 194, 250),
    (79, 168, 245),
    (75, 163, 240),
    (64, 139, 215),
    (55, 124, 190),
    (42, 98, 160),
    (32, 74, 120),
    (230, 230, 250),
    (196, 199, 250),
    (152, 148, 245),
    (93, 96, 245),
    (17, 1, 245),
    (17, 1, 235),
    (13, 1, 210),
    (11, 0, 190),
    (8, 0, 160),
    (4, 0, 120),
    (241, 229, 250),
    (225, 199, 250),
    (205, 153, 245),
    (187, 101, 245),
    (161, 32, 245),
    (152, 29, 235),
    (131, 24, 215),
    (116, 20, 190),
    (91, 15, 160),
    (71, 8, 120),
    (251, 230, 250),
    (246, 199, 250),
    (241, 153, 245),
    (235, 107, 245),
    (230, 51, 245),
    (225, 49, 235),
    (200, 42, 215),
    (182, 38, 190),
    (151, 29, 160),
    (115, 20, 120),
    (251, 230, 245),
    (246, 199, 225),
    (241, 154, 210),
    (235, 103, 195),
    (229, 51, 170),
    (225, 49, 160),
    (204, 43, 140),
    (181, 37, 120),
    (151, 29, 100),
    (85, 12, 90),
];

pub fn colors_count() -> i32 {
    COLORS.len() as i32
}

pub fn get_color(idx: i32) -> LogoColor {
    let res = COLORS[idx as usize];
    LogoColor{r: res.0, g: res.1, b: res.2}
}