123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- #pragma once
- #include <stdlib.h>
- #include <stdint.h>
- #include <stdbool.h>
- #include "config.h"
- #include "gfx.h"
- #include "action_layer.h"
- #ifdef LCD_BACKLIGHT_ENABLE
- # include "lcd_backlight.h"
- #endif
- #ifdef BACKLIGHT_ENABLE
- # include "backlight.h"
- #endif
- uint8_t visualizer_get_mods(void);
- void visualizer_init(void);
- void visualizer_update(layer_state_t default_state, layer_state_t state, uint8_t mods, uint32_t leds);
- void visualizer_suspend(void);
- void visualizer_resume(void);
- GDisplay* get_lcd_display(void);
- GDisplay* get_led_display(void);
- #ifdef EMULATOR
- void draw_emulator(void);
- #endif
- #define MAX_VISUALIZER_KEY_FRAMES 16
- struct keyframe_animation_t;
- typedef struct {
- layer_state_t layer;
- layer_state_t default_layer;
- uint32_t leds;
- uint8_t mods;
- bool suspended;
- #ifdef BACKLIGHT_ENABLE
- uint8_t backlight_level;
- #endif
- #ifdef VISUALIZER_USER_DATA_SIZE
- uint8_t user_data[VISUALIZER_USER_DATA_SIZE];
- #endif
- } visualizer_keyboard_status_t;
- typedef struct visualizer_state_t {
-
- uint32_t target_lcd_color;
- const char* layer_text;
-
- visualizer_keyboard_status_t status;
-
- uint32_t current_lcd_color;
- uint32_t prev_lcd_color;
- #ifdef LCD_ENABLE
- gFont font_fixed5x8;
- gFont font_dejavusansbold12;
- #endif
- } visualizer_state_t;
- typedef bool (*frame_func)(struct keyframe_animation_t*, visualizer_state_t*);
- typedef struct keyframe_animation_t {
-
- int num_frames;
- bool loop;
- int frame_lengths[MAX_VISUALIZER_KEY_FRAMES];
- frame_func frame_functions[MAX_VISUALIZER_KEY_FRAMES];
-
-
- int current_frame;
- int time_left_in_frame;
- bool first_update_of_frame;
- bool last_update_of_frame;
- bool need_update;
- } keyframe_animation_t;
- extern GDisplay* LCD_DISPLAY;
- extern GDisplay* LED_DISPLAY;
- void start_keyframe_animation(keyframe_animation_t* animation);
- void stop_keyframe_animation(keyframe_animation_t* animation);
- void run_next_keyframe(keyframe_animation_t* animation, visualizer_state_t* state);
- #ifdef VISUALIZER_USER_DATA_SIZE
- void visualizer_set_user_data(void* user_data);
- #endif
- void update_user_visualizer_state(visualizer_state_t* state, visualizer_keyboard_status_t* prev_status);
- void user_visualizer_suspend(visualizer_state_t* state);
- void initialize_user_visualizer(visualizer_state_t* state);
- void user_visualizer_resume(visualizer_state_t* state);
|