summaryrefslogtreecommitdiffstats
path: root/keyboards/sofle/keymaps/flare576/graphics.c
diff options
context:
space:
mode:
authorlokher <lokher@gmail.com>2022-12-06 17:10:48 +0800
committerlokher <lokher@gmail.com>2022-12-07 15:50:49 +0800
commita336c2c5005251e4cb0f3a62ccabdb4cfccad915 (patch)
tree3c948b631a5e3b6f940dabe02fad3c7487e6f350 /keyboards/sofle/keymaps/flare576/graphics.c
parent27fc28fd2ff52e079a5bc58d6aaea4c752420615 (diff)
Merge upstream master to 2022 Q4 breaking change
Diffstat (limited to 'keyboards/sofle/keymaps/flare576/graphics.c')
-rw-r--r--keyboards/sofle/keymaps/flare576/graphics.c290
1 files changed, 0 insertions, 290 deletions
diff --git a/keyboards/sofle/keymaps/flare576/graphics.c b/keyboards/sofle/keymaps/flare576/graphics.c
deleted file mode 100644
index 8cade61668..0000000000
--- a/keyboards/sofle/keymaps/flare576/graphics.c
+++ /dev/null
@@ -1,290 +0,0 @@
-/* Copyright 2021 Flare576 <flare576@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include QMK_KEYBOARD_H
-#include "enums.h"
-#include "logos.h"
-int current_wpm = -1; // Enable screen-on at startup
-bool isJumping = false;
-bool showedJump = true;
-
-#ifdef OLED_DRIVER_ENABLE
-
-#ifdef MAIN_BOARD
-static void render_logos(void){}
-void luna_jump(bool newJump){
- isJumping = newJump;
- if (newJump) {
- showedJump = false;
- }
-}
-
-// START Luna vars
-#define MIN_WALK_SPEED 10
-#define MIN_RUN_SPEED 40
-
-#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
-#define ANIM_SIZE 96 // number of bytes in array, minimize for adequate firmware size, max is 1024
-
-uint32_t anim_timer = 0;
-uint8_t current_frame = 0;
-
-bool isSneaking = false;
-static void render_luna(int LUNA_X, int LUNA_Y) {
-
- static const char PROGMEM sit[2][ANIM_SIZE] = {
- // 'sit1', 32x22px
- {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c,
- 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28,
- 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- },
-
- // 'sit2', 32x22px
- {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c,
- 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28,
- 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- }
- };
-
- static const char PROGMEM walk[2][ANIM_SIZE] = {
- // 'walk1', 32x22px
- {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80,
- 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03,
- 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- },
-
- // 'walk2', 32x22px
- {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
- 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e,
- 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- }
- };
-
- static const char PROGMEM run[2][ANIM_SIZE] = {
- // 'run1', 32x22px
- {
- 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01,
- 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
- },
-
- // 'run2', 32x22px
- {
- 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37,
- 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- }
- };
-
- static const char PROGMEM sneak[2][ANIM_SIZE] = {
- // 'sneak1', 32x22px
- {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04,
- 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06,
- 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
- },
-
- // 'sneak2', 32x22px
- {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04,
- 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04,
- 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- }
- };
-
- // animation state
- void animation_phase(void) {
-
- if (isJumping || !showedJump) {
-
- // clear
- oled_set_cursor(LUNA_X,LUNA_Y +2);
- oled_write(" ", false);
-
- oled_set_cursor(LUNA_X,LUNA_Y -1);
-
- showedJump = true;
- } else {
-
- // clear
- oled_set_cursor(LUNA_X,LUNA_Y -1);
- oled_write(" ", false);
-
- oled_set_cursor(LUNA_X,LUNA_Y);
- }
-
- current_frame = (current_frame + 1) % 2;
-
- if(isSneaking) {
- oled_write_raw_P(sneak[current_frame], ANIM_SIZE);
-
- } else if(current_wpm <= MIN_WALK_SPEED) {
- oled_write_raw_P(sit[current_frame], ANIM_SIZE);
-
- } else if(current_wpm <= MIN_RUN_SPEED) {
- oled_write_raw_P(walk[current_frame], ANIM_SIZE);
-
- } else {
- oled_write_raw_P(run[current_frame], ANIM_SIZE);
- }
- }
-
- // animation timer
- if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
- anim_timer = timer_read32();
- animation_phase();
- }
-
-}
-// END Luna vars
-
-
-static void main_board(void) {
- int layer = get_highest_layer(layer_state);
- isSneaking = false;
- // Print current mode
- oled_write_ln_P(PSTR("Flare"), false);
- oled_write_ln_P(PSTR("Sofle"), false);
- if (layer == _FF14) {
- oled_write_raw_P(ffxiv, 16*8);
- } else if (keymap_config.swap_lalt_lgui) {
- oled_write_raw_P(windows, 16*8);
- } else {
- oled_write_raw_P(apple, 16*8);
- }
- oled_set_cursor(0, 9);
-
- switch (layer) {
- case _BASE:
- oled_write_ln_P(PSTR("ALL"), false);
- oled_write_P(PSTR(" YOUR"), false);
- oled_write_ln_P(PSTR("BASE"), false);
- break;
- case _MOUS:
- isSneaking = true;
- oled_write_ln_P(PSTR("Mouse"), false);
- break;
- case _SYMS:
- oled_write_ln_P(PSTR("@$*&#"), false);
- break;
- case _FF14:
- oled_write_ln_P(PSTR("FFXIV"), false);
- break;
- case _ESDF:
- oled_write_ln_P(PSTR("ESDF "), false);
- break;
- default:
- oled_write_ln_P(PSTR("Undef"), false);
- }
- if (layer != _BASE) {
- oled_write_P(PSTR("\n"), false);
- }
-
- // Don't re-write if not in use
- if (current_wpm > 0) {
- render_luna(0,13);
- }
-}
-
-// End "MAIN_BOARD"
-#else
-static void main_board(void){}
-static void luna_jump(bool newJump){}
-
-#define MARQUEE_FRAME_DURATION 200 // how long each frame lasts in ms
-#define LOGO_BYTES 128
-#define LOGO_COUNT 7
-static const char *const secondary_logos[] = { js, apple, docker, python, qmk, brew, windows };
-#define MARQUEE_FRAMES (LOGO_COUNT * 4)
-#define MARQUEE_SIZE ( LOGO_COUNT * LOGO_BYTES)
-#define MARQUEE_SCROLL_UP true
-uint32_t marquee_timer = 0;
-uint32_t marquee_frame = 0;
-
-static void render_logos(void) {
- void marquee_phase(void) {
- marquee_frame = (marquee_frame + 1) % MARQUEE_FRAMES;
- int marquee_start = MARQUEE_SIZE - (marquee_frame * 32);
- static char output[MARQUEE_SIZE];
- for (int i = 0; i < LOGO_COUNT; i++) {
- for (int j = 0; j < LOGO_BYTES; j++) {
- int pos = ( i * LOGO_BYTES + j + marquee_start ) % MARQUEE_SIZE;
- output[pos] = pgm_read_byte_near(secondary_logos[i] + j);
- }
- }
- oled_write_raw(output, MARQUEE_SIZE);
- }
-
- // animation timer
- if(timer_elapsed32(marquee_timer) > MARQUEE_FRAME_DURATION) {
- marquee_timer = timer_read32();
- marquee_phase();
- }
-}
-
-// End "MAIN_BOARD" false
-#endif
-
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- return OLED_ROTATION_270;
-}
-
-void oled_task_user(void) {
- // Prevent blank screen on startup
- if (current_wpm == -1) {
- set_current_wpm(10);
- }
- current_wpm = get_current_wpm();
- if (is_keyboard_master()) {
- // can't gate main_board on wpm; won't get mode changes that don't trigger wpm
- main_board();
- } else if (current_wpm > 0) {
- render_logos();
- }
-}
-
-// End "OLED_DRIVER_ENABLE"
-#else
-static void luna_jump(bool newJump){}
-// End "OLED_DRIVER_ENABLE" false
-#endif