Implement lcd_display_text

This commit is contained in:
xoreo
2023-11-10 19:03:42 +01:00
parent 4ea21bc4cf
commit 94875d729a
3 changed files with 109 additions and 64 deletions

View File

@@ -7,39 +7,49 @@
#ifndef INC_LCD_API_H_
#define INC_LCD_API_H_
#include <stdbool.h>
#include <string.h>
#include <ctype.h>
#include "../../Drivers/BSP/STM32746G-Discovery/stm32746g_discovery_lcd.h"
#define BLUE LCD_COLOR_BLUE
#define GREEN LCD_COLOR_GREEN
#define RED LCD_COLOR_RED
#define CYAN LCD_COLOR_CYAN
#define MAGENTA LCD_COLOR_MAGENTA
#define YELLOW LCD_COLOR_YELLOW
#define LIGHTBLUE LCD_COLOR_LIGHTBLUE
#define LIGHTGREEN LCD_COLOR_LIGHTGREEN
#define LIGHTRED LCD_COLOR_LIGHTRED
#define LIGHTCYAN LCD_COLOR_LIGHTCYAN
#define LIGHTMAGENTA LCD_COLOR_LIGHTMAGENTA
#define LIGHTYELLOW LCD_COLOR_LIGHTYELLOW
#define DARKBLUE LCD_COLOR_DARKBLUE
#define DARKGREEN LCD_COLOR_DARKGREEN
#define DARKRED LCD_COLOR_DARKRED
#define DARKCYAN LCD_COLOR_DARKCYAN
#define DARKMAGENTA LCD_COLOR_DARKMAGENTA
#define DARKYELLOW LCD_COLOR_DARKYELLOW
#define WHITE LCD_COLOR_WHITE
#define LIGHTGRAY LCD_COLOR_LIGHTGRAY
#define GRAY LCD_COLOR_GRAY
#define DARKGRAY LCD_COLOR_DARKGRAY
#define BLACK LCD_COLOR_BLACK
#define BROWN LCD_COLOR_BROWN
#define ORANGE LCD_COLOR_ORANGE
#define TRANSPARENT LCD_COLOR_TRANSPARENT
#define LCD_BLUE LCD_COLOR_BLUE
#define LCD_GREEN LCD_COLOR_GREEN
#define LCD_RED LCD_COLOR_RED
#define LCD_CYAN LCD_COLOR_CYAN
#define LCD_MAGENTA LCD_COLOR_MAGENTA
#define LCD_YELLOW LCD_COLOR_YELLOW
#define LCD_LIGHTBLUE LCD_COLOR_LIGHTBLUE
#define LCD_LIGHTGREEN LCD_COLOR_LIGHTGREEN
#define LCD_LIGHTRED LCD_COLOR_LIGHTRED
#define LCD_LIGHTCYAN LCD_COLOR_LIGHTCYAN
#define LCD_LIGHTMAGENTA LCD_COLOR_LIGHTMAGENTA
#define LCD_LIGHTYELLOW LCD_COLOR_LIGHTYELLOW
#define LCD_DARKBLUE LCD_COLOR_DARKBLUE
#define LCD_DARKGREEN LCD_COLOR_DARKGREEN
#define LCD_DARKRED LCD_COLOR_DARKRED
#define LCD_DARKCYAN LCD_COLOR_DARKCYAN
#define LCD_DARKMAGENTA LCD_COLOR_DARKMAGENTA
#define LCD_DARKYELLOW LCD_COLOR_DARKYELLOW
#define LCD_WHITE LCD_COLOR_WHITE
#define LCD_LIGHTGRAY LCD_COLOR_LIGHTGRAY
#define LCD_GRAY LCD_COLOR_GRAY
#define LCD_DARKGRAY LCD_COLOR_DARKGRAY
#define LCD_BLACK LCD_COLOR_BLACK
#define LCD_BROWN LCD_COLOR_BROWN
#define LCD_ORANGE LCD_COLOR_ORANGE
#define LCD_TRANSPARENT LCD_COLOR_TRANSPARENT
#define LCD_ARGB8888 0x00000000U
#define LCD_RGB888 0x00000001U
#define LCD_RGB565 0x00000002U
#define LCD_ARGB1555 0x00000003U
#define LCD_FONT8 &Font8
#define LCD_FONT12 &Font12
#define LCD_FONT16 &Font16
#define LCD_FONT20 &Font20
#define LCD_FONT24 &Font24
#define ARGB8888 0x00000000U
#define RGB888 0x00000001U
#define RGB565 0x00000002U
#define ARGB1555 0x00000003U
extern LTDC_HandleTypeDef hLtdcHandler;
@@ -47,35 +57,40 @@ extern LTDC_HandleTypeDef hLtdcHandler;
* @brief Initialise LCD
* Initialise the LCD screen with BackLight on or not
*
* @param[in] Bool to enable or disable the LCD backlight
* @param[in] bl_on Bool to enable or disable the LCD backlight
*
*/
void lcd_init(bool BL_on);
void lcd_init(bool bl_on);
/**
* @brief Display text
* Display text on the LCD screen in a certain color
* Display text on the LCD screen in a certain color. When text width exceeds BSP_LCD_GetXSize(),
* a text wrap will be performed. If the text wrap is between two letters in a word, the '-' character
* will be injected.
*
* @param[in] C-style text string to display on the LCD screen
* @param[in] X-position
* @param[in] Y-position
* @param[in] Color in which the text will be displayed, see preset colors in defines above
* @param[in] text C-style text string to display on the LCD screen
* @param[in] x_pos X-position
* @param[in] y_pos Y-position
* @param[in] color Color in which the text will be displayed, see preset colors in defines above
* @param[in] bg_color Background color for the text
* @param[in] font Font size, see defines above in file
*/
void lcd_display_text(const char* text, uint16_t x_pos, uint16_t y_pos, uint32_t color);
void lcd_display_text(const char* text, uint16_t x_pos, uint16_t y_pos, uint32_t color, uint32_t bg_color, sFONT *font);
/**
* @brief Draw BMP image on screen
* Draw BMP image from C array to the LCD screen at position X, Y. In color mode ARGB8888, RGB888, RGB565 or ARGB1555
* Supports ARGB8888, RGB565, RGB888
*
* @author Wim Dams
*
* @param[in] * pSrc - C array containing the image data
* @param[in] X-position
* @param[in] Y-position
* @param[in] Width of image
* @param[in] Height of image
* @param[in] Color mode (see defined color modes above in file)
* @param[in] p_src C array containing the image data
* @param[in] x_pos X-position
* @param[in] y_pos Y-position
* @param[in] x_size Width of image
* @param[in] y_size Height of image
* @param[in] color_mode Color mode (see defined color modes above in file)
*/
void lcd_draw_bmp(const void* pSrc, uint32_t xPos, uint32_t yPos, uint32_t xSize, uint32_t ySize, uint32_t ColorMode);
void lcd_draw_bmp(const void* p_src, uint32_t x_pos, uint32_t y_pos, uint32_t x_size, uint32_t y_size, uint32_t color_mode);
#endif /* INC_LCD_API_H_ */