Created
June 2, 2018 10:56
-
-
Save badboy/8eb6fa6ab65166b410b2d52245131c1a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static mut module_instance: *mut ArcModule = 0 as *mut ArcModule; | |
mod color; | |
mod arc_module; | |
mod utils; | |
use color::Rgb; | |
use arc_module::ArcModule; | |
pub use utils::init; | |
pub use utils::getAnimationBuffer; | |
// Original font.c at https://opengameart.org/sites/default/files/font_0.zip | |
// Copyright (C) Lisa Milne 2014 <lisa@ltmnet.com> | |
// License: GPL <http://www.gnu.org/licenses/> | |
pub const FONT : [u64; 128] = [ | |
0x7E7E7E7E7E7E0000, /* NUL */ 0x7E7E7E7E7E7E0000, /* SOH */ 0x7E7E7E7E7E7E0000, /* STX */ 0x7E7E7E7E7E7E0000, /* ETX */ 0x7E7E7E7E7E7E0000, /* EOT */ 0x7E7E7E7E7E7E0000, /* ENQ */ 0x7E7E7E7E7E7E0000, /* ACK */ 0x7E7E7E7E7E7E0000, /* BEL */ 0x7E7E7E7E7E7E0000, /* BS */ 0x0, /* TAB */ 0x7E7E7E7E7E7E0000, /* LF */ 0x7E7E7E7E7E7E0000, /* VT */ 0x7E7E7E7E7E7E0000, /* FF */ 0x7E7E7E7E7E7E0000, /* CR */ 0x7E7E7E7E7E7E0000, /* SO */ 0x7E7E7E7E7E7E0000, /* SI */ 0x7E7E7E7E7E7E0000, /* DLE */ 0x7E7E7E7E7E7E0000, /* DC1 */ 0x7E7E7E7E7E7E0000, /* DC2 */ 0x7E7E7E7E7E7E0000, /* DC3 */ 0x7E7E7E7E7E7E0000, /* DC4 */ 0x7E7E7E7E7E7E0000, /* NAK */ 0x7E7E7E7E7E7E0000, /* SYN */ 0x7E7E7E7E7E7E0000, /* ETB */ 0x7E7E7E7E7E7E0000, /* CAN */ 0x7E7E7E7E7E7E0000, /* EM */ 0x7E7E7E7E7E7E0000, /* SUB */ 0x7E7E7E7E7E7E0000, /* ESC */ 0x7E7E7E7E7E7E0000, /* FS */ 0x7E7E7E7E7E7E0000, /* GS */ 0x7E7E7E7E7E7E0000, /* RS */ 0x7E7E7E7E7E7E0000, /* US */ 0x0, /* (space) */ 0x808080800080000, /* ! */ 0x2828000000000000, /* " */ 0x287C287C280000, /* # */ 0x81E281C0A3C0800, /* $ */ 0x6094681629060000, /* % */ 0x1C20201926190000, /* & */ 0x808000000000000, /* ' */ 0x810202010080000, /* ( */ 0x1008040408100000, /* ) */ 0x2A1C3E1C2A000000, /* * */ 0x8083E08080000, /* + */ 0x81000, /* , */ 0x3C00000000, /* - */ 0x80000, /* . */ 0x204081020400000, /* / */ 0x1824424224180000, /* 0 */ 0x8180808081C0000, /* 1 */ 0x3C420418207E0000, /* 2 */ 0x3C420418423C0000, /* 3 */ 0x81828487C080000, /* 4 */ 0x7E407C02423C0000, /* 5 */ 0x3C407C42423C0000, /* 6 */ 0x7E04081020400000, /* 7 */ 0x3C423C42423C0000, /* 8 */ 0x3C42423E023C0000, /* 9 */ 0x80000080000, /* : */ 0x80000081000, /* ; */ 0x6186018060000, /* < */ 0x7E007E000000, /* = */ 0x60180618600000, /* > */ 0x3844041800100000, /* ? */ | |
0x3C449C945C201C, /* @ */ 0x1818243C42420000, /* A */ 0x7844784444780000, /* B */ 0x3844808044380000, /* C */ 0x7844444444780000, /* D */ 0x7C407840407C0000, /* E */ 0x7C40784040400000, /* F */ 0x3844809C44380000, /* G */ 0x42427E4242420000, /* H */ 0x3E080808083E0000, /* I */ 0x1C04040444380000, /* J */ 0x4448507048440000, /* K */ 0x40404040407E0000, /* L */ 0x4163554941410000, /* M */ 0x4262524A46420000, /* N */ 0x1C222222221C0000, /* O */ 0x7844784040400000, /* P */ 0x1C222222221C0200, /* Q */ 0x7844785048440000, /* R */ 0x1C22100C221C0000, /* S */ 0x7F08080808080000, /* T */ 0x42424242423C0000, /* U */ 0x8142422424180000, /* V */ 0x4141495563410000, /* W */ 0x4224181824420000, /* X */ 0x4122140808080000, /* Y */ 0x7E040810207E0000, /* Z */ 0x3820202020380000, /* [ */ 0x4020100804020000, /* \ */ 0x3808080808380000, /* ] */ 0x1028000000000000, /* ^ */ 0x7E0000, /* _ */ 0x1008000000000000, /* ` */ 0x3C023E463A0000, /* a */ 0x40407C42625C0000, /* b */ 0x1C20201C0000, /* c */ 0x2023E42463A0000, /* d */ 0x3C427E403C0000, /* e */ 0x18103810100000, /* f */ 0x344C44340438, /* g */ 0x2020382424240000, /* h */ 0x800080808080000, /* i */ 0x800180808080870, /* j */ 0x20202428302C0000, /* k */ 0x1010101010180000, /* l */ 0x665A42420000, /* m */ 0x2E3222220000, /* n */ 0x3C42423C0000, /* o */ 0x5C62427C4040, /* p */ 0x3A46423E0202, /* q */ 0x2C3220200000, /* r */ 0x1C201804380000, /* s */ 0x103C1010180000, /* t */ 0x2222261A0000, /* u */ 0x424224180000, /* v */ 0x81815A660000, /* w */ 0x422418660000, /* x */ 0x422214081060, /* y */ 0x3C08103C0000, /* z */ 0x1C103030101C0000, /* { */ 0x808080808080800, /* | */ 0x38080C0C08380000, /* } */ 0x324C000000, /* ~ */ 0x7E7E7E7E7E7E0000 /* DEL */ | |
]; | |
fn cols() -> usize { | |
ArcModule::get_instance().cols | |
} | |
fn rows() -> usize { | |
ArcModule::get_instance().rows | |
} | |
fn pos(x: usize, y: usize) -> usize { | |
//y * cols() + x | |
x * cols() + y | |
} | |
fn add_char_trimmed(posx: isize, posy: usize, c: u8, buf: &mut [Rgb]) { | |
let mut char_data = FONT[c as usize]; | |
for y in (posy..(posy+8)) { | |
for x in (posx..(posx+8)).rev() { | |
let xu = x as usize; | |
let bit = char_data & 0x1; | |
char_data = char_data >> 1; | |
// trim it outside of the viewport | |
if x < 0 || xu >= cols() || y >= rows() { continue; } | |
if bit == 1 { | |
buf[pos(xu, y)] = Rgb::new(0, 0, 0); | |
} else { | |
buf[pos(xu, y)] = Rgb::new(255, 255, 255); | |
} | |
} | |
} | |
} | |
fn add_char_flipped(posx: isize, posy: usize, c: u8, buf: &mut [Rgb]) { | |
let mut char_data = FONT[c as usize]; | |
for y in (posy..(posy+8)).rev() { | |
for x in (posx..(posx+8)) { | |
let xu = x as usize; | |
let bit = char_data & 0x1; | |
char_data = char_data >> 1; | |
// trim it outside of the viewport | |
if x < 0 || xu >= cols() || y >= rows() { continue; } | |
if bit == 1 { | |
buf[pos(xu, y)] = Rgb::new(0, 0, 0); | |
} else { | |
buf[pos(xu, y)] = Rgb::new(255, 255, 255); | |
} | |
} | |
} | |
} | |
fn add_string_trimmed(mut posx: isize, mut posy: usize, msg: &str, buf: &mut [Rgb]) { | |
if !msg.is_ascii() { return; } // no non-ascii support | |
for c in msg.bytes() { | |
add_char_trimmed(posx, posy, c, buf); | |
posx += 8; | |
if posx > 0 && posx as usize >= cols() { return; } | |
} | |
} | |
fn add_string_flipped(mut posx: isize, mut posy: usize, msg: &str, buf: &mut [Rgb]) { | |
if !msg.is_ascii() { return; } // no non-ascii support | |
for c in msg.bytes().rev() { | |
add_char_flipped(posx, posy, c, buf); | |
posx += 8; | |
if posx > 0 && posx as usize >= cols() { return; } | |
} | |
} | |
fn clear(buf: &mut [Rgb], color: Rgb) { | |
for c in buf { | |
*c = color; | |
} | |
} | |
#[no_mangle] | |
pub extern fn apply() { | |
let mut module = ArcModule::get_instance(); | |
let cols = module.rows; | |
let rows = module.cols; | |
let ref mut animation = module.get_animation().as_mut_slice(); | |
clear(animation, Rgb::new(255, 255, 255)); | |
let mut offset = 0; | |
let text = "CSSConfEU JSConfEU"; | |
let tlen = text.len() as isize; | |
for (index, frame) in animation.chunks_mut(rows * cols).enumerate() { | |
add_string_trimmed(cols as isize - offset, 0, text, frame); | |
add_string_flipped(-(8*tlen) + offset, rows-8, text, frame); | |
if index%2 == 0 { | |
offset += 1; | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static mut module_instance: *mut ArcModule = 0 as *mut ArcModule; | |
mod color; | |
mod arc_module; | |
mod utils; | |
use color::Rgb; | |
use arc_module::ArcModule; | |
pub use utils::init; | |
pub use utils::getAnimationBuffer; | |
// Original font.c at https://opengameart.org/sites/default/files/font_0.zip | |
// Copyright (C) Lisa Milne 2014 <lisa@ltmnet.com> | |
// License: GPL <http://www.gnu.org/licenses/> | |
pub const FONT : [u64; 128] = [ | |
0x7E7E7E7E7E7E0000, /* NUL */ 0x7E7E7E7E7E7E0000, /* SOH */ 0x7E7E7E7E7E7E0000, /* STX */ 0x7E7E7E7E7E7E0000, /* ETX */ 0x7E7E7E7E7E7E0000, /* EOT */ 0x7E7E7E7E7E7E0000, /* ENQ */ 0x7E7E7E7E7E7E0000, /* ACK */ 0x7E7E7E7E7E7E0000, /* BEL */ 0x7E7E7E7E7E7E0000, /* BS */ 0x0, /* TAB */ 0x7E7E7E7E7E7E0000, /* LF */ 0x7E7E7E7E7E7E0000, /* VT */ 0x7E7E7E7E7E7E0000, /* FF */ 0x7E7E7E7E7E7E0000, /* CR */ 0x7E7E7E7E7E7E0000, /* SO */ 0x7E7E7E7E7E7E0000, /* SI */ 0x7E7E7E7E7E7E0000, /* DLE */ 0x7E7E7E7E7E7E0000, /* DC1 */ 0x7E7E7E7E7E7E0000, /* DC2 */ 0x7E7E7E7E7E7E0000, /* DC3 */ 0x7E7E7E7E7E7E0000, /* DC4 */ 0x7E7E7E7E7E7E0000, /* NAK */ 0x7E7E7E7E7E7E0000, /* SYN */ 0x7E7E7E7E7E7E0000, /* ETB */ 0x7E7E7E7E7E7E0000, /* CAN */ 0x7E7E7E7E7E7E0000, /* EM */ 0x7E7E7E7E7E7E0000, /* SUB */ 0x7E7E7E7E7E7E0000, /* ESC */ 0x7E7E7E7E7E7E0000, /* FS */ 0x7E7E7E7E7E7E0000, /* GS */ 0x7E7E7E7E7E7E0000, /* RS */ 0x7E7E7E7E7E7E0000, /* US */ 0x0, /* (space) */ 0x808080800080000, /* ! */ 0x2828000000000000, /* " */ 0x287C287C280000, /* # */ 0x81E281C0A3C0800, /* $ */ 0x6094681629060000, /* % */ 0x1C20201926190000, /* & */ 0x808000000000000, /* ' */ 0x810202010080000, /* ( */ 0x1008040408100000, /* ) */ 0x2A1C3E1C2A000000, /* * */ 0x8083E08080000, /* + */ 0x81000, /* , */ 0x3C00000000, /* - */ 0x80000, /* . */ 0x204081020400000, /* / */ 0x1824424224180000, /* 0 */ 0x8180808081C0000, /* 1 */ 0x3C420418207E0000, /* 2 */ 0x3C420418423C0000, /* 3 */ 0x81828487C080000, /* 4 */ 0x7E407C02423C0000, /* 5 */ 0x3C407C42423C0000, /* 6 */ 0x7E04081020400000, /* 7 */ 0x3C423C42423C0000, /* 8 */ 0x3C42423E023C0000, /* 9 */ 0x80000080000, /* : */ 0x80000081000, /* ; */ 0x6186018060000, /* < */ 0x7E007E000000, /* = */ 0x60180618600000, /* > */ 0x3844041800100000, /* ? */ | |
0x3C449C945C201C, /* @ */ 0x1818243C42420000, /* A */ 0x7844784444780000, /* B */ 0x3844808044380000, /* C */ 0x7844444444780000, /* D */ 0x7C407840407C0000, /* E */ 0x7C40784040400000, /* F */ 0x3844809C44380000, /* G */ 0x42427E4242420000, /* H */ 0x3E080808083E0000, /* I */ 0x1C04040444380000, /* J */ 0x4448507048440000, /* K */ 0x40404040407E0000, /* L */ 0x4163554941410000, /* M */ 0x4262524A46420000, /* N */ 0x1C222222221C0000, /* O */ 0x7844784040400000, /* P */ 0x1C222222221C0200, /* Q */ 0x7844785048440000, /* R */ 0x1C22100C221C0000, /* S */ 0x7F08080808080000, /* T */ 0x42424242423C0000, /* U */ 0x8142422424180000, /* V */ 0x4141495563410000, /* W */ 0x4224181824420000, /* X */ 0x4122140808080000, /* Y */ 0x7E040810207E0000, /* Z */ 0x3820202020380000, /* [ */ 0x4020100804020000, /* \ */ 0x3808080808380000, /* ] */ 0x1028000000000000, /* ^ */ 0x7E0000, /* _ */ 0x1008000000000000, /* ` */ 0x3C023E463A0000, /* a */ 0x40407C42625C0000, /* b */ 0x1C20201C0000, /* c */ 0x2023E42463A0000, /* d */ 0x3C427E403C0000, /* e */ 0x18103810100000, /* f */ 0x344C44340438, /* g */ 0x2020382424240000, /* h */ 0x800080808080000, /* i */ 0x800180808080870, /* j */ 0x20202428302C0000, /* k */ 0x1010101010180000, /* l */ 0x665A42420000, /* m */ 0x2E3222220000, /* n */ 0x3C42423C0000, /* o */ 0x5C62427C4040, /* p */ 0x3A46423E0202, /* q */ 0x2C3220200000, /* r */ 0x1C201804380000, /* s */ 0x103C1010180000, /* t */ 0x2222261A0000, /* u */ 0x424224180000, /* v */ 0x81815A660000, /* w */ 0x422418660000, /* x */ 0x422214081060, /* y */ 0x3C08103C0000, /* z */ 0x1C103030101C0000, /* { */ 0x808080808080800, /* | */ 0x38080C0C08380000, /* } */ 0x324C000000, /* ~ */ 0x7E7E7E7E7E7E0000 /* DEL */ | |
]; | |
fn cols() -> usize { | |
ArcModule::get_instance().cols | |
} | |
fn rows() -> usize { | |
ArcModule::get_instance().rows | |
} | |
fn pos(x: usize, y: usize) -> usize { | |
//y * cols() + x | |
x * cols() + y | |
} | |
fn add_char_trimmed(posx: isize, posy: usize, c: u8, buf: &mut [Rgb]) { | |
let mut char_data = FONT[c as usize]; | |
for y in (posy..(posy+8)) { | |
for x in (posx..(posx+8)).rev() { | |
let xu = x as usize; | |
let bit = char_data & 0x1; | |
char_data = char_data >> 1; | |
// trim it outside of the viewport | |
if x < 0 || xu >= cols() || y >= rows() { continue; } | |
if bit == 1 { | |
buf[pos(xu, y)] = Rgb::new(0, 0, 0); | |
} else { | |
buf[pos(xu, y)] = Rgb::new(255, 255, 255); | |
} | |
} | |
} | |
} | |
fn add_char_flipped(posx: isize, posy: usize, c: u8, buf: &mut [Rgb]) { | |
let mut char_data = FONT[c as usize]; | |
for y in (posy..(posy+8)).rev() { | |
for x in (posx..(posx+8)) { | |
let xu = x as usize; | |
let bit = char_data & 0x1; | |
char_data = char_data >> 1; | |
// trim it outside of the viewport | |
if x < 0 || xu >= cols() || y >= rows() { continue; } | |
if bit == 1 { | |
buf[pos(xu, y)] = Rgb::new(0, 0, 0); | |
} else { | |
buf[pos(xu, y)] = Rgb::new(255, 255, 255); | |
} | |
} | |
} | |
} | |
fn add_string_trimmed(mut posx: isize, mut posy: usize, msg: &str, buf: &mut [Rgb]) { | |
if !msg.is_ascii() { return; } // no non-ascii support | |
for c in msg.bytes() { | |
add_char_trimmed(posx, posy, c, buf); | |
posx += 8; | |
if posx > 0 && posx as usize >= cols() { return; } | |
} | |
} | |
fn add_string_flipped(mut posx: isize, mut posy: usize, msg: &str, buf: &mut [Rgb]) { | |
if !msg.is_ascii() { return; } // no non-ascii support | |
for c in msg.bytes().rev() { | |
add_char_flipped(posx, posy, c, buf); | |
posx += 8; | |
if posx > 0 && posx as usize >= cols() { return; } | |
} | |
} | |
fn clear(buf: &mut [Rgb], color: Rgb) { | |
for c in buf { | |
*c = color; | |
} | |
} | |
#[no_mangle] | |
pub extern fn apply() { | |
let mut module = ArcModule::get_instance(); | |
let cols = module.rows; | |
let rows = module.cols; | |
let ref mut animation = module.get_animation().as_mut_slice(); | |
clear(animation, Rgb::new(255, 255, 255)); | |
let mut offset = 0; | |
for (index, frame) in animation.chunks_mut(rows * cols).enumerate() { | |
add_string_trimmed(cols as isize - offset, 0, "moz://a", frame); | |
add_string_flipped(-(8*8) + offset, rows-8, "JSConfEU", frame); | |
if index%2 == 0 { | |
offset += 1; | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static mut module_instance: *mut ArcModule = 0 as *mut ArcModule; | |
// `mod` is how Rust pulls in code from other files. | |
// They contain some boilerplate and helper code to | |
// make it a bit easier for you to get up and running. | |
// You can take a look at them (they're in the sidebar)! | |
mod arc_module; | |
mod color; | |
mod utils; | |
use arc_module::ArcModule; | |
use color::Rgb; | |
pub use utils::getAnimationBuffer; | |
pub use utils::init; | |
fn cols() -> usize { | |
ArcModule::get_instance().cols | |
} | |
fn rows() -> usize { | |
ArcModule::get_instance().rows | |
} | |
fn pos(x: usize, y: usize) -> usize { | |
x * cols() + y | |
} | |
fn clear(buf: &mut [Rgb], color: Rgb) { | |
for c in buf { | |
*c = color; | |
} | |
} | |
#[no_mangle] | |
pub extern fn apply() { | |
let mut module = ArcModule::get_instance(); | |
let rows = module.rows; | |
let cols = module.cols; | |
let ref mut animation = module.get_animation().as_mut_slice(); | |
clear(animation, Rgb::new(255, 255, 255)); | |
let x = 2; | |
let y = 5; | |
let square = (x, y, 30, 30); | |
let heart = (x+2, y+12, 17, 17); | |
let mut heart_color = Rgb::new(255, 255, 255); | |
for (index, frame) in animation.chunks_mut(rows * cols).enumerate() { | |
for y in (square.1)..(square.1+square.3) { | |
for x in (square.0)..(square.0+square.2) { | |
frame[pos(x,y)] = Rgb::new(0xe1, 0x00, 0x79); | |
} | |
} | |
// Dots around square | |
frame[pos(square.0, square.1)] = Rgb::new(255, 255, 255); | |
frame[pos(square.0, square.1+square.3-1)] = Rgb::new(255, 255, 255); | |
frame[pos(square.0+square.2-1, square.1)] = Rgb::new(255, 255, 255); | |
frame[pos(square.0+square.2-1, square.1+square.3-1)] = Rgb::new(255, 255, 255); | |
// Heart | |
for i in 0..9 { | |
frame[pos(heart.0+(heart.2/2)-i, heart.1+heart.3-(i+1))] = heart_color; | |
frame[pos(heart.0+(heart.2/2)+i, heart.1+heart.3-(i+1))] = heart_color; | |
for x in (heart.0+(heart.2/2)-i)..(heart.0+(heart.2/2)+i) { | |
frame[pos(x, heart.1+heart.3-(i+1))] = heart_color; | |
} | |
} | |
for i in 1..4 { | |
frame[pos(heart.0+(heart.2/2)-8, heart.1+heart.3-9-i)] = heart_color; | |
for x in (heart.0+(heart.2/2)-8)..(heart.0+(heart.2/2)) { | |
frame[pos(x, heart.1+heart.3-9-i)] = heart_color; | |
} | |
for x in (heart.0+(heart.2/2)+1)..(heart.0+(heart.2/2)+8) { | |
frame[pos(x, heart.1+heart.3-9-i)] = heart_color; | |
} | |
frame[pos(heart.0+(heart.2/2)+8, heart.1+heart.3-9-i)] = heart_color; | |
} | |
for i in 1..4 { | |
frame[pos(heart.0+(heart.2/2)-(8-i), heart.1+heart.3-12-i)] = heart_color; | |
frame[pos(heart.0+(heart.2/2)-(8-i-1), heart.1+heart.3-12-i)] = heart_color; | |
frame[pos(heart.0+(heart.2/2)+(8-i), heart.1+heart.3-12-i)] = heart_color; | |
frame[pos(heart.0+(heart.2/2)+(8-i-1), heart.1+heart.3-12-i)] = heart_color; | |
} | |
frame[pos(heart.0+(heart.2/2)-4, heart.1+heart.3-15)] = heart_color; | |
frame[pos(heart.0+(heart.2/2)+4, heart.1+heart.3-15)] = heart_color; | |
for i in 1..5 { | |
frame[pos(heart.0+(heart.2/2)-(4-i), heart.1+heart.3-15+i)] = heart_color; | |
frame[pos(heart.0+(heart.2/2)-(4-i+1), heart.1+heart.3-15+i)] = heart_color; | |
frame[pos(heart.0+(heart.2/2)+(4-i), heart.1+heart.3-15+i)] = heart_color; | |
frame[pos(heart.0+(heart.2/2)+(4-i+1), heart.1+heart.3-15+i)] = heart_color; | |
} | |
frame[pos(heart.0+(heart.2/2)-4, heart.1+heart.3-13)] = heart_color; | |
frame[pos(heart.0+(heart.2/2)-5, heart.1+heart.3-13)] = heart_color; | |
frame[pos(heart.0+(heart.2/2)+4, heart.1+heart.3-13)] = heart_color; | |
frame[pos(heart.0+(heart.2/2)+5, heart.1+heart.3-13)] = heart_color; | |
frame[pos(heart.0+(heart.2/2), heart.1+heart.3-15+5)] = heart_color; | |
match index%40 { | |
0 => heart_color = Rgb::new(255, 255, 255), | |
4 => heart_color = Rgb::new(0xe6, 0xd3, 0xf6), | |
8 => heart_color = Rgb::new(0xe2, 0xa2, 0xdd), | |
12 => heart_color = Rgb::new(0xe4, 0x69, 0xb3), | |
16 => heart_color = Rgb::new(0xe1, 0x00, 0x79), | |
20 => heart_color = Rgb::new(0xe1, 0x00, 0x79), | |
24 => heart_color = Rgb::new(0xe4, 0x69, 0xb3), | |
28 => heart_color = Rgb::new(0xe2, 0xa2, 0xdd), | |
32 => heart_color = Rgb::new(0xe6, 0xd3, 0xf6), | |
36 => heart_color = Rgb::new(255, 255, 255), | |
_ => {}, | |
} | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment