Updating OLED Layout

- test drove a graphics heavy layout but it was too much
- Going back to a more minimalist layout
This commit is contained in:
Victor 2024-06-20 08:04:20 -05:00
parent 5227e86273
commit 409bf5b702
Failed to generate hash of commit
4 changed files with 329 additions and 66 deletions

View file

@ -12,4 +12,9 @@
//Set common configuration for all keyboards
#define OLED_TIMEOUT 60000 //1 min
#define OLED_FONT_H "./lib/font.c"
#if defined(OLED_DISPLAY_128X64)
# define OLED_FONT_H "./lib/font.c"
#else
# define OLED_FONT_H "./lib/font_narrow.c"
#endif //OLED_DISPLAY_128X64

View file

@ -6,38 +6,53 @@
// Shows the currently enabled Layer name
void render_layer_state(void) {
void render_default_layer_state(void) {
switch (get_highest_layer(layer_state)) {
case _NAVIGATION:
oled_write_P(PSTR(OLED_RENDER_LAYER_2), false);
break;
case _NUMBER:
oled_write_P(PSTR(OLED_RENDER_LAYER_3), false);
break;
case _SYMBOL:
oled_write_P(PSTR(OLED_RENDER_LAYER_4), false);
break;
case _CONFIG:
oled_write_P(PSTR(OLED_RENDER_LAYER_5), false);
switch (get_highest_layer(default_layer_state)) {
case _DEFAULT_LAYER_2:
oled_write_P(PSTR(OLED_RENDER_DEFAULT_LAYER2), false);
break;
case _DEFAULT_LAYER_3:
oled_write_P(PSTR(OLED_RENDER_DEFAULT_LAYER3), false);
break;
default:
switch (get_highest_layer(default_layer_state)) {
case _DEFAULT_LAYER_2:
oled_write_P(PSTR(OLED_RENDER_DEFAULT_LAYER2), false);
break;
case _DEFAULT_LAYER_3:
oled_write_P(PSTR(OLED_RENDER_DEFAULT_LAYER3), false);
break;
default:
oled_write_P(PSTR(OLED_RENDER_DEFAULT_LAYER1), false);
break;
}
oled_write_P(PSTR(OLED_RENDER_DEFAULT_LAYER1), false);
break;
}
}
// Shows the currently enabled Layer name
void render_layer_state(void) {
oled_write_P(PSTR(OLED_RENDER_LAYER_2), get_highest_layer(layer_state) == _NAVIGATION);
oled_write_P(PSTR(OLED_RENDER_LAYER_3), get_highest_layer(layer_state) == _NUMBER);
oled_write_P(PSTR(OLED_RENDER_LAYER_4), get_highest_layer(layer_state) == _SYMBOL);
oled_write_P(PSTR(OLED_RENDER_LAYER_5), get_highest_layer(layer_state) == _CONFIG);
/*
switch (get_highest_layer(layer_state)) {
case _NAVIGATION:
oled_write_P(PSTR(OLED_RENDER_LAYER_2), get_highest_layer(layer_state) == _NAVIGATION);
break;
case _NUMBER:
oled_write_P(PSTR(OLED_RENDER_LAYER_3), get_highest_layer(layer_state) == _NUMBER);
break;
case _SYMBOL:
oled_write_P(PSTR(OLED_RENDER_LAYER_4), get_highest_layer(layer_state) == _SYMBOL);
break;
case _CONFIG:
oled_write_P(PSTR(OLED_RENDER_LAYER_5), get_highest_layer(layer_state) == _CONFIG);
break;
default:
oled_write_P(PSTR(OLED_RENDER_LAYER_1), false);
break;
}
*/
}
// Graphic to show which layer on the stack is enabled
void render_layer_state_graphic(void) {
@ -64,15 +79,17 @@ void render_layer_state_graphic(void) {
// Shows the Host LED State (Num lock, caps lock , scroll lock)
void render_keylock_status(bool vertical) {
/*
if (vertical) {
oled_write_ln_P(PSTR(OLED_RENDER_KEYLOCK_NAME), false);
oled_write_P(PSTR(" "), false);
}
*/
host_keyboard_led_state().num_lock ? oled_write_P(num_on, false ) : oled_write_P(num_off, false );
host_keyboard_led_state().caps_lock || is_caps_word_on() ? oled_write_P(caps_on, false ) : oled_write_P(caps_off, false );
host_keyboard_led_state().scroll_lock ? oled_write_P(scroll_on, false ) : oled_write_P(scroll_off, false );
}
// Indicates which modifies are enabled
@ -81,20 +98,25 @@ void render_mod_status(bool vertical) {
uint8_t current_mod = get_mods();
uint8_t current_osm = get_oneshot_mods();
if (vertical) {
oled_write_ln_P(PSTR(OLED_RENDER_MODS_NAME), false);
oled_write_P(PSTR(" "), false);
}
oled_set_cursor(1,1);
(current_mod | current_osm) & MOD_MASK_SHIFT ? oled_write_P(shift_on_upper, false) : oled_write_P(shift_off_upper, false );
oled_set_cursor(1,2);
(current_mod | current_osm) & MOD_MASK_SHIFT ? oled_write_P(shift_on_lower, false) : oled_write_P(shift_off_lower, false );
(current_mod | current_osm) & MOD_MASK_SHIFT ? oled_write_P(shift_on, false) : oled_write_P(shift_off, false );
(current_mod | current_osm) & MOD_MASK_CTRL ? oled_write_P(ctrl_on, false ) : oled_write_P(ctrl_off, false );
oled_set_cursor(1,4);
(current_mod | current_osm) & MOD_MASK_CTRL ? oled_write_P(ctrl_on_upper, false ) : oled_write_P(ctrl_off_upper, false );
oled_set_cursor(1,5);
(current_mod | current_osm) & MOD_MASK_CTRL ? oled_write_P(ctrl_on_lower, false ) : oled_write_P(ctrl_off_lower, false );
if (vertical) {
oled_write_P(PSTR(" "), false);
}
oled_set_cursor(1,7);
(current_mod | current_osm) & MOD_MASK_ALT ? oled_write_P(alt_on_upper, false ) : oled_write_P(alt_off_upper, false );
oled_set_cursor(1,8);
(current_mod | current_osm) & MOD_MASK_ALT ? oled_write_P(alt_on_lower, false ) : oled_write_P(alt_off_lower, false );
(current_mod | current_osm) & MOD_MASK_ALT ? oled_write_P(alt_on, false ): oled_write_P(alt_off, false );
(current_mod | current_osm) & MOD_MASK_GUI ? oled_write_P(gui_on, false ): oled_write_P(gui_off, false );
oled_set_cursor(1,10);
(current_mod | current_osm) & MOD_MASK_GUI ? oled_write_P(gui_on_upper, false ) : oled_write_P(gui_off_upper, false );
oled_set_cursor(1,11);
(current_mod | current_osm) & MOD_MASK_GUI ? oled_write_P(gui_on_lower, false ) : oled_write_P(gui_off_lower, false );
}
@ -179,19 +201,18 @@ bool oled_task_user(void) {
if (is_keyboard_master()) {
oled_set_cursor(0,0);
render_keylock_status(true);
render_default_layer_state();
render_layer_state();
//render_keylock_status(true);
/*
oled_set_cursor(0,3);
render_feature_status(true);
*/
#if defined(WPM_ENABLE)
oled_set_cursor(0,7);
oled_write_P(PSTR(OLED_RENDER_WPM_NAME), false);
oled_set_cursor(1,8);
oled_write_P(get_u8_str(get_current_wpm(), ' '), false);
render_luna();
#endif //WPM_ENABLE
@ -199,16 +220,11 @@ bool oled_task_user(void) {
} else {
oled_set_cursor(0,0);
render_layer_state();
oled_set_cursor(0,2);
render_layer_state_graphic();
oled_set_cursor(0,7);
render_mod_status(true);
oled_set_cursor(0,13);
oled_write_P(qmk_logo_small, false);
oled_set_cursor(1,14);
render_keylock_status(true);
}
#endif

View file

@ -22,6 +22,7 @@
# define OLED_RENDER_DEFAULT_LAYER2 "Clmak"
# define OLED_RENDER_DEFAULT_LAYER3 "Game "
# define OLED_RENDER_LAYER_1 " "
# define OLED_RENDER_LAYER_2 " Nav "
# define OLED_RENDER_LAYER_3 " Num "
# define OLED_RENDER_LAYER_4 " Sym "
@ -45,26 +46,34 @@ void render_mod_status(bool vertical);
void render_feature_status(bool vertical);
static const char PROGMEM scroll_off[] = {0x8D, 0};
static const char PROGMEM scroll_on[] = {0x8E, 0};
static const char PROGMEM scroll_off[] = {0xC0, 0};
static const char PROGMEM scroll_on[] = {0xC1, 0};
static const char PROGMEM num_off[] = {0xAD, 0};
static const char PROGMEM num_on[] = {0xAE, 0};
static const char PROGMEM num_off[] = {0xC2, 0};
static const char PROGMEM num_on[] = {0xC3, 0};
static const char PROGMEM caps_off[] = {0xCD, 0};
static const char PROGMEM caps_on[] = {0xCE, 0};
static const char PROGMEM caps_off[] = {0xC4, 0};
static const char PROGMEM caps_on[] = {0xC5, 0};
static const char PROGMEM shift_off[] = {0x85, 0x86, 0};
static const char PROGMEM shift_on[] = {0x87, 0x88, 0};
static const char PROGMEM shift_off_upper[] = {0x80, 0x81, 0x82, 0};
static const char PROGMEM shift_off_lower[] = {0xA0, 0xA1, 0xA2, 0};
static const char PROGMEM shift_on_upper[] = {0x83, 0x84, 0x85, 0};
static const char PROGMEM shift_on_lower[] = {0xA3, 0xA4, 0xA5, 0};
static const char PROGMEM ctrl_off[] = {0xA9, 0xAA, 0};
static const char PROGMEM ctrl_on[] = {0xAB, 0xAC, 0};
static const char PROGMEM ctrl_off_upper[] = {0x86, 0x87, 0x88, 0};
static const char PROGMEM ctrl_off_lower[] = {0xA6, 0xA7, 0xA8, 0};
static const char PROGMEM ctrl_on_upper[] = {0x89, 0x8A, 0x8B, 0};
static const char PROGMEM ctrl_on_lower[] = {0xA9, 0xAA, 0xAB, 0};
static const char PROGMEM alt_off[] = {0xA5, 0xA6, 0};
static const char PROGMEM alt_on[] = {0xA7, 0xA8, 0};
static const char PROGMEM alt_off_upper[] = {0x8C, 0x8D, 0x8E, 0};
static const char PROGMEM alt_off_lower[] = {0xAC, 0xAD, 0xAE, 0};
static const char PROGMEM alt_on_upper[] = {0x8F, 0x90, 0x91, 0};
static const char PROGMEM alt_on_lower[] = {0xAF, 0xB0, 0xB1, 0};
static const char PROGMEM gui_off[] = {0x89, 0x8A, 0};
static const char PROGMEM gui_on[] = {0x8B, 0x8C, 0};
static const char PROGMEM gui_off_upper[] = {0x92, 0x93, 0x94, 0};
static const char PROGMEM gui_off_lower[] = {0xB2, 0xB3, 0xB4, 0};
static const char PROGMEM gui_on_upper[] = {0x95, 0x96, 0x97, 0};
static const char PROGMEM gui_on_lower[] = {0xB5, 0xB6, 0xB7, 0};
static const char PROGMEM rgb_off[] = {0xC5, 0xC6, 0};
static const char PROGMEM rgb_on[] = {0xC7, 0xC8, 0};

View file

@ -0,0 +1,233 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#pragma once
#include "progmem.h"
static const unsigned char PROGMEM font[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
0x94, 0xB6, 0xFF, 0xB6, 0x94, 0x00,
0x08, 0x0C, 0x7E, 0x0C, 0x08, 0x00,
0x10, 0x30, 0x7E, 0x30, 0x10, 0x00,
0x08, 0x08, 0x3E, 0x1C, 0x08, 0x00,
0x08, 0x1C, 0x3E, 0x08, 0x08, 0x00,
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
0x14, 0x3E, 0x14, 0x3E, 0x14, 0x00,
0x2E, 0x2A, 0x7F, 0x2A, 0x3A, 0x00,
0x20, 0x12, 0x08, 0x24, 0x02, 0x00,
0x37, 0x49, 0x49, 0x37, 0x50, 0x00,
0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
0x7F, 0x51, 0x49, 0x45, 0x7F, 0x00,
0x08, 0x04, 0x02, 0x7F, 0x00, 0x00,
0x71, 0x49, 0x49, 0x49, 0x4F, 0x00,
0x41, 0x41, 0x49, 0x49, 0x77, 0x00,
0x0F, 0x10, 0x10, 0x10, 0x7F, 0x00,
0x4F, 0x49, 0x49, 0x49, 0x71, 0x00,
0x7E, 0x49, 0x49, 0x49, 0x70, 0x00,
0x01, 0x01, 0x71, 0x09, 0x07, 0x00,
0x77, 0x49, 0x49, 0x49, 0x77, 0x00,
0x07, 0x49, 0x49, 0x49, 0x3F, 0x00,
0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
0x01, 0x01, 0x59, 0x09, 0x0F, 0x00,
0x7F, 0x41, 0x5D, 0x59, 0x4F, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x7F, 0x00,
0x7F, 0x49, 0x49, 0x49, 0x76, 0x00,
0x7F, 0x41, 0x41, 0x41, 0x41, 0x00,
0x7F, 0x41, 0x41, 0x41, 0x7E, 0x00,
0x7F, 0x49, 0x49, 0x49, 0x49, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x09, 0x00,
0x7F, 0x41, 0x41, 0x49, 0x7B, 0x00,
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
0x00, 0x00, 0x7F, 0x00, 0x00, 0x00,
0x70, 0x40, 0x40, 0x40, 0x7F, 0x00,
0x7F, 0x08, 0x08, 0x08, 0x77, 0x00,
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
0x7F, 0x01, 0x1F, 0x01, 0x7F, 0x00,
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x0F, 0x00,
0x7F, 0x41, 0x71, 0x41, 0x7F, 0x00,
0x7F, 0x09, 0x09, 0x19, 0x6F, 0x00,
0x47, 0x49, 0x49, 0x49, 0x79, 0x00,
0x01, 0x01, 0x7F, 0x01, 0x01, 0x00,
0x7F, 0x40, 0x40, 0x40, 0x7F, 0x00,
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
0x7F, 0x40, 0x7F, 0x40, 0x7F, 0x00,
0x77, 0x08, 0x08, 0x08, 0x77, 0x00,
0x4F, 0x48, 0x48, 0x48, 0x7F, 0x00,
0x61, 0x51, 0x49, 0x45, 0x43, 0x00,
0x00, 0x7F, 0x41, 0x41, 0x00, 0x00,
0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
0x00, 0x41, 0x41, 0x7F, 0x00, 0x00,
0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
0x00, 0x00, 0x07, 0x08, 0x00, 0x00,
0x60, 0x54, 0x54, 0x54, 0x7C, 0x00,
0x7F, 0x44, 0x44, 0x44, 0x78, 0x00,
0x7C, 0x44, 0x44, 0x44, 0x44, 0x00,
0x78, 0x44, 0x44, 0x44, 0x7F, 0x00,
0x7C, 0x54, 0x54, 0x54, 0x5C, 0x00,
0x08, 0x7F, 0x09, 0x09, 0x09, 0x00,
0x38, 0xA4, 0xA4, 0xA4, 0xFC, 0x00,
0x7F, 0x04, 0x04, 0x04, 0x78, 0x00,
0x00, 0x00, 0x7D, 0x00, 0x00, 0x00,
0x70, 0x40, 0x40, 0x7D, 0x00, 0x00,
0x7F, 0x08, 0x08, 0x08, 0x76, 0x00,
0x00, 0x00, 0x7F, 0x40, 0x00, 0x00,
0x7C, 0x04, 0x7C, 0x04, 0x7C, 0x00,
0x7C, 0x04, 0x04, 0x04, 0x78, 0x00,
0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00,
0xFC, 0x24, 0x24, 0x24, 0x38, 0x00,
0x38, 0x24, 0x24, 0x24, 0xFC, 0x00,
0x7C, 0x04, 0x04, 0x04, 0x04, 0x00,
0x5C, 0x54, 0x54, 0x54, 0x74, 0x00,
0x04, 0x04, 0x7F, 0x04, 0x04, 0x00,
0x7C, 0x40, 0x40, 0x40, 0x7C, 0x00,
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
0x7C, 0x40, 0x7C, 0x40, 0x7C, 0x00,
0x6C, 0x10, 0x10, 0x10, 0x6C, 0x00,
0xBC, 0xA0, 0xA0, 0xA0, 0xFC, 0x00,
0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
0x00, 0x00, 0x00, 0x80, 0x40, 0x20,
0x10, 0x08, 0x04, 0x04, 0x08, 0x10,
0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0,
0xF0, 0xF8, 0xFC, 0xFC, 0xF8, 0xF0,
0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
0x20, 0x10, 0x08, 0x08, 0x10, 0x20,
0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0xC0,
0xE0, 0xF0, 0xF8, 0xF8, 0xF0, 0xE0,
0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x78, 0x48, 0x48, 0x48, 0x48,
0x90, 0x20, 0x40, 0x80, 0x00, 0x00,
0x78, 0x48, 0x48, 0x48, 0x78, 0x00,
0x00, 0x78, 0x78, 0x78, 0x78, 0x78,
0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00,
0x78, 0x78, 0x78, 0x78, 0x78, 0x00,
0x00, 0x00, 0x7C, 0x44, 0x44, 0x44,
0x44, 0x7C, 0x00, 0x00, 0x7C, 0x44,
0x44, 0x44, 0x44, 0x7C, 0x00, 0x00,
0x00, 0x00, 0x7C, 0x7C, 0x7C, 0x7C,
0x7C, 0x7C, 0x00, 0x00, 0x7C, 0x7C,
0x7C, 0x7C, 0x7C, 0x7C, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0x02, 0x02, 0x3E,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x3E, 0x02, 0x02, 0x03, 0x00, 0x00,
0x00, 0x00, 0x03, 0x03, 0x03, 0x3F,
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0x3F, 0x03, 0x03, 0x03, 0x00, 0x00,
0x00, 0x3C, 0x22, 0x21, 0x20, 0x10,
0x08, 0x04, 0x02, 0x02, 0x04, 0x08,
0x10, 0x20, 0x21, 0x22, 0x3C, 0x00,
0x00, 0x3C, 0x3E, 0x3F, 0x3F, 0x1F,
0x0F, 0x07, 0x03, 0x03, 0x07, 0x0F,
0x1F, 0x3F, 0x3F, 0x3E, 0x3C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x02, 0x04, 0x09, 0x12,
0x24, 0x24, 0x24, 0x24, 0x3C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x03, 0x07, 0x0F, 0x1E,
0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00,
0x00, 0x00, 0x3E, 0x22, 0x22, 0x22,
0x22, 0x3E, 0x00, 0x00, 0x3E, 0x22,
0x22, 0x22, 0x22, 0x3E, 0x00, 0x00,
0x00, 0x00, 0x3E, 0x3E, 0x3E, 0x3E,
0x3E, 0x3E, 0x00, 0x00, 0x3E, 0x3E,
0x3E, 0x3E, 0x3E, 0x3E, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x2E, 0x2A, 0x2A, 0x3A, 0x00,
0x7F, 0x51, 0x55, 0x55, 0x45, 0x7F,
0x00, 0x3E, 0x04, 0x08, 0x3E, 0x00,
0x7F, 0x41, 0x7B, 0x77, 0x41, 0x7F,
0x00, 0x3E, 0x22, 0x22, 0x22, 0x00,
0x7F, 0x41, 0x5D, 0x5D, 0x5D, 0x7F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};