54 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // Copyright 2023 @boardsource
 | |
| // SPDX-License-Identifier: GPL-2.0-or-later
 | |
| 
 | |
| #include "quantum.h"
 | |
| 
 | |
| #ifdef QUANTUM_PAINTER_ENABLE
 | |
| #include "qp.h"
 | |
| #include "qp_st7735.h"
 | |
| #include "graphics/thintel15.qff.c"
 | |
| 
 | |
| static painter_device_t      oled;
 | |
| static painter_font_handle_t font;
 | |
| 
 | |
| __attribute__((weak)) void ui_init(void) {
 | |
|     oled = qp_st7735_make_spi_device(128, 160, OLED_CS_PIN, OLED_DC_PIN, OLED_RST_PIN, 8, 0);
 | |
|     font = qp_load_font_mem(font_thintel15);
 | |
|     qp_init(oled, QP_ROTATION_0);
 | |
|     qp_rect(oled, 0, 0, 130, 162, 0, 0, 0, true);
 | |
|     qp_rect(oled, 20, 20, 108, 60, 55, 55, 55, true);
 | |
|     qp_rect(oled, 20, 80, 108, 120, 55, 55, 55, true);
 | |
|     qp_flush(oled);
 | |
| }
 | |
| 
 | |
| __attribute__((weak)) void ui_task(void) {
 | |
|     static const char *text  = "Layer:";
 | |
|     int16_t            width = qp_textwidth(font, text);
 | |
|     qp_drawtext(oled, 20, 140, font, text);
 | |
| 
 | |
|     switch (get_highest_layer(layer_state)) {
 | |
|         case 0:
 | |
|             qp_drawtext(oled, (20 + width), 140, font, "QWERTY");
 | |
|             break;
 | |
|         case 1:
 | |
|             qp_drawtext(oled, (20 + width), 140, font, "SYMBOL");
 | |
|             break;
 | |
|         case 2:
 | |
|             qp_drawtext(oled, (20 + width), 140, font, "NUMBER");
 | |
|             break;
 | |
|         default:
 | |
|             qp_drawtext(oled, (20 + width), 140, font, "_PANIC_");
 | |
|             break;
 | |
|     }
 | |
| }
 | |
| 
 | |
| void keyboard_post_init_kb(void) {
 | |
|     ui_init();
 | |
|     keyboard_post_init_user();
 | |
| }
 | |
| 
 | |
| void housekeeping_task_kb(void) {
 | |
|     ui_task();
 | |
|     housekeeping_task_user();
 | |
| }
 | |
| #endif // QUANTUM_PAINTER_ENABLE
 | 
