Add halcyon module support
This commit is contained in:
parent
35edec2998
commit
0fe01454d8
48 changed files with 2511 additions and 18 deletions
66
examples/display/display.c
Normal file
66
examples/display/display.c
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
// Include the main display functions so we don't have to initialize the display again
|
||||
#include "hlc_tft_display/hlc_tft_display.h"
|
||||
|
||||
// Include the QP api
|
||||
#include "qp.h"
|
||||
|
||||
// Add a font, this font is generated using the QP CLI tools (https://docs.qmk.fm/quantum_painter#quantum-painter-cli)
|
||||
#include "graphics/thintel15.qff.h"
|
||||
|
||||
// Initialize the font
|
||||
static painter_font_handle_t thintel;
|
||||
|
||||
// This function is ran on bootup of the keyboard
|
||||
bool module_post_init_user(void) {
|
||||
// Load the font in to memory.
|
||||
thintel = qp_load_font_mem(font_thintel15);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// This function runs after every matrix scan
|
||||
bool display_module_housekeeping_task_user(bool second_display) {
|
||||
// Create checks to see if the displays are set. We don't need to keep updating the display with the same image so this will save some CPU time.
|
||||
static bool display_set = false;
|
||||
static bool second_display_set = false;
|
||||
|
||||
// When the display isn't set, do the following
|
||||
if (!display_set) {
|
||||
// If it's the main display
|
||||
if (!second_display) {
|
||||
// Create text to write
|
||||
static const char *text = "This is a user display!";
|
||||
|
||||
// Draw text on top left corner
|
||||
qp_drawtext_recolor(lcd_surface, 0, 0, thintel, text, HSV_WHITE, HSV_BLACK);
|
||||
|
||||
// Make sure to not run this again.
|
||||
display_set = true;
|
||||
// If it's the secundairy display
|
||||
} else {
|
||||
// Create text to write
|
||||
static const char *text = "This is a second user display!";
|
||||
|
||||
// Read width from text
|
||||
int16_t width = qp_textwidth(thintel, text);
|
||||
|
||||
// Draw text on bottom right corner
|
||||
qp_drawtext_recolor(lcd_surface, (LCD_WIDTH - width), (LCD_HEIGHT - thintel->line_height), thintel, text, HSV_WHITE, HSV_BLACK);
|
||||
|
||||
// Make sure to not run this again.
|
||||
display_set = true;
|
||||
second_display_set = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure that the second display loads correctly, sometimes it takes a little while for the keyboard to know it has a second display.
|
||||
// So we reset the state and make it run again until the secondary display is drawn correctly
|
||||
if(second_display && !second_display_set) {
|
||||
display_set = false;
|
||||
}
|
||||
|
||||
// Move surface to lcd, this actually writes the content to the physical display
|
||||
qp_surface_draw(lcd_surface, lcd, 0, 0, 0);
|
||||
|
||||
return false;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue