From 5815c5d317b02d688990980fdf01848e81247c21 Mon Sep 17 00:00:00 2001
From: Fred Sundvik
Date: Wed, 5 Apr 2017 08:40:39 +0300
Subject: Move LCD keyframes to its own file
---
quantum/visualizer/lcd_keyframes.c | 160 +++++++++++++++++++++++++++++++++++++
1 file changed, 160 insertions(+)
create mode 100644 quantum/visualizer/lcd_keyframes.c
(limited to 'quantum/visualizer/lcd_keyframes.c')
diff --git a/quantum/visualizer/lcd_keyframes.c b/quantum/visualizer/lcd_keyframes.c
new file mode 100644
index 0000000000..00d9734e6a
--- /dev/null
+++ b/quantum/visualizer/lcd_keyframes.c
@@ -0,0 +1,160 @@
+/* Copyright 2017 Fred Sundvik
+ *
+ * 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 .
+ */
+
+#include "lcd_keyframes.h"
+#include
+#include "action_util.h"
+#include "led.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;
+}
+
+static void format_layer_bitmap_string(uint16_t default_layer, uint16_t layer, char* buffer) {
+ for (int i=0; i<16;i++)
+ {
+ uint32_t mask = (1u << i);
+ if (default_layer & mask) {
+ if (layer & mask) {
+ *buffer = 'B';
+ } else {
+ *buffer = 'D';
+ }
+ } else if (layer & mask) {
+ *buffer = '1';
+ } else {
+ *buffer = '0';
+ }
+ ++buffer;
+
+ if (i==3 || i==7 || i==11) {
+ *buffer = ' ';
+ ++buffer;
+ }
+ }
+ *buffer = 0;
+}
+
+bool lcd_keyframe_display_layer_bitmap(keyframe_animation_t* animation, visualizer_state_t* state) {
+ (void)animation;
+ const char* layer_help = "1=On D=Default B=Both";
+ char layer_buffer[16 + 4]; // 3 spaces and one null terminator
+ gdispClear(White);
+ gdispDrawString(0, 0, layer_help, state->font_fixed5x8, Black);
+ format_layer_bitmap_string(state->status.default_layer, state->status.layer, layer_buffer);
+ 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;
+}
+
+static void format_mods_bitmap_string(uint8_t mods, char* buffer) {
+ *buffer = ' ';
+ ++buffer;
+
+ for (int i = 0; i<8; i++)
+ {
+ uint32_t mask = (1u << i);
+ if (mods & mask) {
+ *buffer = '1';
+ } else {
+ *buffer = '0';
+ }
+ ++buffer;
+
+ if (i==3) {
+ *buffer = ' ';
+ ++buffer;
+ }
+ }
+ *buffer = 0;
+}
+
+bool lcd_keyframe_display_mods_bitmap(keyframe_animation_t* animation, visualizer_state_t* state) {
+ (void)animation;
+
+ const char* title = "Modifier states";
+ const char* mods_header = " CSAG CSAG ";
+ char status_buffer[12];
+
+ gdispClear(White);
+ gdispDrawString(0, 0, title, state->font_fixed5x8, Black);
+ gdispDrawString(0, 10, mods_header, state->font_fixed5x8, Black);
+ format_mods_bitmap_string(state->status.mods, status_buffer);
+ gdispDrawString(0, 20, status_buffer, state->font_fixed5x8, Black);
+
+ gdispFlush();
+ return false;
+}
+
+#define LED_STATE_STRING_SIZE sizeof("NUM CAPS SCRL COMP KANA")
+
+static void get_led_state_string(char* output, visualizer_state_t* state) {
+ uint8_t pos = 0;
+
+ if (state->status.leds & (1u << USB_LED_NUM_LOCK)) {
+ memcpy(output + pos, "NUM ", 4);
+ pos += 4;
+ }
+ if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
+ memcpy(output + pos, "CAPS ", 5);
+ pos += 5;
+ }
+ if (state->status.leds & (1u << USB_LED_SCROLL_LOCK)) {
+ memcpy(output + pos, "SCRL ", 5);
+ pos += 5;
+ }
+ if (state->status.leds & (1u << USB_LED_COMPOSE)) {
+ memcpy(output + pos, "COMP ", 5);
+ pos += 5;
+ }
+ if (state->status.leds & (1u << USB_LED_KANA)) {
+ memcpy(output + pos, "KANA ", 5);
+ pos += 5;
+ }
+ output[pos] = 0;
+}
+
+bool lcd_keyframe_display_led_states(keyframe_animation_t* animation, visualizer_state_t* state)
+{
+ (void)animation;
+ char output[LED_STATE_STRING_SIZE];
+ get_led_state_string(output, state);
+ gdispClear(White);
+ gdispDrawString(0, 10, output, state->font_dejavusansbold12, Black);
+ gdispFlush();
+ return false;
+}
+
+bool lcd_keyframe_display_layer_and_led_states(keyframe_animation_t* animation, visualizer_state_t* state) {
+ (void)animation;
+ gdispClear(White);
+ uint8_t y = 10;
+ if (state->status.leds) {
+ char output[LED_STATE_STRING_SIZE];
+ get_led_state_string(output, state);
+ gdispDrawString(0, 1, output, state->font_dejavusansbold12, Black);
+ y = 17;
+ }
+ gdispDrawString(0, y, state->layer_text, state->font_dejavusansbold12, Black);
+ gdispFlush();
+ return false;
+}
--
cgit v1.2.3
From 1e7585e76771e1a2d8ca733fc09c19f9fa0e903c Mon Sep 17 00:00:00 2001
From: Fred Sundvik
Date: Wed, 5 Apr 2017 09:21:18 +0300
Subject: Separated backlight and LCD disable/enable
Also moved them to correct places
---
keyboards/ergodox/infinity/visualizer.c | 14 ++++++++------
keyboards/ergodox/keymaps/default/visualizer.c | 14 ++++++++------
quantum/visualizer/lcd_backlight_keyframes.c | 16 ++++++++++++++++
quantum/visualizer/lcd_backlight_keyframes.h | 3 +++
quantum/visualizer/lcd_keyframes.c | 14 ++++++++++++++
quantum/visualizer/lcd_keyframes.h | 4 ++++
quantum/visualizer/visualizer.c | 21 ---------------------
quantum/visualizer/visualizer.h | 3 ---
8 files changed, 53 insertions(+), 36 deletions(-)
(limited to 'quantum/visualizer/lcd_keyframes.c')
diff --git a/keyboards/ergodox/infinity/visualizer.c b/keyboards/ergodox/infinity/visualizer.c
index bbed4e9897..8e684d9919 100644
--- a/keyboards/ergodox/infinity/visualizer.c
+++ b/keyboards/ergodox/infinity/visualizer.c
@@ -186,22 +186,24 @@ static keyframe_animation_t lcd_bitmap_leds_animation = {
};
static keyframe_animation_t suspend_animation = {
- .num_frames = 3,
+ .num_frames = 4,
.loop = false,
- .frame_lengths = {0, gfxMillisecondsToTicks(1000), 0},
+ .frame_lengths = {0, gfxMillisecondsToTicks(1000), 0, 0},
.frame_functions = {
lcd_keyframe_display_layer_text,
backlight_keyframe_animate_color,
- keyframe_disable_lcd_and_backlight,
+ lcd_keyframe_disable,
+ lcd_keyframe_disable,
},
};
static keyframe_animation_t resume_animation = {
- .num_frames = 4,
+ .num_frames = 5,
.loop = false,
- .frame_lengths = {0, 0, gfxMillisecondsToTicks(10000), 0},
+ .frame_lengths = {0, 0, 0, gfxMillisecondsToTicks(10000), 0},
.frame_functions = {
- keyframe_enable_lcd_and_backlight,
+ lcd_keyframe_enable,
+ backlight_keyframe_enable,
display_logo,
backlight_keyframe_animate_color,
enable_visualization,
diff --git a/keyboards/ergodox/keymaps/default/visualizer.c b/keyboards/ergodox/keymaps/default/visualizer.c
index 07f5a44ab3..5ee49c9bc2 100644
--- a/keyboards/ergodox/keymaps/default/visualizer.c
+++ b/keyboards/ergodox/keymaps/default/visualizer.c
@@ -128,22 +128,24 @@ static keyframe_animation_t lcd_layer_display = {
};
static keyframe_animation_t suspend_animation = {
- .num_frames = 3,
+ .num_frames = 4,
.loop = false,
- .frame_lengths = {0, gfxMillisecondsToTicks(1000), 0},
+ .frame_lengths = {0, gfxMillisecondsToTicks(1000), 0, 0},
.frame_functions = {
lcd_keyframe_display_layer_text,
backlight_keyframe_animate_color,
- keyframe_disable_lcd_and_backlight,
+ lcd_keyframe_disable,
+ lcd_keyframe_disable,
},
};
static keyframe_animation_t resume_animation = {
- .num_frames = 4,
+ .num_frames = 5,
.loop = false,
- .frame_lengths = {0, 0, gfxMillisecondsToTicks(10000), 0},
+ .frame_lengths = {0, 0, 0, gfxMillisecondsToTicks(10000), 0},
.frame_functions = {
- keyframe_enable_lcd_and_backlight,
+ lcd_keyframe_enable,
+ backlight_keyframe_enable,
display_logo,
backlight_keyframe_animate_color,
enable_visualization,
diff --git a/quantum/visualizer/lcd_backlight_keyframes.c b/quantum/visualizer/lcd_backlight_keyframes.c
index 0964737087..8436d4e3dd 100644
--- a/quantum/visualizer/lcd_backlight_keyframes.c
+++ b/quantum/visualizer/lcd_backlight_keyframes.c
@@ -59,3 +59,19 @@ bool backlight_keyframe_set_color(keyframe_animation_t* animation, visualizer_st
LCD_INT(state->current_lcd_color));
return false;
}
+
+bool backlight_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
+ (void)animation;
+ (void)state;
+ lcd_backlight_hal_color(0, 0, 0);
+ return false;
+}
+
+bool backlight_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
+ (void)animation;
+ (void)state;
+ lcd_backlight_color(LCD_HUE(state->current_lcd_color),
+ LCD_SAT(state->current_lcd_color),
+ LCD_INT(state->current_lcd_color));
+ return false;
+}
diff --git a/quantum/visualizer/lcd_backlight_keyframes.h b/quantum/visualizer/lcd_backlight_keyframes.h
index 8cd5a46c6a..e1c125cf91 100644
--- a/quantum/visualizer/lcd_backlight_keyframes.h
+++ b/quantum/visualizer/lcd_backlight_keyframes.h
@@ -24,4 +24,7 @@ bool backlight_keyframe_animate_color(keyframe_animation_t* animation, visualize
// Sets the backlight color to the target color
bool backlight_keyframe_set_color(keyframe_animation_t* animation, visualizer_state_t* state);
+bool backlight_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state);
+bool backlight_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state);
+
#endif /* QUANTUM_VISUALIZER_LCD_BACKLIGHT_KEYFRAMES_H_ */
diff --git a/quantum/visualizer/lcd_keyframes.c b/quantum/visualizer/lcd_keyframes.c
index 00d9734e6a..74f6e3b470 100644
--- a/quantum/visualizer/lcd_keyframes.c
+++ b/quantum/visualizer/lcd_keyframes.c
@@ -158,3 +158,17 @@ bool lcd_keyframe_display_layer_and_led_states(keyframe_animation_t* animation,
gdispFlush();
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;
+}
diff --git a/quantum/visualizer/lcd_keyframes.h b/quantum/visualizer/lcd_keyframes.h
index 0c9f39ab8c..8f79a541c8 100644
--- a/quantum/visualizer/lcd_keyframes.h
+++ b/quantum/visualizer/lcd_keyframes.h
@@ -30,4 +30,8 @@ bool lcd_keyframe_display_led_states(keyframe_animation_t* animation, visualizer
// Displays both the layer text and the led states
bool lcd_keyframe_display_layer_and_led_states(keyframe_animation_t* animation, visualizer_state_t* state);
+bool lcd_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state);
+bool lcd_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state);
+
+
#endif /* QUANTUM_VISUALIZER_LCD_KEYFRAMES_H_ */
diff --git a/quantum/visualizer/visualizer.c b/quantum/visualizer/visualizer.c
index 6ebd806e40..98cd7ba554 100644
--- a/quantum/visualizer/visualizer.c
+++ b/quantum/visualizer/visualizer.c
@@ -228,27 +228,6 @@ bool keyframe_no_operation(keyframe_animation_t* animation, visualizer_state_t*
return false;
}
-bool keyframe_disable_lcd_and_backlight(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)animation;
- (void)state;
-#ifdef LCD_ENABLE
- gdispSetPowerMode(powerOff);
-#endif
-#ifdef LCD_BACKLIGHT_ENABLE
- lcd_backlight_hal_color(0, 0, 0);
-#endif
- return false;
-}
-
-bool keyframe_enable_lcd_and_backlight(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)animation;
- (void)state;
-#ifdef LCD_ENABLE
- gdispSetPowerMode(powerOn);
-#endif
- return false;
-}
-
bool enable_visualization(keyframe_animation_t* animation, visualizer_state_t* state) {
(void)animation;
(void)state;
diff --git a/quantum/visualizer/visualizer.h b/quantum/visualizer/visualizer.h
index 5c870dbfe9..f37ce8416e 100644
--- a/quantum/visualizer/visualizer.h
+++ b/quantum/visualizer/visualizer.h
@@ -130,9 +130,6 @@ void run_next_keyframe(keyframe_animation_t* animation, visualizer_state_t* stat
// Does nothing, useful for adding delays
bool keyframe_no_operation(keyframe_animation_t* animation, visualizer_state_t* state);
-bool keyframe_disable_lcd_and_backlight(keyframe_animation_t* animation, visualizer_state_t* state);
-bool keyframe_enable_lcd_and_backlight(keyframe_animation_t* animation, visualizer_state_t* state);
-
// Call this once, when the initial animation has finished, alternatively you can call it
// directly from the initalize_user_visualizer function (the animation can be null)
bool enable_visualization(keyframe_animation_t* animation, visualizer_state_t* state);
--
cgit v1.2.3
From 3eb8785e8770c07e6a4280c50240d5d951461911 Mon Sep 17 00:00:00 2001
From: Fred Sundvik
Date: Sat, 8 Apr 2017 20:10:20 +0300
Subject: Add automatic flush for the LCD screen
---
.../ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c | 1 +
keyboards/ergodox/infinity/visualizer.c | 2 --
keyboards/ergodox/keymaps/default/visualizer.c | 2 --
quantum/visualizer/lcd_keyframes.c | 5 -----
quantum/visualizer/visualizer.c | 4 ++++
5 files changed, 5 insertions(+), 9 deletions(-)
(limited to 'quantum/visualizer/lcd_keyframes.c')
diff --git a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c b/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c
index 0de457a7ae..5b7b6d44c4 100644
--- a/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c
+++ b/keyboards/ergodox/infinity/drivers/gdisp/st7565ergodox/gdisp_lld_ST7565.c
@@ -262,6 +262,7 @@ LLDSPEC void gdisp_lld_blit_area(GDisplay *g) {
srcbit++;
}
}
+ g->flags |= GDISP_FLG_NEEDFLUSH;
}
#if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL
diff --git a/keyboards/ergodox/infinity/visualizer.c b/keyboards/ergodox/infinity/visualizer.c
index 2e10fdd709..6f9b0210a7 100644
--- a/keyboards/ergodox/infinity/visualizer.c
+++ b/keyboards/ergodox/infinity/visualizer.c
@@ -127,8 +127,6 @@ bool display_logo(keyframe_animation_t* animation, visualizer_state_t* state) {
// if you have full screen image, then just use 128 and 32 for both source and target dimensions
gdispGBlitArea(GDISP, 0, 0, 128, 32, 0, 0, 128, (pixel_t*)image_data_lcd_logo);
- // Always remember to flush the display
- gdispFlush();
return false;
}
diff --git a/keyboards/ergodox/keymaps/default/visualizer.c b/keyboards/ergodox/keymaps/default/visualizer.c
index f6159e1ef1..1b0f12f250 100644
--- a/keyboards/ergodox/keymaps/default/visualizer.c
+++ b/keyboards/ergodox/keymaps/default/visualizer.c
@@ -101,8 +101,6 @@ bool display_logo(keyframe_animation_t* animation, visualizer_state_t* state) {
// if you have full screen image, then just use 128 and 32 for both source and target dimensions
gdispGBlitArea(GDISP, 0, 0, 128, 32, 0, 0, 128, (pixel_t*)image_data_lcd_logo);
- // Always remember to flush the display
- gdispFlush();
return false;
}
diff --git a/quantum/visualizer/lcd_keyframes.c b/quantum/visualizer/lcd_keyframes.c
index 74f6e3b470..c6e04d0ca4 100644
--- a/quantum/visualizer/lcd_keyframes.c
+++ b/quantum/visualizer/lcd_keyframes.c
@@ -23,7 +23,6 @@ bool lcd_keyframe_display_layer_text(keyframe_animation_t* animation, visualizer
(void)animation;
gdispClear(White);
gdispDrawString(0, 10, state->layer_text, state->font_dejavusansbold12, Black);
- gdispFlush();
return false;
}
@@ -62,7 +61,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 +99,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;
}
@@ -140,7 +137,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,7 +151,6 @@ 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;
}
diff --git a/quantum/visualizer/visualizer.c b/quantum/visualizer/visualizer.c
index 2479a64c7f..6f134097f0 100644
--- a/quantum/visualizer/visualizer.c
+++ b/quantum/visualizer/visualizer.c
@@ -313,6 +313,10 @@ static DECLARE_THREAD_FUNCTION(visualizerThread, arg) {
gdispGFlush(LED_DISPLAY);
#endif
+#ifdef LCD_ENABLE
+ gdispGFlush(LCD_DISPLAY);
+#endif
+
#ifdef EMULATOR
draw_emulator();
#endif
--
cgit v1.2.3
From 3074269c4a07ff7f1ab2a76ebdb8904cd642e283 Mon Sep 17 00:00:00 2001
From: Fred Sundvik
Date: Sat, 8 Apr 2017 21:30:11 +0300
Subject: Move the logo drawing keyframe to lcd_keyframes
---
keyboards/ergodox/infinity/visualizer.c | 22 ++--------------------
keyboards/ergodox/keymaps/default/visualizer.c | 22 ++--------------------
quantum/visualizer/lcd_keyframes.c | 19 +++++++++++++++++++
quantum/visualizer/lcd_keyframes.h | 2 ++
4 files changed, 25 insertions(+), 40 deletions(-)
(limited to 'quantum/visualizer/lcd_keyframes.c')
diff --git a/keyboards/ergodox/infinity/visualizer.c b/keyboards/ergodox/infinity/visualizer.c
index 90933b00a4..bac85c593c 100644
--- a/keyboards/ergodox/infinity/visualizer.c
+++ b/keyboards/ergodox/infinity/visualizer.c
@@ -72,24 +72,6 @@ static visualizer_user_data_t user_data_keyboard = {
_Static_assert(sizeof(visualizer_user_data_t) <= VISUALIZER_USER_DATA_SIZE,
"Please increase the VISUALIZER_USER_DATA_SIZE");
-bool display_logo(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- (void)animation;
- (void)state;
- // 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 128 and 32 for both source and target dimensions
- gdispGBlitArea(GDISP, 0, 0, 128, 32, 0, 0, 128, (pixel_t*)resource_lcd_logo);
-
- return false;
-}
-
// Feel free to modify the animations below, or even add new ones if needed
// Don't worry, if the startup animation is long, you can use the keyboard like normal
@@ -99,7 +81,7 @@ static keyframe_animation_t startup_animation = {
.loop = false,
.frame_lengths = {0, gfxMillisecondsToTicks(10000), 0},
.frame_functions = {
- display_logo,
+ lcd_keyframe_draw_logo,
backlight_keyframe_animate_color,
},
};
@@ -162,7 +144,7 @@ static keyframe_animation_t resume_animation = {
.frame_functions = {
lcd_keyframe_enable,
backlight_keyframe_enable,
- display_logo,
+ lcd_keyframe_draw_logo,
backlight_keyframe_animate_color,
},
};
diff --git a/keyboards/ergodox/keymaps/default/visualizer.c b/keyboards/ergodox/keymaps/default/visualizer.c
index f03702f602..afa6f1bdd7 100644
--- a/keyboards/ergodox/keymaps/default/visualizer.c
+++ b/keyboards/ergodox/keymaps/default/visualizer.c
@@ -46,24 +46,6 @@ typedef enum {
static lcd_state_t lcd_state = LCD_STATE_INITIAL;
-bool display_logo(keyframe_animation_t* animation, visualizer_state_t* state) {
- (void)state;
- (void)animation;
- (void)state;
- // 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 128 and 32 for both source and target dimensions
- gdispGBlitArea(GDISP, 0, 0, 128, 32, 0, 0, 128, (pixel_t*)resource_lcd_logo);
-
- return false;
-}
-
// Feel free to modify the animations below, or even add new ones if needed
// Don't worry, if the startup animation is long, you can use the keyboard like normal
@@ -73,7 +55,7 @@ static keyframe_animation_t startup_animation = {
.loop = false,
.frame_lengths = {0, gfxMillisecondsToTicks(10000), 0},
.frame_functions = {
- display_logo,
+ lcd_keyframe_draw_logo,
backlight_keyframe_animate_color,
},
};
@@ -104,7 +86,7 @@ static keyframe_animation_t resume_animation = {
.frame_functions = {
lcd_keyframe_enable,
backlight_keyframe_enable,
- display_logo,
+ lcd_keyframe_draw_logo,
backlight_keyframe_animate_color,
},
};
diff --git a/quantum/visualizer/lcd_keyframes.c b/quantum/visualizer/lcd_keyframes.c
index c6e04d0ca4..df11861ddc 100644
--- a/quantum/visualizer/lcd_keyframes.c
+++ b/quantum/visualizer/lcd_keyframes.c
@@ -18,6 +18,7 @@
#include
#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;
@@ -154,6 +155,24 @@ bool lcd_keyframe_display_layer_and_led_states(keyframe_animation_t* animation,
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 128 and 32 for both source and target dimensions
+ gdispGBlitArea(GDISP, 0, 0, 128, 32, 0, 0, 128, (pixel_t*)resource_lcd_logo);
+
+ return false;
+}
+
+
bool lcd_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
(void)animation;
(void)state;
diff --git a/quantum/visualizer/lcd_keyframes.h b/quantum/visualizer/lcd_keyframes.h
index 8f79a541c8..2e912b4c73 100644
--- a/quantum/visualizer/lcd_keyframes.h
+++ b/quantum/visualizer/lcd_keyframes.h
@@ -29,6 +29,8 @@ bool lcd_keyframe_display_mods_bitmap(keyframe_animation_t* animation, visualize
bool lcd_keyframe_display_led_states(keyframe_animation_t* animation, visualizer_state_t* state);
// Displays both the layer text and the led states
bool lcd_keyframe_display_layer_and_led_states(keyframe_animation_t* animation, visualizer_state_t* state);
+// Displays the QMK logo on the LCD screen
+bool lcd_keyframe_draw_logo(keyframe_animation_t* animation, visualizer_state_t* state);
bool lcd_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state);
bool lcd_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state);
--
cgit v1.2.3