]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - quantum/visualizer/lcd_keyframes.c
[Keymap] Jarred's Plaid keymap (#6049)
[qmk_firmware.git] / quantum / visualizer / lcd_keyframes.c
index 00d9734e6aeb78e28faa890f558765bdf9b07b9d..75eb457001c321f65bd799ea292e8c5655c389a2 100644 (file)
 #include <string.h>
 #include "action_util.h"
 #include "led.h"
+#include "resources/resources.h"
 
 bool lcd_keyframe_display_layer_text(keyframe_animation_t* animation, visualizer_state_t* state) {
     (void)animation;
     gdispClear(White);
     gdispDrawString(0, 10, state->layer_text, state->font_dejavusansbold12, Black);
-    gdispFlush();
     return false;
 }
 
@@ -62,7 +62,6 @@ bool lcd_keyframe_display_layer_bitmap(keyframe_animation_t* animation, visualiz
     gdispDrawString(0, 10, layer_buffer, state->font_fixed5x8, Black);
     format_layer_bitmap_string(state->status.default_layer >> 16, state->status.layer >> 16, layer_buffer);
     gdispDrawString(0, 20, layer_buffer, state->font_fixed5x8, Black);
-    gdispFlush();
     return false;
 }
 
@@ -101,7 +100,6 @@ bool lcd_keyframe_display_mods_bitmap(keyframe_animation_t* animation, visualize
     format_mods_bitmap_string(state->status.mods, status_buffer);
     gdispDrawString(0, 20, status_buffer, state->font_fixed5x8, Black);
 
-    gdispFlush();
     return false;
 }
 
@@ -127,8 +125,8 @@ static void get_led_state_string(char* output, visualizer_state_t* state) {
        pos += 5;
     }
     if (state->status.leds & (1u << USB_LED_KANA)) {
-       memcpy(output + pos, "KANA ", 5);
-       pos += 5;
+       memcpy(output + pos, "KANA", 4);
+       pos += 4;
     }
     output[pos] = 0;
 }
@@ -140,7 +138,6 @@ bool lcd_keyframe_display_led_states(keyframe_animation_t* animation, visualizer
     get_led_state_string(output, state);
     gdispClear(White);
     gdispDrawString(0, 10, output, state->font_dejavusansbold12, Black);
-    gdispFlush();
     return false;
 }
 
@@ -155,6 +152,37 @@ bool lcd_keyframe_display_layer_and_led_states(keyframe_animation_t* animation,
         y = 17;
     }
     gdispDrawString(0, y, state->layer_text, state->font_dejavusansbold12, Black);
-    gdispFlush();
+    return false;
+}
+
+bool lcd_keyframe_draw_logo(keyframe_animation_t* animation, visualizer_state_t* state) {
+    (void)state;
+    (void)animation;
+    // Read the uGFX documentation for information how to use the displays
+    // http://wiki.ugfx.org/index.php/Main_Page
+    gdispClear(White);
+
+    // You can use static variables for things that can't be found in the animation
+    // or state structs, here we use the image
+
+    //gdispGBlitArea is a tricky function to use since it supports blitting part of the image
+    // if you have full screen image, then just use LCD_WIDTH and LCD_HEIGHT for both source and target dimensions
+    gdispGBlitArea(GDISP, 0, 0, LCD_WIDTH, LCD_HEIGHT, 0, 0, LCD_WIDTH, (pixel_t*)resource_lcd_logo);
+
+    return false;
+}
+
+
+bool lcd_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
+    (void)animation;
+    (void)state;
+    gdispSetPowerMode(powerOff);
+    return false;
+}
+
+bool lcd_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
+    (void)animation;
+    (void)state;
+    gdispSetPowerMode(powerOn);
     return false;
 }