30#ifndef __ARM_2D_HELPER_FONT_H__
31#define __ARM_2D_HELPER_FONT_H__
35#include "arm_2d_helper.h"
42# pragma clang diagnostic push
43# pragma clang diagnostic ignored "-Wunknown-warning-option"
44# pragma clang diagnostic ignored "-Wreserved-identifier"
45# pragma clang diagnostic ignored "-Wmissing-declarations"
46# pragma clang diagnostic ignored "-Wpadded"
47#elif __IS_COMPILER_ARM_COMPILER_5__
48# pragma diag_suppress 64
49#elif __IS_COMPILER_GCC__
50# pragma GCC diagnostic push
51# pragma GCC diagnostic ignored "-Wformat="
52# pragma GCC diagnostic ignored "-Wpedantic"
53# pragma GCC diagnostic ignored "-Wpadded"
58#ifndef __GLCD_CFG_COLOUR_DEPTH__
59# warning Please specify the colour depth by defining the macro __GLCD_CFG_COLOUR_DEPTH__, default value 16 is used for now
60# define __GLCD_CFG_COLOUR_DEPTH__ 16
68#if __GLCD_CFG_COLOUR_DEPTH__ == 8
69# define COLOUR_INT_TYPE uint8_t
71#elif __GLCD_CFG_COLOUR_DEPTH__ == 16
72# define COLOUR_INT_TYPE uint16_t
74#elif __GLCD_CFG_COLOUR_DEPTH__ == 32
75# define COLOUR_INT_TYPE uint32_t
78# error Unsupported colour depth!
84#ifndef __GLCD_CFG_SCEEN_WIDTH__
85#warning Please specify the screen width by defining the macro __GLCD_CFG_SCEEN_WIDTH__, default value 320 is used for now
86#define __GLCD_CFG_SCEEN_WIDTH__ 320
89#ifndef __GLCD_CFG_SCEEN_HEIGHT__
90# warning Please specify the screen height by defining the macro __GLCD_CFG_SCEEN_HEIGHT__, default value 240 is used for now
91# define __GLCD_CFG_SCEEN_HEIGHT__ 320
102#define arm_lcd_banner_printf(__REGION, __FONT_PTR, __FORMAT_STR, ...) \
104 if (NULL != (__FONT_PTR)) { \
105 arm_lcd_text_set_font((const arm_2d_font_t *)(__FONT_PTR)); \
107 arm_2d_region_t ARM_2D_SAFE_NAME(tTargetRegion) = (__REGION); \
108 arm_2d_align_centre( \
109 ARM_2D_SAFE_NAME(tTargetRegion), \
110 arm_lcd_get_string_line_box((__STR),(__FONT_PTR))) {\
111 arm_lcd_text_set_draw_region(&__centre_region); \
112 arm_lcd_printf(__FORMAT_STR, ##__VA_ARGS__); \
117#define __arm_print_banner3(__STR, __REGION, __FONT_PTR) \
119 if (NULL != (__FONT_PTR)) { \
120 arm_lcd_text_set_font((const arm_2d_font_t *)(__FONT_PTR)); \
122 arm_2d_region_t ARM_2D_SAFE_NAME(tTargetRegion) = (__REGION); \
123 arm_2d_align_centre( \
124 ARM_2D_SAFE_NAME(tTargetRegion), \
125 arm_lcd_get_string_line_box((__STR),(__FONT_PTR))) {\
126 arm_lcd_text_set_draw_region(&__centre_region); \
127 arm_lcd_puts(__STR); \
131#define __arm_print_banner2(__STR, __REGION) \
132 __arm_print_banner3(__STR, __REGION, NULL)
134#define __arm_print_banner1(__STR) \
136 arm_2d_tile_t *ARM_2D_SAFE_NAME(ptTile) \
137 = arm_2d_get_default_frame_buffer(); \
138 arm_2d_canvas(ARM_2D_SAFE_NAME(ptTile), __banner_canvas) { \
139 __arm_print_banner3(__STR, __banner_canvas, NULL); \
143#define arm_print_banner(...) \
144 ARM_CONNECT2( __arm_print_banner, \
145 __ARM_VA_NUM_ARGS(__VA_ARGS__))(__VA_ARGS__)
147#define arm_lcd_print_banner(...) arm_print_banner(__VA_ARGS__)
149#define arm_lcd_get_string_line_box(__STR, ...) \
150 __arm_lcd_get_string_line_box( \
152 (const arm_2d_font_t *)(NULL, ##__VA_ARGS__))
154#define IMPL_FONT_DRAW_CHAR(__NAME) \
155 arm_fsm_rt_t __NAME(const arm_2d_tile_t *ptTile, \
156 const arm_2d_region_t *ptRegion, \
157 const arm_2d_font_t *ptFont, \
158 arm_2d_tile_t *ptileChar, \
159 COLOUR_INT tForeColour, \
160 uint_fast8_t chOpacity, \
163#define IMPL_FONT_GET_CHAR_DESCRIPTOR(__NAME) \
164 arm_2d_char_descriptor_t *__NAME( \
165 const arm_2d_font_t *ptFont, \
166 arm_2d_char_descriptor_t *ptDescriptor, \
167 uint8_t *pchCharCode)
185 uint8_t *pchCharCode);
192 COLOUR_INT tForeColour,
193 uint_fast8_t chOpacity,
207 uint8_t chStartCode[4];
215 uint16_t hwDefaultCharIndex;
230arm_2d_font_get_char_descriptor_handler_t
231 ARM_2D_A1_FONT_GET_CHAR_DESCRIPTOR_HANDLER;
275 uint8_t *pchCharCode);
285int arm_lcd_printf(const
char *format, ...);
289void arm_lcd_puts_label( const
char *pchString,
295int arm_lcd_printf_label(
arm_2d_align_t tAlignment, const
char *format, ...);
298void arm_lcd_puts(const
char *str);
301void arm_lcd_text_location(uint8_t chY, uint8_t chX);
304void arm_lcd_text_reset_display_region_tracking(
void);
326 uint8_t **ppchCharCode,
327 uint_fast8_t chOpacity);
330void arm_lcd_putchar(const
char *str);
333void arm_lcd_text_set_colour( COLOUR_INT wForeground,
334 COLOUR_INT wBackground);
337void arm_lcd_text_set_opacity(uint8_t chOpacity);
340void arm_lcd_text_set_scale(
float fScale);
352void arm_lcd_text_set_target_framebuffer(const
arm_2d_tile_t *ptFrameBuffer);
377IMPL_FONT_DRAW_CHAR(__arm_2d_lcd_text_default_a8_font_draw_char);
380IMPL_FONT_DRAW_CHAR(__arm_2d_lcd_text_default_a4_font_draw_char);
383IMPL_FONT_DRAW_CHAR(__arm_2d_lcd_text_default_a2_font_draw_char);
386IMPL_FONT_DRAW_CHAR(__arm_2d_lcd_text_default_a1_font_draw_char);
390#if defined(__clang__)
391# pragma clang diagnostic pop
392#elif __IS_COMPILER_GCC__
393# pragma GCC diagnostic pop