/* * Copyright (C) 2023 Daniele Lacamera * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . */ #ifndef INC_UI_H #define INC_UI_H #include "task.h" #include #define BLACK 0 #define WHITE 15 #define RED 1 #define GREEN 2 #define YELLOW 3 #define BLUE 4 #define PURPLE 5 #define CYAN 6 #define GREY 7 #define BRIGHT(x) (x | 0x08) #define MAGENTA BRIGHT(PURPLE) #define BLOOD BRIGHT(RED) #define PINK 13 #define ORANGE 220 #define BROWN 94 #define DARKRED 52 #define DARKGREEN 22 #define DARKBLUE 17 #define DARKGREY 8 extern int ui_selected_instrument; extern int ui_selected_sample; extern int ui_selected_octave; void ui_redraw(uint16_t ev); void ui_init(void); uint8_t ui_menu_is_on(void); void ui_menu(uint8_t onoff); void ui_image_at(int layer, const uint8_t *img, uint32_t x, uint32_t y, uint32_t size_x, uint32_t size_y); void ui_draw_h_segment(int layer, uint8_t color, uint32_t row, uint32_t start, uint32_t len); void ui_draw_v_segment(int layer, uint8_t color, uint32_t col, uint32_t start, uint32_t len); void ui_fill_area(int layer, uint8_t color, uint32_t x, uint32_t y, uint32_t x1, uint32_t y1); void ui_text_at(int layer, uint8_t color, uint32_t x, uint32_t y, char *text); void ui_selected_text_at(int layer, uint8_t color, uint8_t highlight, uint32_t x, uint32_t y, char *text); void ui_draw_blocks(void); void ui_draw_bpm(void); void ui_draw_pot(int layer, uint8_t color, int x, int y, char *name, uint16_t level); int ui_process_button_pressed(void); #define RK043FN48H_WIDTH ((uint16_t)480) /* LCD PIXEL WIDTH */ #define RK043FN48H_HEIGHT ((uint16_t)272) /* LCD PIXEL HEIGHT */ #define RK043FN48H_HSYNC ((uint16_t)41) /* Horizontal synchronization */ #define RK043FN48H_HBP ((uint16_t)13) /* Horizontal back porch */ #define RK043FN48H_HFP ((uint16_t)32) /* Horizontal front porch */ #define RK043FN48H_VSYNC ((uint16_t)10) /* Vertical synchronization */ #define RK043FN48H_VBP ((uint16_t)2) /* Vertical back porch */ #define RK043FN48H_VFP ((uint16_t)2) /* Vertical front porch */ #define RK043FN48H_FREQUENCY_DIVIDER 5 /* LCD Frequency divider */ #define FB_WIDTH RK043FN48H_WIDTH #define FB_HEIGTH RK043FN48H_HEIGHT //#define FB_BPP (16) /* hardcoded RGB565 - 16 bits per pixel */ #define FB_BPP (8) /* hardcoded CLUT256 - 8 bit per pixel */ #define OVERLAY 0 #define Screen_address 0xC0000000 #define Overlay_address 0xC0200000 #define xres FB_WIDTH #define yres FB_HEIGTH #define bits_per_pixel FB_BPP #define pixel_format LTDC_LxPFCR_L8 #endif