microui  14.5.5
microui
ui_font_drawing.h
1 /*
2  * Copyright 2024-2026 MicroEJ Corp. All rights reserved.
3  * MicroEJ Corp. PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
4  */
5 
6 #if !defined UI_FONT_DRAWING_H
7 #define UI_FONT_DRAWING_H
8 
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
46 // --------------------------------------------------------------------------------
47 // Includes
48 // --------------------------------------------------------------------------------
49 
50 #include "ui_drawing.h"
51 
52 // --------------------------------------------------------------------------------
53 // Macros and Defines
54 // --------------------------------------------------------------------------------
55 
61 #define MICROUI_FONT_FORMAT_CUSTOM_0_FUNCTIONS_SUFFIX 0
62 #define MICROUI_FONT_FORMAT_CUSTOM_1_FUNCTIONS_SUFFIX 1
63 #define MICROUI_FONT_FORMAT_CUSTOM_2_FUNCTIONS_SUFFIX 2
64 #define MICROUI_FONT_FORMAT_CUSTOM_3_FUNCTIONS_SUFFIX 3
65 #define MICROUI_FONT_FORMAT_CUSTOM_4_FUNCTIONS_SUFFIX 4
66 #define MICROUI_FONT_FORMAT_CUSTOM_5_FUNCTIONS_SUFFIX 5
67 #define MICROUI_FONT_FORMAT_CUSTOM_6_FUNCTIONS_SUFFIX 6
68 #define MICROUI_FONT_FORMAT_CUSTOM_7_FUNCTIONS_SUFFIX 7
69 
74 #define GET_CUSTOM_FONT_FUNCTIONS_SUFFIX(format) CONCAT(format, _FUNCTIONS_SUFFIX)
75 
76 // --------------------------------------------------------------------------------
77 // API
78 // --------------------------------------------------------------------------------
79 
80 /*
81  * @brief Computes the rendered width of a string.
82  * @see UI_DRAWING_stringWidth
83  */
84 jint UI_FONT_DRAWING_stringWidth(jchar *chars, jint length, MICROUI_Font *font);
85 
97 jint UI_FONT_DRAWING_initializeRenderableStringSNIContext(jchar *chars, jint length, MICROUI_Font *font,
98  MICROUI_RenderableString *renderableString);
99 
100 /*
101  * @brief Draws a string.
102  * @see UI_DRAWING_drawString
103  */
104 DRAWING_Status UI_FONT_DRAWING_drawString(MICROUI_GraphicsContext *gc, jchar *chars, jint length, MICROUI_Font *font,
105  jint x, jint y);
106 
122 DRAWING_Status UI_FONT_DRAWING_drawRenderableString(MICROUI_GraphicsContext *gc, jchar *chars, jint length,
123  MICROUI_Font *font, jint width,
124  MICROUI_RenderableString *renderableString, jint x, jint y);
125 
126 /*
127  * @brief Draws a string applying a scaling.
128  * @see UI_DRAWING_drawScaledStringBilinear
129  */
130 DRAWING_Status UI_FONT_DRAWING_drawScaledStringBilinear(MICROUI_GraphicsContext *gc, jchar *chars, jint length,
131  MICROUI_Font *font, jint x, jint y, jfloat xRatio,
132  jfloat yRatio);
133 
134 /*
135  * @brief Draws a renderable string applying a scaling.
136  * @see UI_DRAWING_drawScaledRenderableStringBilinear
137  */
138 DRAWING_Status UI_FONT_DRAWING_drawScaledRenderableStringBilinear(MICROUI_GraphicsContext *gc, jchar *chars,
139  jint length, MICROUI_Font *font, jint width,
140  MICROUI_RenderableString *renderableString, jint x,
141  jint y, jfloat xRatio, jfloat yRatio);
142 
143 /*
144  * @brief Draws a character applying a rotation and an alpha value.
145  * @see UI_DRAWING_drawCharWithRotationBilinear
146  */
147 DRAWING_Status UI_FONT_DRAWING_drawCharWithRotationBilinear(MICROUI_GraphicsContext *gc, jchar c, MICROUI_Font *font,
148  jint x, jint y, jint xRotation, jint yRotation,
149  jfloat angle, jint alpha);
150 
151 /*
152  * @brief Draws a character applying a rotation and an alpha value.
153  * @see UI_DRAWING_drawCharWithRotationNearestNeighbor
154  */
155 DRAWING_Status UI_FONT_DRAWING_drawCharWithRotationNearestNeighbor(MICROUI_GraphicsContext *gc, jchar c,
156  MICROUI_Font *font, jint x, jint y, jint xRotation,
157  jint yRotation, jfloat angle, jint alpha);
158 
159 // --------------------------------------------------------------------------------
160 // EOF
161 // --------------------------------------------------------------------------------
162 
163 #ifdef __cplusplus
164 }
165 #endif
166 
167 #endif // UI_FONT_DRAWING_H