38
|
1 ///////////////////////////////////////////////////////////////////////////////
|
|
2 /// -*- coding: UTF-8 -*-
|
|
3 ///
|
|
4 /// \file Discovery/Inc/gfx_engine.h
|
|
5 /// \brief DATA INPUT POSITION structure definition
|
|
6 /// \author heinrichs weikamp gmbh
|
|
7 /// \date 07-April-2014
|
|
8 ///
|
|
9 /// $Id$
|
|
10 ///////////////////////////////////////////////////////////////////////////////
|
|
11 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh
|
|
12 ///
|
|
13 /// This program is free software: you can redistribute it and/or modify
|
|
14 /// it under the terms of the GNU General Public License as published by
|
|
15 /// the Free Software Foundation, either version 3 of the License, or
|
|
16 /// (at your option) any later version.
|
|
17 ///
|
|
18 /// This program is distributed in the hope that it will be useful,
|
|
19 /// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
21 /// GNU General Public License for more details.
|
|
22 ///
|
|
23 /// You should have received a copy of the GNU General Public License
|
|
24 /// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
25 //////////////////////////////////////////////////////////////////////////////
|
|
26
|
|
27 /* Define to prevent recursive inclusion -------------------------------------*/
|
|
28 #ifndef GFX_ENGINE_H
|
|
29 #define GFX_ENGINE_H
|
|
30
|
|
31 /* Includes ------------------------------------------------------------------*/
|
|
32 #include "stm32f4xx_hal.h"
|
|
33 #include "gfx.h"
|
|
34
|
|
35 /* Exported types ------------------------------------------------------------*/
|
|
36
|
|
37 /**
|
|
38 * @brief DATA INPUT POSITION structure definition
|
|
39 */
|
|
40
|
|
41 typedef struct
|
|
42 {
|
|
43 uint32_t FBStartAdress; /*!< Configures the color frame buffer address */
|
|
44 uint16_t ImageWidth; /*!< Configures the color frame buffer line length.
|
|
45 This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0x1FFF. */
|
|
46 uint16_t ImageHeight; /*!< Specifies the number of line in frame buffer.
|
|
47 This parameter must be a number between Min_Data = 0x000 and Max_Data = 0x7FF. */
|
|
48 uint8_t LayerIndex;
|
|
49 } GFX_DrawCfgScreen;
|
|
50
|
|
51
|
|
52 typedef struct
|
|
53 {
|
|
54 uint16_t WindowX0; /*!< Configures the Window vertical Start Position.
|
|
55 This parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF. */
|
|
56 uint16_t WindowX1; /*!< Configures the Window vertical Stop Position.
|
|
57 This parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF. */
|
|
58 uint16_t WindowY0; /*!< Configures the Window Horizontal Start Position.
|
|
59 This parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF. */
|
|
60 uint16_t WindowY1; /*!< Configures the Window Horizontal Stop Position.
|
|
61 This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */
|
|
62
|
|
63 uint16_t WindowTab; /*!< Configures the Window Horizontal Absolute Tab Position.
|
|
64 This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */
|
|
65
|
|
66 uint16_t WindowNumberOfTextLines; /*!< Configures the Number of Text Lines.
|
|
67 This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */
|
|
68
|
|
69 uint16_t WindowLineSpacing; /*!< Configures the Number of Text Lines.
|
|
70 This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */
|
|
71 GFX_DrawCfgScreen *Image;
|
|
72 } GFX_DrawCfgWindow;
|
|
73
|
|
74 typedef struct
|
|
75 {
|
|
76 int left;
|
|
77 int right;
|
|
78 int top;
|
|
79 int bottom;
|
|
80 } SWindowGimpStyle;
|
|
81
|
|
82 /* Exported variables --------------------------------------------------------*/
|
|
83
|
|
84 /**
|
|
85 * \001 center
|
|
86 * \002 right
|
|
87 * \003 doubleSize
|
|
88 * \004 NOP
|
|
89 * \005 checkbox checked
|
|
90 * \006 checkbox unchecked
|
|
91 * \007 invert \a
|
|
92 * \010 use color \b
|
|
93 * \011 tab \t
|
|
94 * \012 line feed \n
|
|
95 * \014 top align \f
|
|
96 * \015 carriage return \r
|
|
97 * \016 O:o O.o style
|
|
98 * \017 back to O font
|
|
99 * \020 color 0
|
|
100 * ...
|
|
101 * \027 color 8
|
|
102 * \026 color 11
|
|
103 * \033 UNUSED \c ESC
|
|
104 * \034 monospaced space large size mode
|
|
105 * \035 standard space size mode
|
|
106 * \040 space == begin of text
|
|
107 * ...
|
|
108 * \x7F = \177 del = space with size of next char
|
|
109 * \x7F\x7F = \177\177 del del = space with size of next byte
|
|
110 * \x80 begin of TXT_Substring with Language support
|
|
111 */
|
|
112
|
|
113 /* Exported functions --------------------------------------------------------*/
|
|
114
|
|
115 void GFX_init(uint32_t * pDestinationOut);
|
|
116
|
|
117 void GFX_helper_font_memory_list(const tFont *Font);
|
|
118
|
|
119 void GFX_start_VSYNC_IRQ(void);
|
|
120 void GFX_change_LTDC(void);
|
|
121
|
|
122 void GFX_SetFrameTop(uint32_t pDestination);
|
|
123 void GFX_SetFrameBottom(uint32_t pDestination, uint32_t x0, uint32_t y0, uint32_t width, uint32_t height);
|
|
124 void GFX_SetFramesTopBottom(uint32_t pTop, uint32_t pBottom, uint32_t heightBottom);
|
|
125
|
|
126 uint32_t GFX_get_pActualFrameTop(void);
|
|
127 uint32_t GFX_get_pActualFrameBottom(void);
|
|
128
|
|
129 //void GFX_SetFrameBuffer(uint32_t pDestination, uint32_t LayerIdx);
|
|
130 //void GFX_SetFrameBufferAndResize(uint32_t pDestination, uint32_t LayerIdx, uint32_t height);
|
|
131
|
|
132 void GFX_SetWindowLayer0(uint32_t pDestination, int16_t XleftGimpStyle, int16_t XrightGimpStyle, int16_t YtopGimpStyle, int16_t YbottomGimpStyle);
|
|
133 void change_CLUT_entry(uint8_t entryToChange, uint8_t entryUsedForChange);
|
|
134
|
|
135 uint16_t GFX_return_offset(const tFont *Font, char *pText, uint8_t position);
|
|
136
|
|
137 void GFX_VGA_transform(uint32_t pSource, uint32_t pDestination);
|
|
138
|
|
139 HAL_StatusTypeDef GFX_SetBackgroundColor(uint32_t LayerIdx, uint8_t red, uint8_t green, uint8_t blue);
|
|
140
|
|
141 void GFX_LTDC_LayerTESTInit(uint16_t LayerIndex, uint32_t FB_Address);
|
|
142
|
|
143 void GFX_fill_buffer(uint32_t pDestination, uint8_t alpha, uint8_t color);
|
|
144
|
|
145 void GFX_clear_frame_immediately(uint32_t pDestination);
|
|
146 void GFX_clear_window_immediately(GFX_DrawCfgWindow* hgfx);
|
|
147
|
|
148 //void GFX_draw_circle_with_MEMORY(uint8_t use_memory, GFX_DrawCfgScreen *hgfx, point_t center, uint8_t radius, int8_t color);
|
|
149 void GFX_draw_circle(GFX_DrawCfgScreen *hgfx, point_t center, uint8_t radius, int8_t color);
|
|
150 void GFX_draw_colorline(GFX_DrawCfgScreen *hgfx, point_t start, point_t stop, uint8_t color);
|
|
151 void GFX_draw_thick_line(uint8_t thickness, GFX_DrawCfgScreen *hgfx, point_t start, point_t stop, uint8_t color);
|
|
152 void GFX_draw_line(GFX_DrawCfgScreen *hgfx, point_t start, point_t stop, uint8_t color);
|
|
153 void GFX_draw_box2(GFX_DrawCfgScreen *hgfx, point_t start, point_t stop, uint8_t color, uint8_t roundCorners);
|
|
154 void GFX_draw_box(GFX_DrawCfgScreen *hgfx, point_t LeftLow, point_t WidthHeight, uint8_t Style, uint8_t color);
|
|
155 void GFX_draw_header(GFX_DrawCfgScreen *hgfx, uint8_t colorId);
|
|
156 void GFX_clean_line(GFX_DrawCfgWindow* hgfx, uint32_t line_number);
|
|
157 void GFX_clean_area(GFX_DrawCfgScreen *tMscreen, uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, uint16_t YBottomGimpStyle);
|
|
158
|
|
159 uint32_t GFX_write_string(const tFont *Font, GFX_DrawCfgWindow* hgfx, const char *pText, uint32_t line_number);
|
|
160 uint32_t GFX_write_string_color(const tFont *Font, GFX_DrawCfgWindow* hgfx, const char *pText, uint32_t line_number, uint8_t color);
|
|
161 uint32_t GFX_write_label(const tFont *Font, GFX_DrawCfgWindow* hgfx, const char *pText, uint8_t color);
|
|
162 void Gfx_write_label_var(GFX_DrawCfgScreen *screenInput, uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const uint8_t color, const char *text);
|
|
163 void GFX_LTDC_Init(void);
|
|
164 void GFX_VGA_LTDC_Init(void);
|
|
165 void GFX_LTDC_LayerDefaultInit(uint16_t LayerIndex, uint32_t FB_Address);
|
|
166 void GFX_VGA_LTDC_LayerDefaultInit(uint16_t LayerIndex, uint32_t FB_Address);
|
|
167 void GFX_LTDC_LayerMenuBackgroundInit(uint32_t FB_Address);
|
|
168 //void GFX_ResetLayer(uint32_t LayerIdx);
|
|
169
|
|
170 //void GFX_fill_full_image_ARGB8888_alternating_lines(GFX_DrawCfgWindow* hgfx, uint32_t color1, uint32_t color2);
|
|
171 //void GFX_fill_window_ARGB8888(GFX_DrawCfgWindow* hgfx, uint32_t color);
|
|
172
|
|
173 //void GFX_copy_full_image_ARGB8888_to_RGB888(GFX_DrawCfgWindow* hgfx, uint32_t FBdestination);
|
|
174
|
|
175 void GFX_graph_print(GFX_DrawCfgScreen *hgfx, const SWindowGimpStyle *window, int16_t drawVeilUntil, uint8_t Xdivide, uint16_t dataMin, uint16_t dataMax, uint16_t *data, uint16_t datalength, uint8_t color, uint8_t *colour_data);
|
|
176 void GFX_draw_Grid(GFX_DrawCfgScreen *hgfx, SWindowGimpStyle window, int vlines, float vdeltaline, int hlines, float hdeltalines, uint8_t color);
|
|
177
|
|
178 uint32_t getFrame(uint8_t callerId);
|
|
179 uint32_t getFrameByNumber(uint8_t ZeroToMaxFrames);
|
|
180 uint8_t releaseFrame(uint8_t callerId, uint32_t frameStartAddress);
|
|
181 void GFX_forceReleaseFramesWithId(uint8_t callerId);
|
|
182 void releaseAllFramesExcept(uint8_t callerId, uint32_t frameStartAddress);
|
|
183 void housekeepingFrame(void);
|
|
184 uint16_t blockedFramesCount(void);
|
|
185 uint8_t getFrameCount(uint8_t frameId);
|
|
186
|
|
187 void write_content_simple(GFX_DrawCfgScreen *tMscreen, uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const char *text, uint8_t color);
|
|
188 void gfx_write_topline_simple(GFX_DrawCfgScreen *tMscreen, const char *text, uint8_t color);
|
|
189 void gfx_write_page_number(GFX_DrawCfgScreen *tMscreen, uint8_t page, uint8_t total, uint8_t color);
|
|
190
|
|
191 void GFX_draw_image_monochrome(GFX_DrawCfgScreen *hgfx, SWindowGimpStyle window, const tImage *image, uint8_t color);
|
|
192 void GFX_draw_image_color(GFX_DrawCfgScreen *hgfx, SWindowGimpStyle window, const tImage *image);
|
|
193 void GFX_logoAutoOff(void);
|
|
194 uint8_t GFX_logoStatus(void);
|
|
195 void GFX_hwBackgroundOn(void);
|
|
196 void GFX_hwBackgroundOff(void);
|
|
197
|
|
198 uint8_t gfx_number_to_string(uint8_t max_digits, _Bool fill, char *pText, uint32_t number);
|
|
199
|
|
200 void GFX_init1_no_DMA(uint32_t * pDestinationOut, uint8_t blockFrames);
|
|
201 void GFX_init2_DMA(void);
|
|
202
|
|
203 uint8_t GFX_is_colorschemeDiveStandard(void);
|
|
204 void GFX_use_colorscheme(uint8_t colorscheme);
|
|
205
|
|
206 void GFX_screenshot(void);
|
|
207
|
|
208 #endif // GFX_ENGINE_H
|