Mercurial > public > ostc4
diff Discovery/Inc/gfx_engine.h @ 38:5f11787b4f42
include in ostc4 repository
author | heinrichsweikamp |
---|---|
date | Sat, 28 Apr 2018 11:52:34 +0200 |
parents | |
children | 87d54b4fd946 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Discovery/Inc/gfx_engine.h Sat Apr 28 11:52:34 2018 +0200 @@ -0,0 +1,208 @@ +/////////////////////////////////////////////////////////////////////////////// +/// -*- coding: UTF-8 -*- +/// +/// \file Discovery/Inc/gfx_engine.h +/// \brief DATA INPUT POSITION structure definition +/// \author heinrichs weikamp gmbh +/// \date 07-April-2014 +/// +/// $Id$ +/////////////////////////////////////////////////////////////////////////////// +/// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh +/// +/// This program is free software: you can redistribute it and/or modify +/// it under the terms of the GNU General Public License as published by +/// the Free Software Foundation, either version 3 of the License, or +/// (at your option) any later version. +/// +/// This program is distributed in the hope that it will be useful, +/// but WITHOUT ANY WARRANTY; without even the implied warranty of +/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +/// GNU General Public License for more details. +/// +/// You should have received a copy of the GNU General Public License +/// along with this program. If not, see <http://www.gnu.org/licenses/>. +////////////////////////////////////////////////////////////////////////////// + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef GFX_ENGINE_H +#define GFX_ENGINE_H + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f4xx_hal.h" +#include "gfx.h" + +/* Exported types ------------------------------------------------------------*/ + +/** +* @brief DATA INPUT POSITION structure definition +*/ + +typedef struct +{ + uint32_t FBStartAdress; /*!< Configures the color frame buffer address */ + uint16_t ImageWidth; /*!< Configures the color frame buffer line length. + This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0x1FFF. */ + uint16_t ImageHeight; /*!< Specifies the number of line in frame buffer. + This parameter must be a number between Min_Data = 0x000 and Max_Data = 0x7FF. */ + uint8_t LayerIndex; +} GFX_DrawCfgScreen; + + +typedef struct +{ + uint16_t WindowX0; /*!< Configures the Window vertical Start Position. + This parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF. */ + uint16_t WindowX1; /*!< Configures the Window vertical Stop Position. + This parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF. */ + uint16_t WindowY0; /*!< Configures the Window Horizontal Start Position. + This parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF. */ + uint16_t WindowY1; /*!< Configures the Window Horizontal Stop Position. + This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */ + + uint16_t WindowTab; /*!< Configures the Window Horizontal Absolute Tab Position. + This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */ + + uint16_t WindowNumberOfTextLines; /*!< Configures the Number of Text Lines. + This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */ + + uint16_t WindowLineSpacing; /*!< Configures the Number of Text Lines. + This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */ + GFX_DrawCfgScreen *Image; +} GFX_DrawCfgWindow; + +typedef struct +{ + int left; + int right; + int top; + int bottom; +} SWindowGimpStyle; + +/* Exported variables --------------------------------------------------------*/ + +/** + * \001 center + * \002 right + * \003 doubleSize + * \004 NOP + * \005 checkbox checked + * \006 checkbox unchecked + * \007 invert \a + * \010 use color \b + * \011 tab \t + * \012 line feed \n + * \014 top align \f + * \015 carriage return \r + * \016 O:o O.o style + * \017 back to O font + * \020 color 0 + * ... + * \027 color 8 + * \026 color 11 + * \033 UNUSED \c ESC + * \034 monospaced space large size mode + * \035 standard space size mode + * \040 space == begin of text + * ... + * \x7F = \177 del = space with size of next char + * \x7F\x7F = \177\177 del del = space with size of next byte + * \x80 begin of TXT_Substring with Language support + */ + +/* Exported functions --------------------------------------------------------*/ + +void GFX_init(uint32_t * pDestinationOut); + +void GFX_helper_font_memory_list(const tFont *Font); + +void GFX_start_VSYNC_IRQ(void); +void GFX_change_LTDC(void); + +void GFX_SetFrameTop(uint32_t pDestination); +void GFX_SetFrameBottom(uint32_t pDestination, uint32_t x0, uint32_t y0, uint32_t width, uint32_t height); +void GFX_SetFramesTopBottom(uint32_t pTop, uint32_t pBottom, uint32_t heightBottom); + +uint32_t GFX_get_pActualFrameTop(void); +uint32_t GFX_get_pActualFrameBottom(void); + +//void GFX_SetFrameBuffer(uint32_t pDestination, uint32_t LayerIdx); +//void GFX_SetFrameBufferAndResize(uint32_t pDestination, uint32_t LayerIdx, uint32_t height); + +void GFX_SetWindowLayer0(uint32_t pDestination, int16_t XleftGimpStyle, int16_t XrightGimpStyle, int16_t YtopGimpStyle, int16_t YbottomGimpStyle); +void change_CLUT_entry(uint8_t entryToChange, uint8_t entryUsedForChange); + +uint16_t GFX_return_offset(const tFont *Font, char *pText, uint8_t position); + +void GFX_VGA_transform(uint32_t pSource, uint32_t pDestination); + +HAL_StatusTypeDef GFX_SetBackgroundColor(uint32_t LayerIdx, uint8_t red, uint8_t green, uint8_t blue); + +void GFX_LTDC_LayerTESTInit(uint16_t LayerIndex, uint32_t FB_Address); + +void GFX_fill_buffer(uint32_t pDestination, uint8_t alpha, uint8_t color); + +void GFX_clear_frame_immediately(uint32_t pDestination); +void GFX_clear_window_immediately(GFX_DrawCfgWindow* hgfx); + +//void GFX_draw_circle_with_MEMORY(uint8_t use_memory, GFX_DrawCfgScreen *hgfx, point_t center, uint8_t radius, int8_t color); +void GFX_draw_circle(GFX_DrawCfgScreen *hgfx, point_t center, uint8_t radius, int8_t color); +void GFX_draw_colorline(GFX_DrawCfgScreen *hgfx, point_t start, point_t stop, uint8_t color); +void GFX_draw_thick_line(uint8_t thickness, GFX_DrawCfgScreen *hgfx, point_t start, point_t stop, uint8_t color); +void GFX_draw_line(GFX_DrawCfgScreen *hgfx, point_t start, point_t stop, uint8_t color); +void GFX_draw_box2(GFX_DrawCfgScreen *hgfx, point_t start, point_t stop, uint8_t color, uint8_t roundCorners); +void GFX_draw_box(GFX_DrawCfgScreen *hgfx, point_t LeftLow, point_t WidthHeight, uint8_t Style, uint8_t color); +void GFX_draw_header(GFX_DrawCfgScreen *hgfx, uint8_t colorId); +void GFX_clean_line(GFX_DrawCfgWindow* hgfx, uint32_t line_number); +void GFX_clean_area(GFX_DrawCfgScreen *tMscreen, uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, uint16_t YBottomGimpStyle); + +uint32_t GFX_write_string(const tFont *Font, GFX_DrawCfgWindow* hgfx, const char *pText, uint32_t line_number); +uint32_t GFX_write_string_color(const tFont *Font, GFX_DrawCfgWindow* hgfx, const char *pText, uint32_t line_number, uint8_t color); +uint32_t GFX_write_label(const tFont *Font, GFX_DrawCfgWindow* hgfx, const char *pText, uint8_t color); +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); +void GFX_LTDC_Init(void); +void GFX_VGA_LTDC_Init(void); +void GFX_LTDC_LayerDefaultInit(uint16_t LayerIndex, uint32_t FB_Address); +void GFX_VGA_LTDC_LayerDefaultInit(uint16_t LayerIndex, uint32_t FB_Address); +void GFX_LTDC_LayerMenuBackgroundInit(uint32_t FB_Address); +//void GFX_ResetLayer(uint32_t LayerIdx); + +//void GFX_fill_full_image_ARGB8888_alternating_lines(GFX_DrawCfgWindow* hgfx, uint32_t color1, uint32_t color2); +//void GFX_fill_window_ARGB8888(GFX_DrawCfgWindow* hgfx, uint32_t color); + +//void GFX_copy_full_image_ARGB8888_to_RGB888(GFX_DrawCfgWindow* hgfx, uint32_t FBdestination); + +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); +void GFX_draw_Grid(GFX_DrawCfgScreen *hgfx, SWindowGimpStyle window, int vlines, float vdeltaline, int hlines, float hdeltalines, uint8_t color); + +uint32_t getFrame(uint8_t callerId); +uint32_t getFrameByNumber(uint8_t ZeroToMaxFrames); +uint8_t releaseFrame(uint8_t callerId, uint32_t frameStartAddress); +void GFX_forceReleaseFramesWithId(uint8_t callerId); +void releaseAllFramesExcept(uint8_t callerId, uint32_t frameStartAddress); +void housekeepingFrame(void); +uint16_t blockedFramesCount(void); +uint8_t getFrameCount(uint8_t frameId); + +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); +void gfx_write_topline_simple(GFX_DrawCfgScreen *tMscreen, const char *text, uint8_t color); +void gfx_write_page_number(GFX_DrawCfgScreen *tMscreen, uint8_t page, uint8_t total, uint8_t color); + +void GFX_draw_image_monochrome(GFX_DrawCfgScreen *hgfx, SWindowGimpStyle window, const tImage *image, uint8_t color); +void GFX_draw_image_color(GFX_DrawCfgScreen *hgfx, SWindowGimpStyle window, const tImage *image); +void GFX_logoAutoOff(void); +uint8_t GFX_logoStatus(void); +void GFX_hwBackgroundOn(void); +void GFX_hwBackgroundOff(void); + +uint8_t gfx_number_to_string(uint8_t max_digits, _Bool fill, char *pText, uint32_t number); + +void GFX_init1_no_DMA(uint32_t * pDestinationOut, uint8_t blockFrames); +void GFX_init2_DMA(void); + +uint8_t GFX_is_colorschemeDiveStandard(void); +void GFX_use_colorscheme(uint8_t colorscheme); + +void GFX_screenshot(void); + +#endif // GFX_ENGINE_H