67 lines
2.2 KiB
C
67 lines
2.2 KiB
C
#ifndef VELOMETER_GRAPHICS_H
|
|
#define VELOMETER_GRAPHICS_H
|
|
#include "st7789.h"
|
|
|
|
#define LCD_OFFSET_X 2
|
|
#define LCD_OFFSET_Y 34
|
|
#define LCD_WIDTH 320
|
|
#define LCD_HEIGHT 172
|
|
#define LETTER_SPACING 2
|
|
|
|
static inline void _set_pixel(uint16_t x, uint16_t y, uint16_t color) {
|
|
st7789_set_cursor(x, y);
|
|
st7789_put(color);
|
|
}
|
|
|
|
static inline void _draw_h_strip(uint16_t x, uint16_t y, uint16_t len, uint16_t color) {
|
|
st7789_caset(x, x + len - 1);
|
|
st7789_raset(y, y);
|
|
while (len--) {
|
|
st7789_put(color);
|
|
}
|
|
}
|
|
|
|
static inline void _draw_v_strip(uint16_t x, uint16_t y, uint16_t len, uint16_t color) {
|
|
st7789_caset(x, x);
|
|
st7789_raset(y, y + len - 1);
|
|
while (len--) {
|
|
st7789_put(color);
|
|
}
|
|
}
|
|
|
|
static inline void _fill_rectangle(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color) {
|
|
st7789_caset(x, x + w - 1);
|
|
st7789_raset(y, y + h - 1);
|
|
for (uint16_t i = 0; i < w * h; ++i) {
|
|
st7789_put(color);
|
|
}
|
|
}
|
|
|
|
inline void lcd_set_pixel(uint16_t x, uint16_t y, uint16_t color) {
|
|
x += LCD_OFFSET_X;
|
|
y += LCD_OFFSET_Y;
|
|
st7789_set_cursor(x, y);
|
|
st7789_put(color);
|
|
}
|
|
|
|
inline void lcd_fill_rectangle(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color) {
|
|
x += LCD_OFFSET_X;
|
|
y += LCD_OFFSET_Y;
|
|
_fill_rectangle(x, y, w, h, color);
|
|
}
|
|
|
|
void lcd_draw_horizontal_digit_segment(uint16_t x, uint16_t y, uint16_t color);
|
|
void lcd_draw_vertical_digit_segment(uint16_t x, uint16_t y, uint16_t color);
|
|
void lcd_draw_horizontal_small_digit_segment(uint16_t x, uint16_t y, uint16_t color);
|
|
void lcd_draw_vertical_small_digit_segment(uint16_t x, uint16_t y, uint16_t color);
|
|
void lcd_draw_horizontal_xsmall_digit_segment(uint16_t x, uint16_t y, uint16_t color);
|
|
void lcd_draw_vertical_xsmall_digit_segment(uint16_t x, uint16_t y, uint16_t color);
|
|
void lcd_draw_digit(uint8_t digit, uint16_t x, uint16_t y, uint16_t color, uint16_t bgColor);
|
|
void lcd_draw_small_digit(uint8_t digit, uint16_t x, uint16_t y, uint16_t color, uint16_t bgColor);
|
|
void lcd_draw_xsmall_digit(uint8_t digit, uint16_t x, uint16_t y, uint16_t color, uint16_t bgColor);
|
|
void lcd_draw_decimal_point(uint16_t x, uint16_t y, uint16_t color);
|
|
void lcd_write_string(const char *string, uint16_t x, uint16_t y, uint16_t color, uint16_t bgColor);
|
|
int lcd_string_width(const char *string);
|
|
|
|
#endif
|