annotate Discovery/Src/gfx_engine.c @ 870:bc6c90e20d9e Evo_2_23

Instrument code for Bootloader: the Bootloader was reactivated. Because some functions have changed in the past years an instrumentation had to be done to avoid compile issues (e.g. no multilanguage in Bootloader, no special fonts)
author Ideenmodellierer
date Mon, 12 Aug 2024 22:25:46 +0200
parents b7e43b28bee1
children e373e90a48db
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3 * @file gfx_engine.c
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
4 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
5 * @version V0.0.2
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
6 * @date 30-April-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
7 * @brief Main source file of GFX Graphic Engine
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
8 * This file provides firmware functions to manage the following
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
9 * functions to draw on the screen:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
10 * + write string to display
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
11 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
12 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
13 * @attention
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
14 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
15 * <h2><center>&copy; COPYRIGHT(c) 2014 heinrichs weikamp</center></h2>
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
16 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
17 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
18 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
19
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
20 /* Includes ------------------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
21
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
22 #include <stdlib.h>
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
23 #include <stdint.h>
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
24
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
25 #include "stm32f4xx_hal.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
26
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
27 #include "gfx.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
28 #include "gfx_engine.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
29 #include "gfx_fonts.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
30 #include "gfx_colors.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
31 #include "ostc.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
32 #include "settings.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
33 #include "text_multilanguage.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
34
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
35 /* Exported variables --------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
36
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
37 /* Private types -------------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
38
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
39 #define RING_BUF_SIZE (5u)
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
40 #define MAX_COLOR_STRING_LENGTH (100u)
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
41
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
42 typedef struct
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
43 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
44 uint32_t Xdelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
45 uint32_t Ydelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
46 uint8_t invert;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
47 uint8_t color;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
48 uint8_t dualFont;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
49 uint8_t resize;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
50 uint32_t font;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
51 uint8_t spaceMode;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
52 uint8_t singleSpaceWithSizeOfNextChar;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
53 uint8_t useTinyFont;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
54 uint32_t TinyFont;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
55 int8_t TinyFontExtraYdelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
56 tFont *actualFont;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
57 uint8_t doubleSize;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
58 } GFX_CfgWriteString;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
59
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
60 typedef struct
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
61 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
62 uint32_t pBuffer;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
63 uint32_t height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
64 uint32_t width;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
65 uint32_t leftStart;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
66 uint32_t bottomStart;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
67 } GFX_layerSingle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
68 /*
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
69 typedef struct
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
70 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
71 GFX_layerSingle top;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
72 GFX_layerSingle bottom;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
73 } GFX_layersTopBottom;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
74 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
75 typedef struct
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
76 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
77 uint32_t pActualTopBuffer;
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
78 uint32_t pNextTopBuffer[RING_BUF_SIZE];
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
79 GFX_layerSingle actualBottom;
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
80 GFX_layerSingle nextBottom[RING_BUF_SIZE];
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
81 uint8_t NextTopWrite;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
82 uint8_t NextBottomWrite;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
83 uint8_t NextTopRead;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
84 uint8_t NextBottomRead;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
85 } GFX_layerControl;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
86
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
87 typedef struct
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
88 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
89 uint32_t StartAddress;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
90 int8_t status;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
91 uint8_t caller;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
92 } SFrameList;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
93
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
94 enum FRAMESTATE
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
95 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
96 CLEAR = 0,
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
97 BLOCKED,
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
98 RELEASED
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
99 };
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
100
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
101 enum LOGOSTATE
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
102 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
103 LOGOOFF = 0,
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
104 LOGOSTART = 1,
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
105 LOGOSTOP = 255
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
106 };
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
107
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
108 // should be 43
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
109 #define MAXFRAMES 39
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
110
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
111 #define SDRAM_BANK_ADDR ((uint32_t)0xD0000000)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
112 #define FBGlobalStart SDRAM_BANK_ADDR
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
113 #define FBOffsetEachIndex (800*480*2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
114
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
115 #define SDRAM_DOUBLE_BUFFER_ONE ((uint32_t)(FBGlobalStart + (MAXFRAMES * FBOffsetEachIndex)))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
116 #define SDRAM_DOUBLE_BUFFER_TWO ((uint32_t)(SDRAM_DOUBLE_BUFFER_ONE + (2 * FBOffsetEachIndex)))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
117 #define SDRAM_DOUBLE_BUFFER_END ((uint32_t)(SDRAM_DOUBLE_BUFFER_TWO + (2 * FBOffsetEachIndex)))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
118
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
119 /* Semi Private variables ---------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
120
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
121 DMA2D_HandleTypeDef Dma2dHandle;
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
122 static LTDC_HandleTypeDef LtdcHandle;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
123
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
124 /* Private variables ---------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
125
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
126 static uint8_t DMA2D_at_work = 0;
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
127
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
128 static GFX_layerControl FrameHandler = { 0 };
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
129
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
130 static uint32_t pInvisibleFrame = 0;
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
131 static uint32_t pLogoFrame = 0;
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
132 static uint8_t logoStatus;
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
133 static uint32_t pBackgroundHwFrame = 0;
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
134 static uint8_t backgroundHwStatus;
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
135
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
136 static SFrameList frame[MAXFRAMES];
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
137
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
138 static void GFX_clear_frame_immediately(uint32_t pDestination);
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
139 static void GFX_draw_image_color(GFX_DrawCfgScreen *hgfx, SWindowGimpStyle window, const tImage *image);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
140 /* ITM Trace-----------------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
141
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
142 #include "stdio.h"
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
143
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
144 #define ITM_Port8(n) (*((volatile unsigned char *)(0xE0000000+4*n)))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
145 #define ITM_Port16(n) (*((volatile unsigned short*)(0xE0000000+4*n)))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
146 #define ITM_Port32(n) (*((volatile unsigned long *)(0xE0000000+4*n)))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
147
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
148 #define DEMCR (*((volatile unsigned long *)(0xE000EDFC)))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
149 #define TRCENA 0x01000000
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
150
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
151 struct __FILE { int handle; /* Add whatever needed */ };
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
152 FILE __stdout;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
153 FILE __stdin;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
154
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
155 int fputc(int ch, FILE *f) {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
156 if (DEMCR & TRCENA) {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
157 while (ITM_Port32(0) == 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
158 ITM_Port8(0) = ch;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
159 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
160 return(ch);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
161 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
162
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
163 uint32_t MinU32GFX(uint32_t a, uint32_t b)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
164 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
165 return ((a<b)?a:b);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
166 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
167
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
168
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
169 uint32_t MaxU32GFX(uint32_t a, uint32_t b)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
170 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
171 return((a>b)?a:b);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
172 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
173
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
174 /* Private function prototypes -----------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
175
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
176 static uint32_t GFX_write_char(GFX_DrawCfgWindow* hgfx, GFX_CfgWriteString* cfg, uint8_t character, tFont *Font);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
177 static uint32_t GFX_write_substring(GFX_CfgWriteString* cfg, GFX_DrawCfgWindow* hgfx, uint8_t textId, int8_t nextCharFor2Byte);
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
178 static uint32_t GFX_write__Modify_Xdelta__Centered(GFX_CfgWriteString* cfg, GFX_DrawCfgWindow* hgfx, const char *pText);
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
179 static uint32_t GFX_write__Modify_Xdelta__RightAlign(GFX_CfgWriteString* cfg, GFX_DrawCfgWindow* hgfx, const char *pTextInput);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
180 static void GFX_Error_Handler(void);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
181 static void GFX_Dma2d_TransferComplete(DMA2D_HandleTypeDef* Dma2dHandle);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
182 static void GFX_Dma2d_TransferError(DMA2D_HandleTypeDef* Dma2dHandle);
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
183 static void GFX_clear_frame_dma2d(uint8_t frameId);
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
184
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
185 static uint32_t GFX_doubleBufferOne(void);
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
186 static uint32_t GFX_doubleBufferTwo(void);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
187
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
188
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
189 /* Exported functions --------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
190
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
191 uint8_t GFX_logoStatus(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
192 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
193 return logoStatus;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
194 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
195
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
196 void GFX_SetWindowLayer0(uint32_t pDestination, int16_t XleftGimpStyle, int16_t XrightGimpStyle, int16_t YtopGimpStyle, int16_t YbottomGimpStyle)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
197 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
198 int16_t XSize, YSize, X0, Y0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
199
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
200 if(XleftGimpStyle < 0) XleftGimpStyle = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
201 if(XrightGimpStyle < 0) XrightGimpStyle = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
202 if(XleftGimpStyle > 799) XleftGimpStyle = 800;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
203 if(XrightGimpStyle > 799) XrightGimpStyle = 800;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
204
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
205 if(YtopGimpStyle < 0) YtopGimpStyle = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
206 if(YbottomGimpStyle < 0) YbottomGimpStyle = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
207 if(YtopGimpStyle > 479) YtopGimpStyle = 480;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
208 if(YbottomGimpStyle > 479) YbottomGimpStyle = 480;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
209
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
210 /*
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
211 XSize = YbottomGimpStyle - YtopGimpStyle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
212 YSize = XrightGimpStyle - XleftGimpStyle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
213 if((XSize <= 0) || (YSize <= 0))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
214 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
215 X0 = 479 - YbottomGimpStyle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
216 Y0 = XleftGimpStyle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
217 while((LTDC->CPSR & LTDC_CPSR_CYPOS) <= (uint32_t)800);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
218 HAL_LTDC_SetWindowSize(&LtdcHandle, XSize, YSize, LayerIdx);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
219 HAL_LTDC_SetWindowPosition(&LtdcHandle, X0, Y0,LayerIdx);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
220 HAL_LTDC_SetAddress(&LtdcHandle, pDestination, LayerIdx);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
221 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
222
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
223 XSize = XrightGimpStyle - XleftGimpStyle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
224 YSize = YbottomGimpStyle - YtopGimpStyle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
225 if((XSize <= 0) || (YSize <= 0))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
226 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
227 Y0 = 479 - YbottomGimpStyle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
228 X0 = XleftGimpStyle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
229
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
230 GFX_SetFrameBottom(pDestination, X0, Y0, XSize, YSize);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
231 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
232
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
233
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
234 void GFX_logoAutoOff(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
235 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
236 if(logoStatus == LOGOOFF)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
237 logoStatus = LOGOSTART;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
238 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
239
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
240
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
241 void GFX_hwBackgroundOn(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
242 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
243 backgroundHwStatus = LOGOSTART;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
244 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
245
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
246
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
247 void GFX_hwBackgroundOff(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
248 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
249 backgroundHwStatus = LOGOSTOP;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
250 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
251
314
e141b571a03d Reinitialize logos after flip of display
ideenmodellierer
parents: 297
diff changeset
252 void GFX_build_hw_background_frame(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
253 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
254 GFX_DrawCfgScreen tLogoTemp;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
255 SWindowGimpStyle windowGimp;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
256
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
257 pBackgroundHwFrame = getFrame(1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
258 backgroundHwStatus = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
259
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
260 tLogoTemp.FBStartAdress = pBackgroundHwFrame;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
261 tLogoTemp.ImageHeight = 480;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
262 tLogoTemp.ImageWidth = 800;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
263 tLogoTemp.LayerIndex = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
264
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
265 windowGimp.left = (800 - 400) / 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
266 windowGimp.top = 0;//(480 - 46) / 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
267
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
268 GFX_draw_image_color(&tLogoTemp, windowGimp, &ImgHWcolor);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
269 /*
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
270 char localtext[256];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
271 uint8_t ptr = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
272
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
273 localtext[ptr++] = ' ';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
274 localtext[ptr++] = ' ';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
275 localtext[ptr++] = 'O';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
276 localtext[ptr++] = 'S';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
277 localtext[ptr++] = ' ';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
278 ptr += GFX_printf_firmware(&localtext[ptr]);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
279 localtext[ptr] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
280
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
281 write_content_simple(&tLogoTemp, 0, 800, 240-24, &FontT24,localtext,CLUT_Font020);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
282 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
283 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
284
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
285
314
e141b571a03d Reinitialize logos after flip of display
ideenmodellierer
parents: 297
diff changeset
286 void GFX_build_logo_frame(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
287 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
288 GFX_DrawCfgScreen tLogoTemp;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
289 SWindowGimpStyle windowGimp;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
290
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
291 pLogoFrame = getFrame(1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
292 logoStatus = LOGOOFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
293
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
294 tLogoTemp.FBStartAdress = pLogoFrame;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
295 tLogoTemp.ImageHeight = 480;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
296 tLogoTemp.ImageWidth = 800;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
297 tLogoTemp.LayerIndex = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
298
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
299 windowGimp.left = (800 - 400) / 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
300 windowGimp.top = (480 - 46) / 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
301
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
302 GFX_draw_image_color(&tLogoTemp, windowGimp, &ImgHWcolor);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
303 /*
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
304 char localtext[256];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
305 uint8_t ptr = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
306
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
307 localtext[ptr++] = ' ';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
308 localtext[ptr++] = ' ';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
309 localtext[ptr++] = 'O';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
310 localtext[ptr++] = 'S';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
311 localtext[ptr++] = ' ';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
312 ptr += GFX_printf_firmware(&localtext[ptr]);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
313 localtext[ptr] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
314
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
315 write_content_simple(&tLogoTemp, 0, 800, 240-24, &FontT24,localtext,CLUT_Font020);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
316 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
317 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
318
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
319 void GFX_init(uint32_t * pDestinationOut)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
320 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
321 frame[0].StartAddress = FBGlobalStart;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
322 GFX_clear_frame_immediately(frame[0].StartAddress);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
323 frame[0].status = CLEAR;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
324 frame[0].caller = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
325
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
326 for(int i=1;i<MAXFRAMES;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
327 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
328 frame[i].StartAddress = frame[i-1].StartAddress + FBOffsetEachIndex;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
329 GFX_clear_frame_immediately(frame[i].StartAddress);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
330 frame[i].status = CLEAR;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
331 frame[i].caller = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
332 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
333
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
334 pInvisibleFrame = getFrame(2);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
335 *pDestinationOut = pInvisibleFrame;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
336
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
337 GFX_build_logo_frame();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
338 GFX_build_hw_background_frame();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
339
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
340 /* Register to memory mode with ARGB8888 as color Mode */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
341 Dma2dHandle.Init.Mode = DMA2D_R2M;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
342 Dma2dHandle.Init.ColorMode = DMA2D_ARGB4444;//to fake AL88, before: DMA2D_ARGB8888;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
343 Dma2dHandle.Init.OutputOffset = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
344
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
345 /* DMA2D Callbacks Configuration */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
346 Dma2dHandle.XferCpltCallback = GFX_Dma2d_TransferComplete;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
347 Dma2dHandle.XferErrorCallback = GFX_Dma2d_TransferError;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
348
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
349 Dma2dHandle.Instance = DMA2D;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
350
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
351 /* DMA2D Initialisation */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
352 if(HAL_DMA2D_Init(&Dma2dHandle) != HAL_OK)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
353 GFX_Error_Handler();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
354
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
355 if(HAL_DMA2D_ConfigLayer(&Dma2dHandle, 1) != HAL_OK)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
356 GFX_Error_Handler();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
357
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
358 DMA2D_at_work = 255;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
359 }
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
360 void GFX_init1_no_DMA(uint32_t * pDestinationOut, uint8_t blockFrames)
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
361 {
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
362 frame[0].StartAddress = FBGlobalStart;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
363 GFX_clear_frame_immediately(frame[0].StartAddress);
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
364 frame[0].status = CLEAR;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
365 frame[0].caller = 0;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
366
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
367 for(int i=1;i<MAXFRAMES;i++)
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
368 {
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
369 frame[i].StartAddress = frame[i-1].StartAddress + FBOffsetEachIndex;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
370 GFX_clear_frame_immediately(frame[i].StartAddress);
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
371 frame[i].status = CLEAR;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
372 frame[i].caller = 0;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
373 }
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
374
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
375 for(int i=0;i<blockFrames;i++)
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
376 {
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
377 frame[i].status = BLOCKED;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
378 frame[i].caller = 1;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
379 }
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
380
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
381 pInvisibleFrame = getFrame(2);
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
382 *pDestinationOut = pInvisibleFrame;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
383
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
384 GFX_build_logo_frame();
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
385 GFX_build_hw_background_frame();
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
386 }
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
387
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
388
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
389 void GFX_init2_DMA(void)
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
390 {
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
391 /* Register to memory mode with ARGB8888 as color Mode */
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
392 Dma2dHandle.Init.Mode = DMA2D_R2M;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
393 Dma2dHandle.Init.ColorMode = DMA2D_ARGB4444;//to fake AL88, before: DMA2D_ARGB8888;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
394 Dma2dHandle.Init.OutputOffset = 0;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
395
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
396 /* DMA2D Callbacks Configuration */
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
397 Dma2dHandle.XferCpltCallback = GFX_Dma2d_TransferComplete;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
398 Dma2dHandle.XferErrorCallback = GFX_Dma2d_TransferError;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
399
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
400 Dma2dHandle.Instance = DMA2D;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
401
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
402 /* DMA2D Initialisation */
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
403 if(HAL_DMA2D_Init(&Dma2dHandle) != HAL_OK)
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
404 GFX_Error_Handler();
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
405
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
406 if(HAL_DMA2D_ConfigLayer(&Dma2dHandle, 1) != HAL_OK)
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
407 GFX_Error_Handler();
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
408
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
409 DMA2D_at_work = 255;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
410 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
411
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
412
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
413 void GFX_SetFrameTop(uint32_t pDestination)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
414 {
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
415 uint8_t NextTopWork = FrameHandler.NextTopWrite + 1;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
416
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
417 if(NextTopWork == RING_BUF_SIZE)
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
418 {
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
419 NextTopWork = 0;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
420 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
421
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
422 if(pDestination == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
423 pDestination = pInvisibleFrame;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
424
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
425 FrameHandler.pNextTopBuffer[NextTopWork] = pDestination;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
426 FrameHandler.NextTopWrite = NextTopWork;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
427 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
428
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
429
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
430 void GFX_SetFrameBottom(uint32_t pDestination, uint32_t x0, uint32_t y0, uint32_t width, uint32_t height)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
431 {
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
432 uint8_t NextBottomWork = FrameHandler.NextBottomWrite + 1;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
433
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
434 if(NextBottomWork == RING_BUF_SIZE)
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
435 {
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
436 NextBottomWork = 0;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
437 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
438
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
439 if(pDestination == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
440 pDestination = pInvisibleFrame;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
441
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
442 FrameHandler.nextBottom[NextBottomWork].pBuffer = pDestination;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
443 FrameHandler.nextBottom[NextBottomWork].height = height;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
444 FrameHandler.nextBottom[NextBottomWork].width = width;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
445 FrameHandler.nextBottom[NextBottomWork].leftStart = x0;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
446 FrameHandler.nextBottom[NextBottomWork].bottomStart = y0;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
447 FrameHandler.NextBottomWrite = NextBottomWork;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
448 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
449
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
450
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
451 void GFX_SetFramesTopBottom(uint32_t pTop, uint32_t pBottom, uint32_t heightBottom)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
452 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
453 GFX_SetFrameTop(pTop);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
454 GFX_SetFrameBottom(pBottom, 0, 0, 800, heightBottom);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
455 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
456
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
457
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
458 static uint32_t GFX_get_pActualFrameTop(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
459 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
460 return FrameHandler.pActualTopBuffer;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
461 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
462
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
463
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
464 static uint32_t GFX_get_pActualFrameBottom(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
465 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
466 return FrameHandler.actualBottom.pBuffer;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
467 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
468
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
469
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
470 void GFX_start_VSYNC_IRQ(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
471 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
472 GPIO_InitTypeDef GPIO_InitStructure;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
473
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
474 GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
475 GPIO_InitStructure.Pull = GPIO_NOPULL;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
476 GPIO_InitStructure.Speed = GPIO_SPEED_LOW;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
477 GPIO_InitStructure.Pin = VSYNC_IRQ_PIN;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
478 HAL_GPIO_Init(VSYNC_IRQ_GPIO_PORT, &GPIO_InitStructure);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
479
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
480 HAL_NVIC_SetPriority(VSYNC_IRQ_EXTI_IRQn, 1, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
481 HAL_NVIC_EnableIRQ(VSYNC_IRQ_EXTI_IRQn);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
482 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
483
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
484
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
485 void GFX_change_LTDC(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
486 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
487 uint32_t pTop = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
488 uint32_t pBot = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
489 uint32_t heightBot = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
490 uint32_t widthBot = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
491 uint32_t leftStartBot = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
492 uint32_t bottomStartBot = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
493 uint8_t change_position = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
494 uint8_t change_size = 0;
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
495 uint8_t nextBottomBackup = FrameHandler.NextBottomRead; /* Restore entry value in case off logo handling */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
496
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
497 // Top Frame
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
498 if(FrameHandler.NextTopRead != FrameHandler.NextTopWrite)
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
499 {
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
500 FrameHandler.NextTopRead++;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
501 if(FrameHandler.NextTopRead == RING_BUF_SIZE)
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
502 {
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
503 FrameHandler.NextTopRead = 0;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
504 }
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
505 }
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
506 pTop = FrameHandler.pNextTopBuffer[FrameHandler.NextTopRead];
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
507
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
508 if(FrameHandler.pActualTopBuffer != pTop)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
509 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
510 HAL_LTDC_SetAddress(&LtdcHandle, pTop, 1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
511 FrameHandler.pActualTopBuffer = pTop;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
512 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
513
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
514 // Bottom Frame
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
515 if(FrameHandler.NextBottomRead != FrameHandler.NextBottomWrite)
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
516 {
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
517 FrameHandler.NextBottomRead++;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
518 if(FrameHandler.NextBottomRead == RING_BUF_SIZE)
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
519 {
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
520 FrameHandler.NextBottomRead = 0;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
521 }
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
522 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
523 if(logoStatus != LOGOOFF)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
524 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
525 switch(logoStatus)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
526 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
527 case LOGOSTART:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
528 HAL_LTDC_SetAlpha(&LtdcHandle, 0, 1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
529 HAL_LTDC_SetAlpha(&LtdcHandle, 34, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
530 HAL_LTDC_ConfigCLUT(&LtdcHandle, (uint32_t *)indexHWcolor, indexHWcolorSIZE, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
531 HAL_LTDC_SetAddress(&LtdcHandle, pLogoFrame, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
532 HAL_LTDC_SetWindowSize(&LtdcHandle, 480, 800, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
533 HAL_LTDC_SetWindowPosition(&LtdcHandle, 0, 0, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
534 logoStatus = 2;
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
535 FrameHandler.NextBottomRead = nextBottomBackup;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
536 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
537
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
538 case LOGOSTOP:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
539 HAL_LTDC_SetAlpha(&LtdcHandle, 255, 1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
540 HAL_LTDC_ConfigCLUT(&LtdcHandle, ColorLUT, CLUT_END, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
541
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
542 pBot = FrameHandler.nextBottom[FrameHandler.NextBottomRead].pBuffer;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
543 heightBot = FrameHandler.nextBottom[FrameHandler.NextBottomRead].height;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
544 widthBot = FrameHandler.nextBottom[FrameHandler.NextBottomRead].width;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
545 leftStartBot = FrameHandler.nextBottom[FrameHandler.NextBottomRead].leftStart;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
546 bottomStartBot = FrameHandler.nextBottom[FrameHandler.NextBottomRead].bottomStart;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
547 HAL_LTDC_SetWindowSize(&LtdcHandle, heightBot, widthBot, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
548 HAL_LTDC_SetWindowPosition(&LtdcHandle, bottomStartBot, leftStartBot, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
549 HAL_LTDC_SetAddress(&LtdcHandle, pBot, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
550 HAL_LTDC_SetAlpha(&LtdcHandle, 255, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
551 FrameHandler.actualBottom.height = heightBot;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
552 FrameHandler.actualBottom.width = widthBot;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
553 FrameHandler.actualBottom.leftStart = leftStartBot;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
554 FrameHandler.actualBottom.bottomStart = bottomStartBot;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
555 FrameHandler.actualBottom.pBuffer = pBot;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
556
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
557 logoStatus = LOGOOFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
558 if(backgroundHwStatus == 2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
559 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
560 backgroundHwStatus = LOGOSTART;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
561 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
562 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
563 default:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
564 if(logoStatus < 35)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
565 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
566 logoStatus++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
567 if(logoStatus <= 15)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
568 HAL_LTDC_SetAlpha(&LtdcHandle, 17*logoStatus, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
569 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
570 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
571 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
572 logoStatus +=20;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
573 HAL_LTDC_SetAlpha(&LtdcHandle, logoStatus-55, 1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
574 HAL_LTDC_SetAlpha(&LtdcHandle, 255+55-logoStatus, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
575 }
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
576 FrameHandler.NextBottomRead = nextBottomBackup;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
577 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
578 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
579 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
580 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
581 else if (backgroundHwStatus != LOGOOFF)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
582 {
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
583
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
584 switch(backgroundHwStatus)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
585 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
586 case LOGOSTART:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
587 HAL_LTDC_ConfigCLUT(&LtdcHandle, (uint32_t *)indexHWcolor, indexHWcolorSIZE, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
588 HAL_LTDC_SetAddress(&LtdcHandle, pBackgroundHwFrame, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
589 HAL_LTDC_SetWindowSize(&LtdcHandle, 480, 800, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
590 HAL_LTDC_SetWindowPosition(&LtdcHandle, 0, 0, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
591 backgroundHwStatus = 2;
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
592 FrameHandler.NextBottomRead = nextBottomBackup;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
593 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
594
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
595 case LOGOSTOP:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
596 HAL_LTDC_ConfigCLUT(&LtdcHandle, ColorLUT, CLUT_END, 0);
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
597 pBot = FrameHandler.nextBottom[FrameHandler.NextBottomRead].pBuffer;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
598 heightBot = FrameHandler.nextBottom[FrameHandler.NextBottomRead].height;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
599 widthBot = FrameHandler.nextBottom[FrameHandler.NextBottomRead].width;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
600 leftStartBot = FrameHandler.nextBottom[FrameHandler.NextBottomRead].leftStart;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
601 bottomStartBot = FrameHandler.nextBottom[FrameHandler.NextBottomRead].bottomStart;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
602 HAL_LTDC_SetWindowSize(&LtdcHandle, heightBot, widthBot, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
603 HAL_LTDC_SetWindowPosition(&LtdcHandle, bottomStartBot, leftStartBot, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
604 HAL_LTDC_SetAddress(&LtdcHandle, pBot, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
605 HAL_LTDC_SetAlpha(&LtdcHandle, 255, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
606 FrameHandler.actualBottom.height = heightBot;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
607 FrameHandler.actualBottom.width = widthBot;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
608 FrameHandler.actualBottom.leftStart = leftStartBot;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
609 FrameHandler.actualBottom.bottomStart = bottomStartBot;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
610 FrameHandler.actualBottom.pBuffer = pBot;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
611 backgroundHwStatus = LOGOOFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
612 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
613
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
614 default:
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
615 FrameHandler.NextBottomRead = nextBottomBackup;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
616 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
617 }
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
618
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
619 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
620 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
621 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
622 {
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
623 pBot = FrameHandler.nextBottom[FrameHandler.NextBottomRead].pBuffer;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
624 heightBot = FrameHandler.nextBottom[FrameHandler.NextBottomRead].height;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
625 widthBot = FrameHandler.nextBottom[FrameHandler.NextBottomRead].width;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
626 leftStartBot = FrameHandler.nextBottom[FrameHandler.NextBottomRead].leftStart;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
627 bottomStartBot = FrameHandler.nextBottom[FrameHandler.NextBottomRead].bottomStart;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
628
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
629 if(FrameHandler.actualBottom.pBuffer == pBot)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
630 pBot = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
631
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
632 if((FrameHandler.actualBottom.height != heightBot) || (FrameHandler.actualBottom.width != widthBot))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
633 change_size = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
634
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
635 if((FrameHandler.actualBottom.leftStart != leftStartBot) || (FrameHandler.actualBottom.bottomStart != bottomStartBot))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
636 change_position = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
637
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
638 if(pBot || change_size || change_position)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
639 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
640 if(heightBot && widthBot)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
641 HAL_LTDC_SetWindowSize(&LtdcHandle, heightBot, widthBot, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
642
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
643 if(change_position || leftStartBot || bottomStartBot)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
644 HAL_LTDC_SetWindowPosition(&LtdcHandle, bottomStartBot, leftStartBot, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
645
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
646 if(pBot)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
647 HAL_LTDC_SetAddress(&LtdcHandle, pBot, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
648
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
649 if(change_size)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
650 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
651 FrameHandler.actualBottom.height = heightBot;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
652 FrameHandler.actualBottom.width = widthBot;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
653 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
654 if(change_position)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
655 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
656 FrameHandler.actualBottom.leftStart = leftStartBot;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
657 FrameHandler.actualBottom.bottomStart = bottomStartBot;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
658 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
659 if(pBot)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
660 FrameHandler.actualBottom.pBuffer = pBot;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
661 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
662 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
663 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
664
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
665 uint8_t GFX_is_colorschemeDiveStandard(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
666 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
667 return (ColorLUT[CLUT_Font027] == 0x00FFFFFF);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
668 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
669
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
670
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
671 void change_CLUT_entry(uint8_t entryToChange, uint8_t entryUsedForChange)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
672 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
673 /* bug fix
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
674 static uint8_t counter = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
675
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
676 if(entryToChange == 0x1C)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
677 counter++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
678 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
679 ColorLUT[entryToChange] = ColorLUT[entryUsedForChange];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
680 HAL_LTDC_ConfigCLUT(&LtdcHandle, ColorLUT, CLUT_END, 1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
681 if(logoStatus == LOGOOFF)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
682 HAL_LTDC_ConfigCLUT(&LtdcHandle, ColorLUT, CLUT_END, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
683 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
684
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
685
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
686 void GFX_use_colorscheme(uint8_t colorscheme)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
687 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
688 uint8_t ColorSchemeStart;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
689
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
690 if(colorscheme > 3)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
691 colorscheme = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
692
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
693 ColorSchemeStart = CLUT_Colorscheme0 + (8 * colorscheme);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
694 for(int i=1; i<8; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
695 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
696 ColorLUT[CLUT_Font027 + i] = ColorLUT[ColorSchemeStart + i];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
697 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
698 change_CLUT_entry(CLUT_Font027, ColorSchemeStart);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
699 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
700
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
701
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
702 void GFX_VGA_transform(uint32_t pSource, uint32_t pDestination)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
703 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
704 int h, v;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
705 uint32_t offsetSource, offsetSourceStartOfLine;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
706
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
707 offsetSourceStartOfLine = 480 + 480 - 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
708 for(v=0;v<480;v++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
709 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
710 offsetSource = offsetSourceStartOfLine;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
711 for(h=0;h<640;h++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
712 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
713 *(__IO uint8_t*)pDestination = *(uint8_t*)(pSource + offsetSource);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
714 pDestination++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
715 offsetSource += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
716 *(__IO uint8_t*)pDestination = *(uint8_t*)(pSource + offsetSource);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
717 pDestination++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
718 offsetSource += 480 + 479;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
719 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
720 offsetSourceStartOfLine -= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
721 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
722 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
723
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
724
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
725 static void GFX_clear_frame_immediately(uint32_t pDestination)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
726 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
727 uint32_t i;
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
728 uint32_t* pfill = (uint32_t*) pDestination;
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
729
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
730
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
731 for(i = 200*480; i > 0; i--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
732 {
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
733 *pfill++ = 0;
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
734 *pfill++ = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
735 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
736 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
737
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
738
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
739 void GFX_clear_window_immediately(GFX_DrawCfgWindow* hgfx)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
740 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
741 uint32_t pDestination, i, j;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
742 uint16_t left, width, bottom, height, nextlineStep;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
743
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
744 pDestination = (uint32_t)hgfx->Image->FBStartAdress;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
745
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
746 left = hgfx->WindowX0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
747 width = 1 + hgfx->WindowX1 - left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
748 bottom = hgfx->WindowY0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
749 height = 1 + hgfx->WindowY1 - bottom;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
750 nextlineStep = hgfx->Image->ImageHeight - height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
751 nextlineStep *= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
752
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
753 pDestination += 2 * bottom;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
754 pDestination += 2 * hgfx->Image->ImageHeight * left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
755
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
756 for(j = width; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
757 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
758 for(i = height; i > 0; i--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
759 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
760 *(__IO uint16_t*)pDestination = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
761 pDestination += 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
762 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
763 pDestination += nextlineStep;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
764 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
765 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
766
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
767
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
768 static void GFX_clear_frame_dma2d(uint8_t frameId)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
769 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
770 if(frameId >= MAXFRAMES)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
771 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
772
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
773 DMA2D_at_work = frameId;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
774
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
775 if (HAL_DMA2D_Start_IT(&Dma2dHandle, 0x0000000000, frame[frameId].StartAddress, 480, 800) != HAL_OK)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
776 GFX_Error_Handler();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
777 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
778
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
779
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
780 void GFX_fill_buffer(uint32_t pDestination, uint8_t alpha, uint8_t color)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
781 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
782
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
783 union al88_u
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
784 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
785 uint8_t al8[2];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
786 uint16_t al88;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
787 };
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
788 union al88_u colorcombination;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
789 uint32_t i;
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
790 uint32_t* pfill = (uint32_t*) pDestination;
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
791 uint32_t fillpattern;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
792
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
793 colorcombination.al8[0] = color;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
794 colorcombination.al8[1] = alpha;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
795
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
796 fillpattern = (colorcombination.al88 << 16) | colorcombination.al88;
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
797 for(i = 800*480/2; i > 0; i--)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
798 {
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
799 *pfill++ = fillpattern;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
800 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
801 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
802
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
803
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
804 static void gfx_flip(point_t *p1, point_t *p2)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
805 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
806 point_t temp;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
807
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
808 temp = *p1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
809 *p1 = *p2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
810 *p2 = temp;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
811 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
812
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
813
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
814 static inline void gfx_brush(uint8_t thickness, GFX_DrawCfgScreen *hgfx, uint16_t x0, uint16_t y0, uint8_t color)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
815 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
816 uint16_t* pDestination;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
817 uint8_t offset = thickness/2;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
818 int16_t stepdir;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
819
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
820 SSettings* pSettings;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
821 pSettings = settingsGetPointer();
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
822
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
823 if(pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
824 {
114
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
825 pDestination = (uint16_t*)hgfx->FBStartAdress;
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
826 pDestination += (hgfx->ImageHeight * (hgfx->ImageWidth - x0 + offset)) + (480 - y0+offset);
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
827 stepdir = -1;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
828 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
829 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
830 {
114
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
831 pDestination = (uint16_t*)hgfx->FBStartAdress;
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
832 pDestination += (x0 - offset)*hgfx->ImageHeight + (y0-offset);
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
833 stepdir = 1;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
834 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
835 for(int x=thickness;x>0;x--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
836 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
837 for(int y=thickness;y>0;y--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
838 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
839 *(__IO uint16_t*)pDestination = 0xFF00 + color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
840 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
841 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
842 pDestination += stepdir * (hgfx->ImageHeight - thickness);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
843 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
844 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
845
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
846
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
847 void GFX_draw_thick_line(uint8_t thickness, GFX_DrawCfgScreen *hgfx, point_t start, point_t stop, uint8_t color)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
848 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
849 if(thickness < 2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
850 GFX_draw_line(hgfx, start, stop, color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
851
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
852 int x0 = start.x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
853 int y0 = start.y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
854 int x1 = stop.x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
855 int y1 = stop.y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
856 int dx = abs(x1-x0), sx = x0<x1 ? 1 : -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
857 int dy = abs(y1-y0), sy = y0<y1 ? 1 : -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
858 int err = (dx>dy ? dx : -dy)/2, e2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
859
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
860
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
861 if(start.x == stop.x)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
862 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
863 if(start.y > stop.y) gfx_flip(&start,&stop);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
864 for (int j = stop.y - start.y; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
865 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
866 gfx_brush(thickness,hgfx,start.x,start.y++,color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
867 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
868 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
869 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
870 if(start.y == stop.y)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
871 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
872 if(start.x > stop.x) gfx_flip(&start,&stop);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
873
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
874 for (int j = stop.x - start.x; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
875 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
876 gfx_brush(thickness,hgfx,start.x++,start.y,color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
877 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
878 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
879 else // diagonal
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
880 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
881 for(;;)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
882 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
883 gfx_brush(thickness,hgfx,x0,y0,color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
884 if (x0==x1 && y0==y1) break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
885 e2 = err;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
886 if (e2 >-dx) { err -= dy; x0 += sx; }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
887 if (e2 < dy) { err += dx; y0 += sy; }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
888 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
889 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
890 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
891
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
892
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
893 void GFX_draw_line(GFX_DrawCfgScreen *hgfx, point_t start, point_t stop, uint8_t color)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
894 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
895 uint16_t* pDestination;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
896 uint32_t j;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
897 int16_t stepdir;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
898 SSettings* pSettings;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
899 pSettings = settingsGetPointer();
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
900
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
901
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
902 /* horizontal line */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
903 if(start.x == stop.x)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
904 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
905 if(start.y > stop.y) gfx_flip(&start,&stop);
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
906
114
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
907 pDestination = (uint16_t*)hgfx->FBStartAdress;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
908 if(pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
909 {
622
8f78faf88fc5 Adjustments for flipped display view:
Ideenmodellierer
parents: 612
diff changeset
910 pDestination += (799 - start.x) * hgfx->ImageHeight;
8f78faf88fc5 Adjustments for flipped display view:
Ideenmodellierer
parents: 612
diff changeset
911 pDestination += (479 - start.y);
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
912 stepdir = -1;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
913 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
914 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
915 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
916 pDestination += start.x * hgfx->ImageHeight;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
917 pDestination += start.y;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
918 stepdir = 1;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
919 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
920 for (j = stop.y - start.y; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
921 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
922 *(__IO uint16_t*)pDestination = 0xFF00 + color;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
923 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
924 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
925 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
926 else /* vertical line ? */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
927 if(start.y == stop.y)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
928 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
929 if(start.x > stop.x) gfx_flip(&start,&stop);
114
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
930 pDestination = (uint16_t*)hgfx->FBStartAdress;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
931
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
932 if(pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
933 {
622
8f78faf88fc5 Adjustments for flipped display view:
Ideenmodellierer
parents: 612
diff changeset
934 pDestination += (799 - start.x) * hgfx->ImageHeight;
8f78faf88fc5 Adjustments for flipped display view:
Ideenmodellierer
parents: 612
diff changeset
935 pDestination += (479 - start.y);
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
936 stepdir = -1;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
937 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
938 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
939 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
940 pDestination += start.x * hgfx->ImageHeight;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
941 pDestination += start.y;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
942 stepdir = 1;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
943 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
944
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
945 for (j = stop.x - start.x; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
946 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
947 *(__IO uint16_t*)pDestination = 0xFF00 + color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
948 pDestination += stepdir * hgfx->ImageHeight;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
949 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
950 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
951 else /* diagonal */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
952 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
953 int x0 = start.x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
954 int y0 = start.y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
955 int x1 = stop.x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
956 int y1 = stop.y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
957 int dx = abs(x1-x0), sx = x0<x1 ? 1 : -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
958 int dy = abs(y1-y0), sy = y0<y1 ? 1 : -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
959 int err = (dx>dy ? dx : -dy)/2, e2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
960
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
961 for(;;)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
962 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
963 pDestination = (uint16_t*)hgfx->FBStartAdress;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
964
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
965 if(pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
966 {
622
8f78faf88fc5 Adjustments for flipped display view:
Ideenmodellierer
parents: 612
diff changeset
967 pDestination += (((799 - x0) * hgfx->ImageHeight) + (479 - y0));
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
968 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
969 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
970 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
971 pDestination += ((x0 * hgfx->ImageHeight) + y0);
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
972 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
973
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
974 *(__IO uint16_t*)pDestination = 0xFF00 + color;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
975 if (x0==x1 && y0==y1) break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
976 e2 = err;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
977 if (e2 >-dx) { err -= dy; x0 += sx; }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
978 if (e2 < dy) { err += dx; y0 += sy; }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
979 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
980 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
981 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
982
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
983
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
984 void GFX_draw_image_monochrome(GFX_DrawCfgScreen *hgfx, SWindowGimpStyle window, const tImage *image, uint8_t color)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
985 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
986 uint16_t* pDestination;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
987 uint32_t j;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
988 point_t start, stop;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
989
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
990 SSettings* pSettings;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
991 pSettings = settingsGetPointer();
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
992
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
993 start.x = window.left;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
994 start.y = (hgfx->ImageHeight - image->height - window.top);
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
995 stop.y = start.y + image->height;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
996 stop.x = start.x + image->width;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
997 j = 0;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
998
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
999 if(pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1000 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1001 for(int xx = start.x; xx < stop.x; xx++)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1002 {
114
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
1003 pDestination = (uint16_t*)hgfx->FBStartAdress;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1004 pDestination += (hgfx->ImageHeight - start.y) + (stop.x * hgfx->ImageHeight) ;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1005 pDestination -= (xx - start.x) * hgfx->ImageHeight;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1006
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1007 for(int yy = start.y; yy < stop.y; yy++)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1008 {
114
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
1009 *(__IO uint16_t*)pDestination-- = (image->data[j++] << 8) + color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1010 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1011 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1012 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1013 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1014 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1015 for(int xx = start.x; xx < stop.x; xx++)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1016 {
114
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
1017 pDestination = (uint16_t*)hgfx->FBStartAdress;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1018 pDestination += xx * hgfx->ImageHeight;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1019 pDestination += start.y;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1020 for(int yy = start.y; yy < stop.y; yy++)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1021 {
114
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
1022 *(__IO uint16_t*)pDestination++ = (image->data[j++] << 8) + color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1023 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1024 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1025 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1026 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1027
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
1028 static void GFX_draw_image_color(GFX_DrawCfgScreen *hgfx, SWindowGimpStyle window, const tImage *image)
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1029 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1030 uint16_t* pDestination;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1031
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1032 uint32_t j;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1033 point_t start, stop;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1034
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1035 start.x = window.left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1036 start.y = (hgfx->ImageHeight - image->height - window.top);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1037 stop.y = start.y + image->height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1038 stop.x = start.x + image->width;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1039 j = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1040
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1041 SSettings* pSettings;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1042 pSettings = settingsGetPointer();
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1043
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1044 if(pSettings->FlipDisplay)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1045 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1046 for(int xx = start.x; xx < stop.x; xx++)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1047 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1048 pDestination = (uint16_t*)hgfx->FBStartAdress;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1049 pDestination += (hgfx->ImageHeight - start.y) + (stop.x * hgfx->ImageHeight);
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1050 pDestination -= (xx - start.x) * hgfx->ImageHeight;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1051
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1052 for(int yy = start.y; yy < stop.y; yy++)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1053 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1054 *(__IO uint16_t*)pDestination-- = 0xFF << 8 | image->data[j++];
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1055 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1056 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1057 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1058 else
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1059 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1060 for(int xx = start.x; xx < stop.x; xx++)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1061 {
114
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
1062 pDestination = (uint16_t*)hgfx->FBStartAdress;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1063 pDestination += xx * hgfx->ImageHeight;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1064 pDestination += start.y;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1065 for(int yy = start.y; yy < stop.y; yy++)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1066 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1067 *(__IO uint16_t*)pDestination++ = 0xFF << 8 | image->data[j++];
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1068 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1069 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1070 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1071 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1072
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1073
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1074 /* this is NOT fast nor optimized */
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
1075 static void GFX_draw_pixel(GFX_DrawCfgScreen *hgfx, int16_t x, int16_t y, uint8_t color)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1076 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1077 uint16_t* pDestination;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1078
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1079 SSettings* pSettings;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1080 pSettings = settingsGetPointer();
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1081
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1082 pDestination = (uint16_t*)hgfx->FBStartAdress;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1083 if(pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1084 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1085 pDestination += (800 - x) * hgfx->ImageHeight;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1086 pDestination += (480 - y);
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1087 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1088 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1089 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1090 pDestination += x * hgfx->ImageHeight;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1091 pDestination += y;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1092 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1093 *(__IO uint16_t*)pDestination = 0xFF << 8 | color;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1094 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1095
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1096 /* this is NOT fast nor optimized */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1097 void GFX_draw_circle(GFX_DrawCfgScreen *hgfx, point_t center, uint8_t radius, int8_t color)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1098 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1099 int x, y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1100 int l;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1101 int r2, y2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1102 int y2_new;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1103 int ty;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1104
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1105 /* cos pi/4 = 185363 / 2^18 (approx) */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1106 l = (radius * 185363) >> 18;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1107
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1108 /* hw */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1109 l += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1110
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1111 /* At x=0, y=radius */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1112 y = radius;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1113
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1114 r2 = y2 = y * y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1115 ty = (2 * y) - 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1116 y2_new = r2 + 3;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1117
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1118 for (x = 0; x <= l; x++) {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1119 y2_new -= (2 * x) - 3;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1120
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1121 if ((y2 - y2_new) >= ty) {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1122 y2 -= ty;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1123 y -= 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1124 ty -= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1125 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1126
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1127 GFX_draw_pixel (hgfx, x + center.x, y + center.y, color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1128 GFX_draw_pixel (hgfx, x + center.x, -y + center.y, color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1129 GFX_draw_pixel (hgfx, -x + center.x, y + center.y, color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1130 GFX_draw_pixel (hgfx, -x + center.x, -y + center.y, color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1131
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1132 GFX_draw_pixel (hgfx, y + center.x, x + center.y, color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1133 GFX_draw_pixel (hgfx, y + center.x, -x + center.y, color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1134 GFX_draw_pixel (hgfx, -y + center.x, x + center.y, color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1135 GFX_draw_pixel (hgfx, -y + center.x, -x + center.y, color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1136 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1137 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1138
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1139
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1140 void GFX_draw_colorline(GFX_DrawCfgScreen *hgfx, point_t start, point_t stop, uint8_t color)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1141 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1142 uint32_t pDestination;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1143 uint32_t j;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1144 uint32_t temp;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1145
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1146 if(start.x == stop.x)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1147 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1148 if(stop.y < start.y)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1149 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1150 temp = stop.y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1151 stop.y = start.y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1152 start.y = temp;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1153 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1154 pDestination = (uint32_t)hgfx->FBStartAdress;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1155 pDestination += start.x * hgfx->ImageHeight * 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1156 pDestination += start.y * 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1157 for (j = stop.y - start.y; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1158 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1159 *(__IO uint8_t*)pDestination = color;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1160 pDestination += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1161 *(__IO uint8_t*)pDestination = 0xFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1162 pDestination += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1163 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1164 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1165 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1166 if(start.y == stop.y)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1167 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1168 if(stop.x < start.x)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1169 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1170 temp = stop.x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1171 stop.x = start.x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1172 start.x = temp;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1173 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1174 pDestination = (uint32_t)hgfx->FBStartAdress;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1175 pDestination += start.x * hgfx->ImageHeight * 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1176 pDestination += start.y * 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1177 for (j = stop.x - start.x; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1178 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1179 *(__IO uint8_t*)pDestination = color;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1180 pDestination += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1181 *(__IO uint8_t*)pDestination = 0xFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1182 pDestination -= 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1183 pDestination += hgfx->ImageHeight * 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1184 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1185 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1186 else // diagonal Bresenham's_line_algorithm
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1187 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1188 int x0 = start.x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1189 int y0 = start.y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1190 int x1 = stop.x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1191 int y1 = stop.y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1192 int dx = abs(x1-x0), sx = x0<x1 ? 1 : -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1193 int dy = abs(y1-y0), sy = y0<y1 ? 1 : -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1194 int err = (dx>dy ? dx : -dy)/2, e2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1195
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1196 for(;;)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1197 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1198 pDestination = (uint32_t)hgfx->FBStartAdress;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1199 pDestination += ((x0 * hgfx->ImageHeight) + y0) * 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1200 *(__IO uint8_t*)pDestination = color;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1201 pDestination += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1202 *(__IO uint8_t*)pDestination = 0xFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1203 if (x0==x1 && y0==y1) break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1204 e2 = err;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1205 if (e2 >-dx) { err -= dy; x0 += sx; }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1206 if (e2 < dy) { err += dx; y0 += sy; }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1207 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1208 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1209 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1210
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1211
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1212 void GFX_draw_Grid(GFX_DrawCfgScreen *hgfx, SWindowGimpStyle window, int vlines, float vdeltaline, int hlines, float hdeltalines, uint8_t color)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1213 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1214 point_t p1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1215 point_t p2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1216 int winthight = window.bottom - window.top;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1217 int winwidth = window.right - window.left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1218 float deltaline = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1219
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1220 if(vlines > 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1221 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1222 deltaline = ((float)winwidth) /vlines;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1223
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1224 p1.y = 479 - window.top;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1225 p2.y = 479 - window.bottom;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1226 for(int i = 0; i <= vlines; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1227 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1228 p1.x = window.left + (int)(i * deltaline + 0.5f);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1229 p2.x = p1.x ;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1230 //GFX_draw_colorline(hgfx, p1,p2, color );
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1231 GFX_draw_line(hgfx, p1,p2, color );
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1232 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1233 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1234 if(vdeltaline > 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1235 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1236 p1.y = 479 - window.top;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1237 p2.y = 479 - window.bottom;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1238 for(int i = 0; i < winwidth/vdeltaline; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1239 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1240 p1.x = window.left + (int)(i * vdeltaline + 0.5f);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1241 p2.x = p1.x ;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1242 // GFX_draw_colorline(hgfx, p1,p2, color );
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1243 GFX_draw_line(hgfx, p1,p2, color );
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1244 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1245 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1246 if(hlines > 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1247 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1248 deltaline = ((float)winthight)/hlines;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1249 p1.x = window.left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1250 p2.x = window.right;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1251 for(int i = 0; i <= hlines; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1252 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1253 p1.y = 479 - window.top - (int)(i * deltaline + 0.5f);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1254 p2.y = p1.y;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1255 // GFX_draw_colorline(hgfx, p1,p2, color );
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1256 GFX_draw_line(hgfx, p1,p2, color );
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1257 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1258 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1259 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1260
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1261 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1262 // GFX_graph_print
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1263 /// @brief Print all those nice curves, especially in logbook und miniLiveLogGraph
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1264 /// @version 0.0.2 hw 160519
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1265 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1266 /// 151022 hw -bug fix
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1267 /// - die aktuelle Version macht keine Linien mehr �ber die gesamte Bildschirmh�he.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1268 /// - daf�r sind L�cher in der Kurve (z.B. Temperaturgraph Tauchgang Matthias 17.10.15 15:19)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1269 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1270 /// more details about range can be found in show_logbook_logbook_show_log_page2() - temperature graph
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1271 ///
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1272 /// @param window: top and bottom is only the range used by the data of the graph, not the entire screen / scale
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1273 /// @param drawVeilUntil: ist auff�llen des Bereichs unter der Kurve mit etwas hellerer Farbe
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1274 /// @param Xdivide: wird bisher nichr benutzt.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1275 // ===============================================================================
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1276
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1277
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1278 void GFX_graph_print(GFX_DrawCfgScreen *hgfx, const SWindowGimpStyle *window, const 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)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1279 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1280 uint16_t* pDestination_tmp;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1281 uint16_t* pDestination_start;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1282 uint16_t* pDestination_end;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1283 uint16_t* pDestination_zero_veil;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1284
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1285 SSettings* pSettings;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1286
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1287 uint32_t max = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1288 int windowheight = -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1289 int windowwidth = -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1290 int i = -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1291 int w1 = -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1292 int w2 = -1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1293
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1294 uint32_t h_ulong = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1295 uint32_t h_ulong_old = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1296 _Bool invert = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1297
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1298 uint16_t dataDelta = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1299 uint16_t dataDeltaHalve = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1300 uint16_t dataTemp = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1301
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1302 uint8_t colorDataTemp;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1303 uint8_t colormask = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1304
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1305 pSettings = settingsGetPointer();
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1306 pDestination_zero_veil = 0;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1307
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1308 if(dataMin > dataMax)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1309 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1310 uint16_t dataFlip;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1311 dataFlip = dataMin;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1312 dataMin = dataMax;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1313 dataMax = dataFlip;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1314 invert = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1315 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1316 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1317 invert = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1318
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1319 colormask = color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1320
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1321 pSettings = settingsGetPointer();
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1322
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1323 if(window->bottom > 479)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1324 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1325 if(window->top > 479)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1326 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1327 if(window->right > 799)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1328 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1329 if(window->left > 799)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1330 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1331 if(window->bottom < 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1332 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1333 if(window->top < 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1334 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1335 if(window->right < 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1336 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1337 if(window->left < 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1338 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1339 if(window->bottom <= window->top)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1340 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1341 if(window->right <= window->left)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1342 return;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1343
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1344 windowheight = window->bottom - window->top ;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1345 windowwidth = window->right - window->left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1346 w1 = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1347 w2 = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1348 if(dataMax == dataMin)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1349 dataMax++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1350 dataDelta = (unsigned long)(dataMax - dataMin);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1351 dataDeltaHalve = dataDelta / 2;
296
87f83879cecb Possible bugfix: do not use bitwise and (&)
Jan Mulder <jlmulder@xs4all.nl>
parents: 121
diff changeset
1352 while((w1 <= windowwidth) && (w2 < datalength))
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1353 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1354 int tmp = (10 * w1 * (long)datalength)/windowwidth;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1355 w2 = tmp/10;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1356 int rest = tmp - w2*10;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1357 if(rest >= 5)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1358 w2++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1359
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1360 if((datalength - 1) < w2)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1361 w2 = datalength-1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1362
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1363 if(colour_data != NULL)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1364 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1365 colorDataTemp = colour_data[w2];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1366 colormask = color + colorDataTemp;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1367 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1368
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1369 dataTemp = data[w2];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1370 if(Xdivide > 1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1371 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1372 w2++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1373 for(i=1;i<Xdivide;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1374 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1375 if(data[w2]>dataTemp)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1376 dataTemp = data[w2];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1377 w2++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1378 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1379 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1380
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1381 if(dataTemp > dataMin)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1382 dataTemp -= dataMin;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1383 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1384 dataTemp = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1385
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1386 if(invert)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1387 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1388 if(dataTemp < dataDelta)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1389 dataTemp = dataDelta - dataTemp;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1390 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1391 dataTemp = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1392 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1393
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1394 h_ulong = (unsigned long)dataTemp;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1395 h_ulong *= windowheight;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1396 h_ulong += dataDeltaHalve;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1397 h_ulong /= dataDelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1398
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1399 if(h_ulong > (window->bottom - window->top))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1400 h_ulong = (window->bottom - window->top);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1401
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1402 if(!pSettings->FlipDisplay)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1403 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1404 if(drawVeilUntil > 0)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1405 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1406 pDestination_zero_veil = (uint16_t*)hgfx->FBStartAdress;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1407 pDestination_zero_veil += ((479 - (drawVeilUntil - 2) ) + ((w1 + window->left) * hgfx->ImageHeight) );
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1408 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1409 else if(drawVeilUntil < 0 )
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1410 {
114
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
1411 pDestination_zero_veil = (uint16_t*)hgfx->FBStartAdress;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1412 pDestination_zero_veil += ((479 + (drawVeilUntil)) + ((w1 + window->left) * hgfx->ImageHeight) );
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1413 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1414 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1415 else
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1416 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1417 if(drawVeilUntil > 0)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1418 {
114
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
1419 pDestination_zero_veil = (uint16_t*)hgfx->FBStartAdress;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1420 pDestination_zero_veil += (((drawVeilUntil) ) + ( (window->right - w1) * hgfx->ImageHeight) );
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1421 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1422 else if(drawVeilUntil < 0 )
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1423 {
114
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
1424 pDestination_zero_veil = (uint16_t*)hgfx->FBStartAdress;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1425 pDestination_zero_veil += 479 - drawVeilUntil + ( (window->right - w1 -1) * hgfx->ImageHeight);
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1426 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1427 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1428 if(h_ulong + window->top > max)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1429 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1430 max = h_ulong + window->top;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1431 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1432
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1433 // hw 160519 wof�r ist das? Damit funktioniert Temperatur 25,5�C nicht!
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1434 // if((dataMax == 255) || (data[w2] != 255))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1435 // {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1436 //output_content[pointer] = colormask;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1437 //output_mask[pointer] = true;
593
3a6f922b73ea Added PrintGraph option to skip invalid data entries:
Ideenmodellierer
parents: 583
diff changeset
1438 if(dataTemp != 0xFFFF) /* do not draw invalid data pixels */
3a6f922b73ea Added PrintGraph option to skip invalid data entries:
Ideenmodellierer
parents: 583
diff changeset
1439 {
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1440 if(w1 > 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1441 {
114
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
1442 pDestination_start = (uint16_t*)hgfx->FBStartAdress;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1443 if(!pSettings->FlipDisplay)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1444 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1445 pDestination_start += (((479 - (window->top)) + ((w1 + window->left) * hgfx->ImageHeight)));
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1446 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1447 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1448 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1449 pDestination_start += (((window->top) + ((window->right - w1) * hgfx->ImageHeight)));
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1450 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1451 pDestination_end = pDestination_start;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1452
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1453 if(!pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1454 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1455 if(h_ulong >= h_ulong_old)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1456 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1457 pDestination_start -= h_ulong_old;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1458 pDestination_end -= h_ulong;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1459 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1460 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1461 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1462 pDestination_start -= h_ulong;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1463 pDestination_end -= h_ulong_old;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1464 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1465 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1466 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1467 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1468 if(h_ulong < h_ulong_old)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1469 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1470 pDestination_start += h_ulong_old;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1471 pDestination_end += h_ulong;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1472 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1473 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1474 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1475 pDestination_start += h_ulong;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1476 pDestination_end += h_ulong_old;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1477 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1478 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1479
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1480
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1481 // deco stops
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1482 if(drawVeilUntil < 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1483 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1484 if(!pSettings->FlipDisplay)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1485 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1486 pDestination_tmp = pDestination_end;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1487 while(pDestination_tmp <= pDestination_zero_veil)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1488 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1489 *(__IO uint16_t*)pDestination_tmp = (0x80 << 8) | colormask;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1490 pDestination_tmp++;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1491 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1492 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1493 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1494 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1495 pDestination_tmp = pDestination_zero_veil;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1496 while(pDestination_tmp <= pDestination_end)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1497 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1498 *(__IO uint16_t*)pDestination_tmp = (0x80 << 8) | colormask;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1499 pDestination_tmp++;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1500 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1501 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1502 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1503 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1504 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1505 // regular graph with veil underneath if requested
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1506 // von oben nach unten
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1507 // von grossen pDestination Werten zu kleinen pDestination Werten
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1508 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1509 pDestination_tmp = pDestination_start;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1510 while(pDestination_tmp >= pDestination_end)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1511 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1512 *(__IO uint16_t*)pDestination_tmp = (0xFF << 8) | colormask ;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1513 pDestination_tmp--;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1514 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1515 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1516
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1517 if(!pSettings->FlipDisplay)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1518 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1519 while((drawVeilUntil > 0) && (pDestination_tmp >= pDestination_zero_veil))
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1520 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1521 *(__IO uint16_t*)pDestination_tmp = (0x20 << 8) | colormask ;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1522 pDestination_tmp--;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1523 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1524 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1525 else
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1526 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1527 pDestination_tmp = pDestination_start;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1528 while((drawVeilUntil > 0) && (pDestination_tmp <= pDestination_zero_veil))
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1529 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1530 *(__IO uint16_t*)pDestination_tmp = (0x20 << 8) | colormask ;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1531 pDestination_tmp++;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1532 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1533 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1534 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1535 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1536 h_ulong_old = h_ulong;
593
3a6f922b73ea Added PrintGraph option to skip invalid data entries:
Ideenmodellierer
parents: 583
diff changeset
1537 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1538 w1++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1539 w2++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1540 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1541 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1542
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1543
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1544 void GFX_draw_header(GFX_DrawCfgScreen *hgfx, uint8_t colorId)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1545 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1546 uint32_t pDestination;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1547 point_t start, stop, now;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1548 uint8_t alpha;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1549
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1550 /* display coordinate system */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1551 start.y = 400;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1552 stop.y = 479;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1553
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1554 start.x = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1555 stop.x = 799;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1556
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1557 now.y = start.y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1558 now.x = start.x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1559
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1560 while (now.x <= stop.x)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1561 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1562 now.y = start.y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1563 pDestination = (uint32_t)hgfx->FBStartAdress;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1564 pDestination += now.x * hgfx->ImageHeight * 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1565 pDestination += now.y * 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1566 now.x += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1567
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1568 alpha = 27;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1569 while(alpha < 246)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1570 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1571 alpha += 9;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1572 *(__IO uint8_t*)pDestination = colorId;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1573 pDestination += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1574 *(__IO uint8_t*)pDestination = alpha;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1575 pDestination += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1576 now.y += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1577 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1578
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1579 while(now.y <= stop.y)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1580 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1581 *(__IO uint8_t*)pDestination = colorId;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1582 pDestination += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1583 *(__IO uint8_t*)pDestination = 0xFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1584 pDestination += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1585 now.y += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1586 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1587 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1588 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1589
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1590 void GFX_draw_box2(GFX_DrawCfgScreen *hgfx, point_t start, point_t stop, uint8_t color, uint8_t roundCorners)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1591 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1592 point_t point2, point4;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1593
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1594 if(roundCorners)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1595 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1596 point2.x = stop.x - start.x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1597 point2.y = stop.y - start.y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1598 GFX_draw_box(hgfx,start,point2,1,color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1599 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1600 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1601 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1602 point2.x = stop.x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1603 point2.y = start.y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1604
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1605 point4.x = start.x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1606 point4.y = stop.y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1607
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1608 GFX_draw_line(hgfx,start,point2,color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1609 GFX_draw_line(hgfx,point2,stop,color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1610 GFX_draw_line(hgfx,stop,point4,color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1611 GFX_draw_line(hgfx,point4,start,color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1612 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1613 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1614
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1615 void GFX_draw_box(GFX_DrawCfgScreen *hgfx, point_t LeftLow, point_t WidthHeight, uint8_t Style, uint8_t color)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1616 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1617 uint16_t* pDestination;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1618 uint16_t* pStart;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1619 uint32_t j;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1620 uint32_t lineWidth, lineHeight;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1621 int x, y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1622 uint8_t intensity;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1623 int stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1624
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1625 typedef struct {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1626 int x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1627 int y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1628 uint8_t intensity;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1629 } corner_t;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1630 const corner_t corner[16] = {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1631 {3,3,255}, // nur einmal
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1632 {9,0,242},
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1633 {8,0,194},
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1634 {7,0,115},
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1635 {6,0,36},
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1636 {9,1,33},
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1637 {8,1,84},
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1638 {7,1,161},
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1639 {6,1,255},
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1640 {5,1,242},
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1641 {4,1,36},
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1642 {6,2,33},
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1643 {5,2,84},
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1644 {4,2,255},
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1645 {3,2,84},
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1646 {4,3,110}
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1647 };
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1648
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1649 SSettings* pSettings;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1650 pSettings = settingsGetPointer();
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1651
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1652 lineWidth = WidthHeight.x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1653 lineHeight = WidthHeight.y;
114
79b19d56ab08 Eliminate warnings
Ideenmodellierer
parents: 110
diff changeset
1654 pStart = (uint16_t*)hgfx->FBStartAdress;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1655
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1656 if(!pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1657 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1658 pStart += LeftLow.x * hgfx->ImageHeight;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1659 pStart += LeftLow.y;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1660 stepdir = 1;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1661 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1662 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1663 {
622
8f78faf88fc5 Adjustments for flipped display view:
Ideenmodellierer
parents: 612
diff changeset
1664 pStart += (799 - LeftLow.x) * hgfx->ImageHeight;
8f78faf88fc5 Adjustments for flipped display view:
Ideenmodellierer
parents: 612
diff changeset
1665 pStart += (479 - LeftLow.y);
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1666 stepdir = -1;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1667 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1668
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1669 // Untere Linie
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1670 pDestination = pStart;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1671 if(Style)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1672 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1673 pDestination += stepdir * 10 * hgfx->ImageHeight;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1674 lineWidth -= 18;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1675 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1676 for (j = lineWidth; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1677 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1678
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1679 *(__IO uint16_t*)pDestination = 0xFF00 + color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1680 pDestination += stepdir * hgfx->ImageHeight;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1681 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1682
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1683 // Obere Linie
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1684
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1685 pDestination = pStart + stepdir * WidthHeight.y;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1686 if(Style)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1687 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1688 pDestination += stepdir * 10 * hgfx->ImageHeight;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1689 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1690
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1691 for (j = lineWidth; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1692 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1693 *(__IO uint16_t*)pDestination = 0xFF00 + color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1694 pDestination += stepdir * hgfx->ImageHeight;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1695 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1696
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1697 // Linke Linie
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1698 pDestination = pStart;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1699
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1700 if(Style)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1701 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1702 pDestination += stepdir * 10;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1703 lineHeight -= 18;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1704 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1705
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1706 for (j = lineHeight; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1707 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1708 *(__IO uint16_t*)pDestination = 0xFF00 + color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1709 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1710 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1711
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1712
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1713 // Rechte Linie
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1714
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1715 pDestination = pStart + stepdir * WidthHeight.x * hgfx->ImageHeight;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1716 if(Style)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1717 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1718 pDestination += stepdir * 10;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1719 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1720
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1721 for (j = lineHeight; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1722 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1723 *(__IO uint16_t*)pDestination = 0xFF00 + color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1724 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1725 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1726
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1727
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1728 // Ecken wenn notwendig == Style
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1729 if(Style)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1730 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1731 // links unten
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1732 pDestination = pStart;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1733 x = corner[0].x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1734 y = corner[0].y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1735 intensity = corner[0].intensity;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1736
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1737 *(__IO uint16_t*)(pDestination + stepdir * (y + (x * hgfx->ImageHeight))) = (intensity << 8) + color;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1738
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1739 for(j = 15; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1740 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1741 x = corner[j].x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1742 y = corner[j].y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1743 intensity = corner[j].intensity;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1744 *(__IO uint16_t*)(pDestination + stepdir * (y + (x * hgfx->ImageHeight))) = (intensity << 8) + color;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1745 *(__IO uint16_t*)(pDestination + stepdir * (x + (y * hgfx->ImageHeight))) = (intensity << 8) + color;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1746 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1747 // links oben
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1748 pDestination = pStart + stepdir * WidthHeight.y;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1749 x = corner[0].x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1750 y = corner[0].y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1751 intensity = corner[0].intensity;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1752 *(__IO uint16_t*)(pDestination + stepdir * (-y + (x * hgfx->ImageHeight))) = (intensity << 8) + color;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1753
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1754 for(j = 15; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1755 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1756 x = corner[j].x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1757 y = corner[j].y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1758 intensity = corner[j].intensity;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1759 *(__IO uint16_t*)(pDestination + stepdir * (-y + (x * hgfx->ImageHeight))) = (intensity << 8) + color;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1760 *(__IO uint16_t*)(pDestination + stepdir * (-x + (y * hgfx->ImageHeight))) = (intensity << 8) + color;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1761 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1762 // rechts unten
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1763 pDestination = pStart + stepdir * WidthHeight.x * hgfx->ImageHeight;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1764 x = corner[0].x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1765 y = corner[0].y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1766 intensity = corner[0].intensity;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1767 *(__IO uint16_t*)(pDestination + stepdir * (y - (x * hgfx->ImageHeight))) = (intensity << 8) + color;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1768
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1769 for(j = 15; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1770 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1771 x = corner[j].x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1772 y = corner[j].y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1773 intensity = corner[j].intensity;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1774 *(__IO uint16_t*)(pDestination + stepdir * (y - (x * hgfx->ImageHeight))) = (intensity << 8) + color;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1775 *(__IO uint16_t*)(pDestination + stepdir * (x - (y * hgfx->ImageHeight))) = (intensity << 8) + color;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1776 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1777 // rechts oben
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1778 pDestination = pStart + stepdir * WidthHeight.y + stepdir * WidthHeight.x * hgfx->ImageHeight;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1779 x = corner[0].x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1780 y = corner[0].y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1781 intensity = corner[0].intensity;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1782 *(__IO uint16_t*)(pDestination + stepdir * -1 * (y + (x * hgfx->ImageHeight))) = (intensity << 8) + color;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1783
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1784 for(j = 15; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1785 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1786 x = corner[j].x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1787 y = corner[j].y;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1788 intensity = corner[j].intensity;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1789 *(__IO uint16_t*)(pDestination + stepdir * -1 * (y + (x * hgfx->ImageHeight))) = (intensity << 8) + color;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1790 *(__IO uint16_t*)(pDestination + stepdir * -1 * (x + (y * hgfx->ImageHeight))) = (intensity << 8) + color;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1791 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1792 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1793 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1794
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1795
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1796 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1797 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1798 * @brief GFX write label. / Write string with defined color
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1799 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1800 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1801 * @date 07-July-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1802 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1803 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1804 * @param hgfx: check gfx_engine.h.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1805 * @param color: 16bit Alpha+CLUT.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1806 * @retval None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1807 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1808
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1809 uint32_t GFX_write_label(const tFont *Font, GFX_DrawCfgWindow* hgfx, const char *pText, uint8_t color)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1810 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1811 return GFX_write_string_color(Font, hgfx, pText, 0, color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1812 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1813
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1814
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1815 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1816 ******************************************************************************
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
1817 * @brief GFX writeGfx_write_label_varstring. / Write string with all parameters and font color options
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
1818 heinrichs weikamp gmbh
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1819 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1820 * @date 22-April-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1821 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1822 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1823 * @param XleftGimpStyle:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1824 * @param XrightGimpStyle:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1825 * @param YtopGimpStyle:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1826 * @param color:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1827 * @param tFont:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1828 * @param text: text to be printed
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1829 * @retval None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1830 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1831
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1832 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)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1833 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1834
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1835 GFX_DrawCfgWindow hgfx;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1836
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1837
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1838 SSettings* pSettings;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1839 pSettings = settingsGetPointer();
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1840
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1841
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1842 if(XrightGimpStyle > 799)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1843 XrightGimpStyle = 799;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1844 if(XleftGimpStyle >= XrightGimpStyle)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1845 XleftGimpStyle = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1846 if(YtopGimpStyle > 479)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1847 YtopGimpStyle = 479;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1848 hgfx.Image = screenInput;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1849 hgfx.WindowNumberOfTextLines = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1850 hgfx.WindowLineSpacing = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1851 hgfx.WindowTab = 0;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1852
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1853 if(!pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1854 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1855 hgfx.WindowX0 = XleftGimpStyle;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1856 hgfx.WindowX1 = XrightGimpStyle;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1857 hgfx.WindowY1 = 479 - YtopGimpStyle;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1858 if(hgfx.WindowY1 < Font->height)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1859 hgfx.WindowY0 = 0;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1860 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1861 hgfx.WindowY0 = hgfx.WindowY1 - Font->height;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1862 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1863 else
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1864 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1865 hgfx.WindowX0 = 800 - XrightGimpStyle;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1866 hgfx.WindowX1 = 800 - XleftGimpStyle;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1867 hgfx.WindowY0 = YtopGimpStyle;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1868 if(hgfx.WindowY0 + Font->height > 480)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1869 hgfx.WindowY1 = 480;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1870 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1871 hgfx.WindowY1 = hgfx.WindowY0 + Font->height;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
1872 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1873 GFX_write_label(Font, &hgfx, text, color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1874 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1875
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1876 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1877 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1878 * @brief GFX write string. / Write string with all parameters and font options
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1879 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1880 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1881 * @date 22-April-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1882 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1883 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1884 * @param hgfx: check gfx_engine.h.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1885 * @param color: 32bit ARGB8888.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1886 * @retval None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1887 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1888
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1889 uint16_t GFX_return_offset(const tFont *Font, char *pText, uint8_t position)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1890 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1891 char character;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1892 uint16_t digit, i;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1893 uint8_t found;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1894 uint16_t distance;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1895
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1896 if(position == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1897 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1898
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1899 distance = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1900 for(digit = 0; digit < position; digit++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1901 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1902 character = pText[digit];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1903 if(character == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1904 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1905
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1906 found = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1907 for(i=0;i<Font->length;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1908 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1909 if(Font->chars[i].code == character)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1910 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1911 found = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1912 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1913 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1914 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1915 if(found)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1916 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1917 distance += (uint16_t)(Font->chars[i].image->width);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1918 if(Font == &FontT144)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1919 distance += 3;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1920 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1921 if(Font == &FontT105)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1922 distance += 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1923 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1924 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1925 return distance;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1926
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1927 /* FEHLT:
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1928 if(*pText < ' ')
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1929 if((*pText) & 0x80)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1930
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1931 if(((tFont *)settings.font == &FontT105) && settings.dualFont && ((*pText == '.') || (*pText == ':')))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1932 settings.font = (uint32_t)&FontT54;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1933 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1934 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1935
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1936 void GFX_clean_line(GFX_DrawCfgWindow* hgfx, uint32_t line_number)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1937 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1938 uint16_t height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1939 uint32_t pDestination, i, j;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1940 uint16_t left, width, bottom, nextlineStep;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1941
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1942 bottom = hgfx->WindowY0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1943
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1944 if(hgfx->WindowNumberOfTextLines && line_number && (line_number <= hgfx->WindowNumberOfTextLines))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1945 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1946 bottom += hgfx->WindowLineSpacing * (hgfx->WindowNumberOfTextLines - line_number);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1947 height = hgfx->WindowLineSpacing;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1948 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1949 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1950 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1951 height = 1 + hgfx->WindowY1 - bottom;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1952 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1953
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1954 pDestination = (uint32_t)hgfx->Image->FBStartAdress;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1955
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1956 left = hgfx->WindowX0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1957 width = 1 + hgfx->WindowX1 - left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1958 nextlineStep = hgfx->Image->ImageHeight - height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1959 nextlineStep *= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1960 pDestination += 2 * bottom;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1961 pDestination += 2 * hgfx->Image->ImageHeight * left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1962
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1963 for(j = width; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1964 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1965 for(i = height; i > 0; i--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1966 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1967 *(__IO uint16_t*)pDestination = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1968 pDestination += 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1969 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1970 pDestination += nextlineStep;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1971 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1972 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1973
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1974
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1975 void GFX_clean_area(GFX_DrawCfgScreen *tMscreen, uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, uint16_t YBottomGimpStyle)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1976 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1977 uint16_t height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1978 uint32_t pDestination, i, j;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1979 int32_t left, width, bottom, nextlineStep;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1980
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1981 bottom = tMscreen->ImageHeight - YBottomGimpStyle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1982 height = 1 + YBottomGimpStyle - YtopGimpStyle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1983
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1984 if(bottom < 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1985 bottom = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1986 if(height > tMscreen->ImageHeight)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1987 height = tMscreen->ImageHeight;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1988
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1989 pDestination = tMscreen->FBStartAdress;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1990
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1991 left = XleftGimpStyle;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1992 width = 1 + XrightGimpStyle - left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1993 if(width < 1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1994 width = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1995
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1996 if(width > tMscreen->ImageWidth)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1997 width = tMscreen->ImageWidth;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1998
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
1999 nextlineStep = tMscreen->ImageHeight - height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2000 nextlineStep *= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2001 pDestination += 2 * bottom;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2002 pDestination += 2 * tMscreen->ImageHeight * left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2003
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2004 for(j = width; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2005 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2006 for(i = height; i > 0; i--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2007 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2008 *(__IO uint16_t*)pDestination = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2009 pDestination += 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2010 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2011 pDestination += nextlineStep;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2012 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2013 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2015
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2016 uint32_t GFX_write_string(const tFont *Font, GFX_DrawCfgWindow* hgfx, const char *pText, uint32_t line_number)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2017 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2018 return GFX_write_string_color(Font, hgfx, pText, line_number, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2019 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2020
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2021 uint32_t GFX_write_string_color(const tFont *Font, GFX_DrawCfgWindow* hgfx, const char *pText, uint32_t line_number, uint8_t color)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2022 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2023 if(hgfx->Image->FBStartAdress < FBGlobalStart)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2024 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2025
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2026 GFX_CfgWriteString settings;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2027 uint32_t newXdelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2028 uint8_t minimal = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2029 // uint32_t try_again;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2030
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2031 if(hgfx->WindowNumberOfTextLines && line_number && (line_number <= hgfx->WindowNumberOfTextLines))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2032 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2033 settings.Ydelta = hgfx->WindowLineSpacing * (hgfx->WindowNumberOfTextLines - line_number);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2034 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2035 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2036 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2037 settings.Ydelta = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2038 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2039 settings.font = (uint32_t)Font;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2040 settings.Xdelta = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2041 settings.color = color;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2042 settings.invert = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2043 settings.resize = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2044 settings.dualFont = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2045 settings.spaceMode = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2046 settings.singleSpaceWithSizeOfNextChar = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2047 settings.useTinyFont = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2048 settings.TinyFontExtraYdelta = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2049 settings.TinyFont = (uint32_t)Font;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2050 settings.doubleSize = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2051
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2052 if((*pText) == TXT_MINIMAL) // for customtext and anything with Sonderzeichen
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2053 minimal = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2054 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2055 minimal = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2056
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2057 if(Font == &FontT144)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2058 settings.TinyFont = (uint32_t)&FontT84;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2059 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2060 if(Font == &FontT105)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2061 settings.TinyFont = (uint32_t)&FontT54;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2062 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2063 if(Font == &FontT54)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2064 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2065 settings.TinyFont = (uint32_t)&FontT48;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2066 settings.TinyFontExtraYdelta = -9;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2067 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2068 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2069 if(Font == &FontT48)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2070 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2071 settings.TinyFont = (uint32_t)&FontT24;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2072 settings.TinyFontExtraYdelta = 6;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2073 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2074 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2075 if(Font == &FontT42)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2076 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2077 settings.TinyFont = (uint32_t)&FontT24;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2078 settings.TinyFontExtraYdelta = 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2079 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2080
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2081 settings.actualFont = (tFont *)settings.font;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2082
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2083 while ((*pText != 0) && (settings.Xdelta != 0x0000FFFF))// und fehlend: Abfrage window / image size
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2084 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2085 // try_again = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2086
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2087 if((*pText == '\177') && !minimal)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2088 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2089 if(settings.singleSpaceWithSizeOfNextChar)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2090 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2091 settings.singleSpaceWithSizeOfNextChar = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2092 pText++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2093 settings.Xdelta += *pText;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2094 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2095 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2096 settings.singleSpaceWithSizeOfNextChar = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2097 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2098 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2099 if(*pText < ' ')
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2100 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2101 /* Xdelta -inline- changes */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2102 if((*pText == '\t') && !minimal)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2103 settings.Xdelta = hgfx->WindowTab - hgfx->WindowX0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2104 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2105 if(*pText == '\r') // carriage return, no newline
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2106 settings.Xdelta = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2107 else
537
0ad0b26ec56b Added center / right alignment option to custom text display:
Ideenmodellierer
parents: 509
diff changeset
2108 if((*pText == '\001')) // center
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2109 settings.Xdelta = GFX_write__Modify_Xdelta__Centered(&settings, hgfx, pText+1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2110 else
537
0ad0b26ec56b Added center / right alignment option to custom text display:
Ideenmodellierer
parents: 509
diff changeset
2111 if((*pText == '\002')) // right
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2112 settings.Xdelta = GFX_write__Modify_Xdelta__RightAlign(&settings, hgfx, pText+1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2113 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2114 if((*pText == '\003') && !minimal) // doubleSize
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2115 settings.doubleSize = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2116 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2117 /* Xdelta -up/down changes */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2118 if((*pText == '\f') && !minimal) // form feed = top align
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2119 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2120 if((hgfx->WindowY1 - hgfx->WindowY0) >= ((tFont *)settings.font)->height)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2121 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2122 settings.Ydelta = hgfx->WindowY1 - hgfx->WindowY0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2123 settings.Ydelta -= ((tFont *)settings.font)->height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2124 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2125 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2126 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2127 if(*pText == '\n') // newline, no carriage return
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2128 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2129 if(hgfx->WindowNumberOfTextLines && (line_number < hgfx->WindowNumberOfTextLines))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2130 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2131 line_number++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2132 settings.Ydelta = hgfx->WindowLineSpacing * (hgfx->WindowNumberOfTextLines - line_number);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2133 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2134 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2135 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2136 /* Font style changes */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2137 if(*pText == '\a')
737
5071d554aaa5 NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents: 705
diff changeset
2138 settings.invert = settings.invert ? 0 : 1;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2139 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2140 if((*pText == '\016') && !minimal)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2141 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2142 if(settings.dualFont == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2143 settings.dualFont = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2144 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2145 settings.actualFont = (tFont *)settings.TinyFont;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2146 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2147 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2148 if((*pText == '\017') && !minimal)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2149 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2150 settings.dualFont = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2151 settings.actualFont = (tFont *)settings.font;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2152 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2153 else
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
2154 #ifndef BOOTLOADER_STANDALONE
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2155 if((*pText == '\005') && !minimal)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2156 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2157 newXdelta = GFX_write_char(hgfx, &settings, 'a', (tFont *)&Awe48);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2158 settings.Xdelta = newXdelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2159 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2160 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2161 if((*pText == '\006') && !minimal)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2162 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2163 newXdelta = GFX_write_char(hgfx, &settings, 'b', (tFont *)&Awe48);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2164 settings.Xdelta = newXdelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2165 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2166 else
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
2167 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2168 if((*pText >= '\020') && (*pText <= '\032') && !minimal)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2169 settings.color = *pText - '\020';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2170 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2171 if((*pText == '\034') && !minimal)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2172 settings.spaceMode = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2173 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2174 if((*pText == '\035') && !minimal)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2175 settings.spaceMode = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2176 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2177 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2178 if(((*pText) == TXT_2BYTE) && !minimal)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2179 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2180 pText++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2181 settings.Xdelta = GFX_write_substring(&settings, hgfx, (uint8_t)TXT_2BYTE, (int8_t)*pText);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2182 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2183 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2184 if(((*pText) & 0x80) && !minimal)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2185 settings.Xdelta = GFX_write_substring(&settings, hgfx, (uint8_t)*pText, 0);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2186 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2187 if(!settings.invert && (*pText == ' '))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2188 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2189 if(settings.spaceMode == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2190 settings.Xdelta += ((tFont *)settings.font)->spacesize;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2191 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2192 settings.Xdelta += ((tFont *)settings.font)->spacesize2Monospaced;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2193 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2194 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2195 if((settings.spaceMode == 1) && (*pText == ' '))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2196 settings.Xdelta += ((tFont *)settings.font)->spacesize2Monospaced;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2197 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2198 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2199 if(((tFont *)settings.font == &FontT144) && ((*pText == '.') || (*pText == ':')))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2200 settings.actualFont = (tFont *)settings.TinyFont;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2201 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2202 if(((tFont *)settings.font == &FontT105) && settings.dualFont && ((*pText == '.') || (*pText == ':')))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2203 settings.actualFont = (tFont *)settings.TinyFont;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2204
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2205 if(settings.actualFont == (tFont *)settings.TinyFont)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2206 settings.Ydelta += settings.TinyFontExtraYdelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2207
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2208 newXdelta = GFX_write_char(hgfx, &settings, *(uint8_t *)pText, settings.actualFont);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2209 settings.Xdelta = newXdelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2210
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2211 if(settings.actualFont == (tFont *)settings.TinyFont)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2212 settings.Ydelta -= settings.TinyFontExtraYdelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2213 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2214 if(pText != 0) /* for TXT_2BYTE */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2215 pText++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2216 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2217 return settings.Ydelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2218 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2219
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2220 /* Private functions ---------------------------------------------------------*/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2221 /******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2222 Static Function
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2223 *******************************************************************************/
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2224
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2225 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2226 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2227 * @brief GFX write substring. / Write string without parameters
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2228 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2229 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2230 * @date 22-April-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2231 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2232 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2233 * @param hgfx: check gfx_engine.h.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2234 * @param color: 32bit ARGB8888.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2235 * @retval None
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2236 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2237
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2238 static uint32_t GFX_write_substring(GFX_CfgWriteString* cfg, GFX_DrawCfgWindow* hgfx, uint8_t textId, int8_t nextCharFor2Byte)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2239 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2240 uint8_t i, j;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2241 uint32_t found;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2242 uint32_t pText;
58
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
2243 uint16_t decodeUTF8;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2244 #ifndef BOOTLOADER_STANDALONE
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
2245 uint8_t gfx_selected_language = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2246 SSettings *pSettings;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2247 pSettings = settingsGetPointer();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2248 gfx_selected_language = pSettings->selected_language;
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
2249 if(gfx_selected_language >= LANGUAGE_END) gfx_selected_language = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2250 #endif
58
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
2251
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2252 // -----------------------------
58
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
2253 if(textId != (uint8_t)TXT_2BYTE)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2254 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2255 found = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2256 j = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2257 for(i=(uint8_t)TXT_Language;i<(uint8_t)TXT_END;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2258 {
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
2259 #ifndef BOOTLOADER_STANDALONE
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2260 if(text_array[j].code == textId)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2261 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2262 found = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2263 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2264 }
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
2265 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2266 j++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2267 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2268 if(!found)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2269 return cfg->Xdelta;
58
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
2270
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2271 // -----------------------------
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
2272 #ifndef BOOTLOADER_STANDALONE
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2273 pText = (uint32_t)text_array[j].text[gfx_selected_language];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2274 if(!pText)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2275 pText = (uint32_t)text_array[j].text[0];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2276 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2277 if(*(char*)pText == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2278 pText = (uint32_t)text_array[j].text[0];
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
2279 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2280 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2281 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2282 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2283 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2284 if(!nextCharFor2Byte)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2285 return cfg->Xdelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2286
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2287 found = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2288 for(j=0;j<(uint8_t)TXT2BYTE_END-(uint8_t)TXT2BYTE_START;j++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2289 {
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
2290 #ifndef BOOTLOADER_STANDALONE
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2291 if((uint8_t)text_array2[j].code == (uint8_t)nextCharFor2Byte)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2292 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2293 found = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2294 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2295 }
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
2296 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2297 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2298 if(!found)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2299 return cfg->Xdelta;
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
2300 #ifndef BOOTLOADER_STANDALONE
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2301 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2302 pText = (uint32_t)text_array2[j].text[gfx_selected_language];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2303 if(!pText)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2304 pText = (uint32_t)text_array2[j].text[0];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2305 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2306 if(*(char*)pText == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2307 pText = (uint32_t)text_array2[j].text[0];
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
2308 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2309 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2310 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2311
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2312 if(cfg->actualFont == (tFont *)cfg->TinyFont)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2313 cfg->Ydelta += cfg->TinyFontExtraYdelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2314
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2315 while (*(char*)pText != 0)// und fehlend: Abfrage window / image size
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2316 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2317 if(*(char*)pText == '\t')
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2318 cfg->Xdelta = hgfx->WindowTab - hgfx->WindowX0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2319 else
612
82d58470fd94 Bugfix inverted whitspace:
Ideenmodellierer
parents: 593
diff changeset
2320 if((*(char*)pText == ' ') && (cfg->invert == 0)) /* bypass drawing of white space only for not inverted mode */
82d58470fd94 Bugfix inverted whitspace:
Ideenmodellierer
parents: 593
diff changeset
2321 {
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2322 cfg->Xdelta += ((tFont *)cfg->actualFont)->spacesize;
612
82d58470fd94 Bugfix inverted whitspace:
Ideenmodellierer
parents: 593
diff changeset
2323 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2324 else
58
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
2325 if((*(char*)pText) & 0x80) /* Identify a UNICODE character other than standard ASCII using the highest bit */
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
2326 {
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
2327 decodeUTF8 = ((*(char*)pText) & 0x1F) << 6; /* use 5bits of first byte for upper part of unicode */
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
2328 pText++;
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
2329 decodeUTF8 |= (*(char*)pText) & 0x3F; /* add lower 6bits as second part of the unicode */
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
2330 if (decodeUTF8 <= 0xff) /* The following function has a uint8 input parameter ==> no UNICODEs > 0xff supported */
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
2331 {
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
2332 cfg->Xdelta = GFX_write_char(hgfx, cfg, (uint8_t)decodeUTF8, (tFont *)cfg->actualFont);
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
2333 }
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
2334 }
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
2335 else
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2336 cfg->Xdelta = GFX_write_char(hgfx, cfg, *(uint8_t *)pText, (tFont *)cfg->actualFont);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2337
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2338 pText++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2339 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2340
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2341 if(cfg->actualFont == (tFont *)cfg->TinyFont)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2342 cfg->Ydelta -= cfg->TinyFontExtraYdelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2343
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2344 return cfg->Xdelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2345 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2346
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2347
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2348 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2349 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2350 * @brief GFX write char. / Write non-inverted, non-colored with entire 8 bit range
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2351 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2352 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2353 * @date 22-April-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2354 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2355 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2356 * @param hgfx: check gfx_engine.h.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2357 * @param Ydelta: input
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2358 * @param character: character
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2359 * @param *Font: pointer to font to be used for this char
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2360 * @retval Ydelta: 0x0000FFFF if not successful or char_truncated
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2361 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2362
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2363 static uint32_t GFX_write_char_doubleSize(GFX_DrawCfgWindow* hgfx, GFX_CfgWriteString* cfg, uint8_t character, tFont *Font)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2364 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2365 uint32_t i, j;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2366 uint32_t width, height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2367 uint32_t found;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2368 uint16_t* pDestination;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2369 uint32_t pSource;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2370 uint32_t OffsetDestination;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2371 uint32_t width_left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2372 uint32_t height_left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2373 uint32_t char_truncated_WidthFlag;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2374 uint32_t char_truncated_Height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2375 uint8_t fill;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2376 uint32_t widthFont, heightFont;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2377 uint32_t nextLine;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2378 int32_t stepdir;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2379
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2380 SSettings* pSettings;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2381 pSettings = settingsGetPointer();
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2382
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2383 if(pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2384 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2385 stepdir = -1; /* decrement address while putting pixels */
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2386 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2387 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2388 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2389 stepdir = 1;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2390 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2391
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2392
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2393 if(hgfx->Image->ImageWidth <= (hgfx->WindowX0 + cfg->Xdelta))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2394 return 0x0000FFFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2395
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2396 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2397 found = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2398 for(i=0;i<Font->length;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2399 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2400 if(Font->chars[i].code == character)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2401 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2402 found = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2403 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2404 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2405 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2406 if(!found)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2407 return cfg->Xdelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2408
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2409 pSource = ((uint32_t)Font->chars[i].image->data);
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2410 pDestination = (uint16_t*)(hgfx->Image->FBStartAdress);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2411
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2412 heightFont = Font->chars[i].image->height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2413 widthFont = Font->chars[i].image->width;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2414
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2415 height = heightFont*2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2416 width = widthFont*2;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2417
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2418
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2419 if(pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2420 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2421 pDestination += (uint32_t)(hgfx->WindowX1 - cfg->Xdelta) * hgfx->Image->ImageHeight; /* set pointer to delta row */
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2422 pDestination += (hgfx->WindowY1 - cfg->Ydelta); /* set pointer to delta colum */
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2423 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2424 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2425 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2426 pDestination += (uint32_t)(hgfx->WindowX0 + cfg->Xdelta) * hgfx->Image->ImageHeight; /* set pointer to delta row */
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2427 pDestination += (hgfx->WindowY0 + cfg->Ydelta); /* set pointer to delta colum */
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2428 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2429 OffsetDestination = (hgfx->Image->ImageHeight - height);
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2430 nextLine = hgfx->Image->ImageHeight;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2431
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2432 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2433 char_truncated_WidthFlag = 0;
772
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2434 if(!pSettings->FlipDisplay)
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2435 {
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2436 width_left = hgfx->Image->ImageWidth - (hgfx->WindowX0 + cfg->Xdelta);
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2437 }
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2438 else
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2439 {
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2440 width_left = (hgfx->WindowX1 - cfg->Xdelta);
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2441 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2442 if(width_left < width)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2443 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2444 char_truncated_WidthFlag = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2445 width = width_left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2446 widthFont = width/2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2447 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2448 // -----------------------------
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2449
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2450 char_truncated_Height = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2451 height_left = hgfx->Image->ImageHeight - (hgfx->WindowY0 + cfg->Ydelta);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2452 if(height_left < height)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2453 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2454 char_truncated_Height = height - height_left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2455 if((char_truncated_Height & 1) != 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2456 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2457 height_left -= 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2458 char_truncated_Height += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2459 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2460 height = height_left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2461 heightFont = height/2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2462 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2463
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2464 OffsetDestination += char_truncated_Height;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2465 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2466 if(height == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2467 return 0x0000FFFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2468 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2469
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2470 if(cfg->singleSpaceWithSizeOfNextChar)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2471 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2472 cfg->singleSpaceWithSizeOfNextChar = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2473
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2474 if(cfg->invert)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2475 fill = 0xFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2476 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2477 fill = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2478
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2479 height /= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2480 for(i = width; i > 0; i--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2481 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2482 for (j = height; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2483 {
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2484 *(__IO uint16_t*)pDestination = fill << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2485 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2486 *(__IO uint16_t*)pDestination = fill << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2487 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2488 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2489 pDestination += stepdir * OffsetDestination;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2490 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2491 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2492 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2493 if(cfg->invert)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2494 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2495 if((heightFont & 3) == 0) /* unroll for perfomance, by 4 if possible, by 2 (16bit) otherwise */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2496 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2497 heightFont /= 4;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2498 for(i = widthFont; i > 0; i--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2499 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2500 if(*(uint8_t*)pSource != 0x01)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2501 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2502 for (j = heightFont; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2503 {
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2504 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2505 *(__IO uint16_t*)(pDestination + nextLine) = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2506 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2507 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2508 *(__IO uint16_t*)(pDestination + nextLine) = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2509 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2510 pSource++;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2511
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2512 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2513 *(__IO uint16_t*)(pDestination + nextLine) = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2514 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2515 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2516 *(__IO uint16_t*)(pDestination + nextLine) = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2517 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2518 pSource++;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2519
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2520 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2521 *(__IO uint16_t*)(pDestination + nextLine) = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2522 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2523 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2524 *(__IO uint16_t*)(pDestination + nextLine) = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2525 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2526 pSource++;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2527
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2528 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2529 *(__IO uint16_t*)(pDestination + nextLine) = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2530 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2531 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2532 *(__IO uint16_t*)(pDestination + nextLine) = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2533 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2534 pSource++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2535 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2536 pSource += char_truncated_Height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2537 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2538 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2539 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2540 pSource++;
612
82d58470fd94 Bugfix inverted whitspace:
Ideenmodellierer
parents: 593
diff changeset
2541 for (j = heightFont; j > 0; j--)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2542 {
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2543 *(__IO uint16_t*)pDestination = 0xFF << 8 | cfg->color;
612
82d58470fd94 Bugfix inverted whitspace:
Ideenmodellierer
parents: 593
diff changeset
2544 *(__IO uint16_t*)(pDestination + nextLine) = 0xFF << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2545 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2546 *(__IO uint16_t*)pDestination = 0xFF << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2547 *(__IO uint16_t*)(pDestination + nextLine) = 0xFF << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2548 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2549 *(__IO uint16_t*)pDestination = 0xFF << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2550 *(__IO uint16_t*)(pDestination + nextLine) = 0xFF << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2551 pDestination += stepdir;
612
82d58470fd94 Bugfix inverted whitspace:
Ideenmodellierer
parents: 593
diff changeset
2552 *(__IO uint16_t*)pDestination = 0xFF << 8 | cfg->color;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2553 *(__IO uint16_t*)(pDestination + nextLine) = 0xFF << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2554 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2555 *(__IO uint16_t*)pDestination = 0xFF << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2556 *(__IO uint16_t*)(pDestination + nextLine) = 0xFF << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2557 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2558 *(__IO uint16_t*)pDestination = 0xFF << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2559 *(__IO uint16_t*)(pDestination + nextLine) = 0xFF << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2560 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2561 *(__IO uint16_t*)pDestination = 0xFF << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2562 *(__IO uint16_t*)(pDestination + nextLine) = 0xFF << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2563 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2564 *(__IO uint16_t*)pDestination = 0xFF << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2565 *(__IO uint16_t*)(pDestination + nextLine) = 0xFF << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2566 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2567 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2568 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2569 pDestination += (OffsetDestination + nextLine) * stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2570 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2571 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2572 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2573 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2574 heightFont /= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2575 for(i = widthFont; i > 0; i--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2576 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2577 if(*(uint8_t*)pSource != 0x01)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2578 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2579 for (j = heightFont; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2580 {
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2581 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2582 *(__IO uint16_t*)(pDestination + nextLine) = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2583 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2584 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2585 *(__IO uint16_t*)(pDestination + nextLine) = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2586 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2587 pSource++;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2588
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2589 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2590 *(__IO uint16_t*)(pDestination + nextLine) = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2591 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2592 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2593 *(__IO uint16_t*)(pDestination + nextLine) = (0xFF - *(uint8_t*)pSource) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2594 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2595 pSource++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2596 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2597 pSource += char_truncated_Height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2598 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2599 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2600 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2601 pSource++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2602 for (j = heightFont; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2603 {
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2604 *(__IO uint16_t*)pDestination = 0xFF << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2605 *(__IO uint16_t*)(pDestination + nextLine) = 0xFF << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2606 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2607 *(__IO uint16_t*)pDestination = 0xFF << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2608 *(__IO uint16_t*)(pDestination + nextLine) = 0xFF << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2609 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2610 *(__IO uint16_t*)pDestination = 0xFF << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2611 *(__IO uint16_t*)(pDestination + nextLine) = 0xFF << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2612 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2613 *(__IO uint16_t*)pDestination = 0xFF << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2614 *(__IO uint16_t*)(pDestination + nextLine) = 0xFF << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2615 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2616 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2617 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2618 pDestination += (OffsetDestination + nextLine) * stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2619 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2620 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2621 } /* inverted */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2622 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2623 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2624 if((heightFont & 3) == 0) /* unroll for perfomance, by 4 if possible, by 2 (16bit) otherwise */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2625 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2626 heightFont /= 4;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2627 for(i = widthFont; i > 0; i--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2628 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2629 if(*(uint8_t*)pSource != 0x01)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2630 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2631 for (j = heightFont; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2632 {
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2633 *(__IO uint16_t*)pDestination = *(uint8_t*)pSource << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2634 *(__IO uint16_t*)(pDestination + (stepdir * nextLine)) = *(uint8_t*)pSource << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2635 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2636 *(__IO uint16_t*)pDestination = *(uint8_t*)pSource << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2637 *(__IO uint16_t*)(pDestination + (stepdir * nextLine)) = *(uint8_t*)pSource << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2638 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2639 pSource++;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2640
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2641 *(__IO uint16_t*)pDestination = *(uint8_t*)pSource << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2642 *(__IO uint16_t*)(pDestination + (stepdir * nextLine)) = *(uint8_t*)pSource << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2643 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2644 *(__IO uint16_t*)pDestination = *(uint8_t*)pSource << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2645 *(__IO uint16_t*)(pDestination + (stepdir * nextLine)) = *(uint8_t*)pSource << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2646 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2647 pSource++;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2648
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2649 *(__IO uint16_t*)pDestination = *(uint8_t*)pSource << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2650 *(__IO uint16_t*)(pDestination + (stepdir * nextLine)) = *(uint8_t*)pSource << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2651 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2652 *(__IO uint16_t*)pDestination = *(uint8_t*)pSource << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2653 *(__IO uint16_t*)(pDestination + (stepdir * nextLine)) = *(uint8_t*)pSource << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2654 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2655 pSource++;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2656
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2657 *(__IO uint16_t*)pDestination = *(uint8_t*)pSource << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2658 *(__IO uint16_t*)(pDestination + (stepdir * nextLine)) = *(uint8_t*)pSource << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2659 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2660 *(__IO uint16_t*)pDestination = *(uint8_t*)pSource << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2661 *(__IO uint16_t*)(pDestination + (stepdir * nextLine)) = *(uint8_t*)pSource << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2662 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2663 pSource++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2664 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2665 pSource += char_truncated_Height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2666 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2667 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2668 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2669 pSource++;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2670 pDestination += stepdir * height;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2671 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2672 pDestination += stepdir * (OffsetDestination + nextLine);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2673 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2674 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2675 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2676 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2677 heightFont /= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2678 for(i = widthFont; i > 0; i--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2679 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2680 if(*(uint8_t*)pSource != 0x01)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2681 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2682 for (j = heightFont; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2683 {
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2684 *(__IO uint16_t*)pDestination = *(uint8_t*)pSource << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2685 *(__IO uint16_t*)(pDestination + (stepdir * nextLine)) = *(uint8_t*)pSource << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2686 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2687 *(__IO uint16_t*)pDestination = *(uint8_t*)pSource << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2688 *(__IO uint16_t*)(pDestination + (stepdir * nextLine)) = *(uint8_t*)pSource << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2689 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2690 pSource++;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2691
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2692 *(__IO uint16_t*)pDestination = *(uint8_t*)pSource << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2693 *(__IO uint16_t*)(pDestination + (stepdir * nextLine)) = *(uint8_t*)pSource << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2694 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2695 *(__IO uint16_t*)pDestination = *(uint8_t*)pSource << 8 | cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2696 *(__IO uint16_t*)(pDestination + (stepdir * nextLine)) = *(uint8_t*)pSource << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2697 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2698 pSource++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2699 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2700 pSource += char_truncated_Height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2701 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2702 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2703 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2704 pSource++;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2705 pDestination += stepdir * height;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2706 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2707 pDestination += stepdir * (OffsetDestination + nextLine);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2708 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2709 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2710 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2711
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2712 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2713
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2714 if(Font == &FontT144)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2715 width += 6;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2716 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2717 if(Font == &FontT105)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2718 width += 4;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2719
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2720 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2721
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2722 if(char_truncated_WidthFlag)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2723 return 0x0000FFFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2724 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2725 return cfg->Xdelta + width;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2726
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2727 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2728
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2729
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2730 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2731 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2732 * @brief GFX write char. / Write non-inverted, non-colored with entire 8 bit range
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2733 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2734 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2735 * @date 22-April-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2736 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2737 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2738 * @param hgfx: check gfx_engine.h.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2739 * @param Ydelta: input
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2740 * @param character: character
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2741 * @param *Font: pointer to font to be used for this char
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2742 * @retval Ydelta: 0x0000FFFF if not successful or char_truncated
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2743 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2744
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2745 static uint32_t GFX_write_char(GFX_DrawCfgWindow* hgfx, GFX_CfgWriteString* cfg, uint8_t character, tFont *Font)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2746 {
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
2747
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
2748 #ifndef BOOTLOADER_STANDALONE
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
2749 Font = GFX_Check_Extra_Font(character, Font);
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
2750 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2751 if(cfg->doubleSize)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2752 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2753 return GFX_write_char_doubleSize(hgfx, cfg, character, Font);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2754 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2755
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2756 uint32_t i, j;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2757 uint32_t width, height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2758 uint32_t found;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2759 uint16_t* pDestination;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2760 uint32_t pSource;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2761 uint32_t OffsetDestination;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2762 uint32_t width_left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2763 uint32_t height_left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2764 uint32_t char_truncated_WidthFlag;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2765 uint32_t char_truncated_Height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2766 uint8_t fill;
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
2767 uint32_t fillpattern;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2768 int16_t stepdir;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2769
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2770 SSettings* pSettings;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2771 pSettings = settingsGetPointer();
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2772
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2773 if(pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2774 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2775 stepdir = -1; /* decrement address while putting pixels */
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2776 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2777 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2778 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2779 stepdir = 1;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2780 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2781
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2782 if(hgfx->Image->ImageWidth <= (hgfx->WindowX0 + cfg->Xdelta))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2783 return 0x0000FFFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2784
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2785 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2786 found = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2787 for(i=0;i<Font->length;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2788 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2789 if(Font->chars[i].code == character)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2790 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2791 found = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2792 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2793 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2794 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2795 if(!found)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2796 return cfg->Xdelta;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2797 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2798 /*
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2799 if(Font == &Font144)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2800 cfg->Xdelta += 3;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2801 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2802 if(Font == &Font84)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2803 cfg->Xdelta += 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2804 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2805 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2806
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2807
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2808 pSource = ((uint32_t)Font->chars[i].image->data);
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2809 pDestination = (uint16_t*)(hgfx->Image->FBStartAdress);
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2810
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2811
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2812 height = Font->chars[i].image->height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2813 width = Font->chars[i].image->width;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2814
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2815 OffsetDestination = hgfx->Image->ImageHeight - height;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2816
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2817
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2818 /* Xyyyyy y= height */
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2819 /* Xyyyyy x= width */
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2820 /* Xyyyyy */
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2821
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2822 if(pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2823 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2824 pDestination += (hgfx->WindowX1 - cfg->Xdelta) * hgfx->Image->ImageHeight; /* set pointer to delta row */
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2825 pDestination += (hgfx->WindowY1 - cfg->Ydelta); /* set pointer to delta colum */
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2826 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2827 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2828 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2829 pDestination += (hgfx->WindowX0 + cfg->Xdelta) * hgfx->Image->ImageHeight; /* set pointer to delta row */
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2830 pDestination += (hgfx->WindowY0 + cfg->Ydelta); /* set pointer to delta colum */
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2831 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2832
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2833
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2834 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2835 char_truncated_WidthFlag = 0;
772
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2836 if(!pSettings->FlipDisplay)
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2837 {
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2838 width_left = hgfx->Image->ImageWidth - (hgfx->WindowX0 + cfg->Xdelta);
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2839 }
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2840 else
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2841 {
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2842 width_left = (hgfx->WindowX1 - cfg->Xdelta);
b7e43b28bee1 Fix character truncation when screen is flipped. This was causing the dive computer to lock up when in English Units with the screen flipped when the first decompression stop is shown using FONT_105.
izzni
parents: 763
diff changeset
2843 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2844 if(width_left < width)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2845 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2846 char_truncated_WidthFlag = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2847 width = width_left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2848 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2849 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2850 char_truncated_Height = 0;
681
7fa5ef6ae419 Bugfix screen clipping (Flipdisplay mode):
Ideenmodellierer
parents: 649
diff changeset
2851 if(!pSettings->FlipDisplay)
7fa5ef6ae419 Bugfix screen clipping (Flipdisplay mode):
Ideenmodellierer
parents: 649
diff changeset
2852 {
7fa5ef6ae419 Bugfix screen clipping (Flipdisplay mode):
Ideenmodellierer
parents: 649
diff changeset
2853 height_left = hgfx->Image->ImageHeight - (hgfx->WindowY0 + cfg->Ydelta);
7fa5ef6ae419 Bugfix screen clipping (Flipdisplay mode):
Ideenmodellierer
parents: 649
diff changeset
2854 }
7fa5ef6ae419 Bugfix screen clipping (Flipdisplay mode):
Ideenmodellierer
parents: 649
diff changeset
2855 else
7fa5ef6ae419 Bugfix screen clipping (Flipdisplay mode):
Ideenmodellierer
parents: 649
diff changeset
2856 {
7fa5ef6ae419 Bugfix screen clipping (Flipdisplay mode):
Ideenmodellierer
parents: 649
diff changeset
2857 height_left = (hgfx->WindowY1 - cfg->Ydelta);
7fa5ef6ae419 Bugfix screen clipping (Flipdisplay mode):
Ideenmodellierer
parents: 649
diff changeset
2858 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2859 if(height_left < height)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2860 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2861 char_truncated_Height = height - height_left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2862 if((char_truncated_Height & 1) != 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2863 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2864 height_left -= 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2865 char_truncated_Height += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2866 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2867 height = height_left;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2868 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2869 OffsetDestination += char_truncated_Height;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2870 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2871 if(height == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2872 return 0x0000FFFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2873 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2874
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2875 if(cfg->singleSpaceWithSizeOfNextChar)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2876 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2877 cfg->singleSpaceWithSizeOfNextChar = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2878
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2879 if(cfg->invert)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2880 fill = 0xFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2881 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2882 fill = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2883
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2884 height /= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2885 for(i = width; i > 0; i--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2886 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2887 for (j = height; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2888 {
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2889 *(__IO uint16_t*)pDestination = fill << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2890 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2891 *(__IO uint16_t*)pDestination = fill << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2892 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2893 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2894 pDestination += stepdir * OffsetDestination;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2895 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2896 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2897 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2898 if(cfg->invert)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2899 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2900 if((height & 3) == 0) /* unroll for perfomance, by 4 if possible, by 2 (16bit) otherwise */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2901 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2902 height /= 4;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2903 for(i = width; i > 0; i--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2904 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2905 if(*(uint8_t*)pSource != 0x01)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2906 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2907
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2908 for (j = height; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2909 {
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2910 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource++) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2911 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2912 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource++) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2913 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2914 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource++) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2915 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2916 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource++) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2917 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2918 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2919 pSource += char_truncated_Height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2920 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2921 else /* empty line => fast fill */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2922 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2923 pSource++;
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
2924 fillpattern = (( 0xFF << 8 | cfg->color) << 16) | ( 0xFF << 8 | cfg->color);
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
2925 if(pSettings->FlipDisplay) pDestination--; /* address fill from high to low */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2926 for (j = height; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2927 {
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
2928 *(__IO uint32_t*)pDestination = fillpattern;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2929 pDestination += stepdir;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2930 pDestination += stepdir;
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
2931 *(__IO uint32_t*)pDestination = fillpattern;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2932 pDestination += stepdir;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2933 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2934 }
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
2935 if(pSettings->FlipDisplay) pDestination++;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2936 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2937 pDestination += stepdir * OffsetDestination;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2938 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2939 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2940 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2941 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2942 height /= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2943 for(i = width; i > 0; i--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2944 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2945 if(*(uint8_t*)pSource != 0x01)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2946 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2947 for (j = height; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2948 {
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2949 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource++) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2950 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2951 *(__IO uint16_t*)pDestination = (0xFF - *(uint8_t*)pSource++) << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2952 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2953 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2954 pSource += char_truncated_Height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2955 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2956 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2957 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2958 pSource++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2959 for (j = height; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2960 {
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2961 *(__IO uint16_t*)pDestination = 0xFF << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2962 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2963 *(__IO uint16_t*)pDestination = 0xFF << 8 | cfg->color;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2964 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2965 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2966 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2967 pDestination += stepdir * OffsetDestination;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2968 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2969 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2970 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2971 else /* not inverted */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2972 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2973 if((height & 3) == 0) /* unroll for perfomance, by 4 if possible, by 2 (16bit) otherwise */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2974 {
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2975
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2976 height /= 4;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2977
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2978 for(i = width; i > 0; i--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2979 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2980 if(*(uint8_t*)pSource != 0x01)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2981 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2982 for (j = height; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2983 {
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2984 *(__IO uint16_t*)pDestination = ( *(uint8_t*)pSource++ << 8) | (cfg->color);
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2985 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2986 *(__IO uint16_t*)pDestination = ( *(uint8_t*)pSource++ << 8) | (cfg->color);
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2987 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2988 *(__IO uint16_t*)pDestination = ( *(uint8_t*)pSource++ << 8) | (cfg->color);
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2989 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2990 *(__IO uint16_t*)pDestination = ( *(uint8_t*)pSource++ << 8) | (cfg->color);
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
2991 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2992 }
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
2993
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2994 pSource += char_truncated_Height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2995 }
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
2996 else /* clear line */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2997 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
2998 pSource++;
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
2999 fillpattern = (cfg->color << 16) | cfg->color;
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
3000 if(pSettings->FlipDisplay) pDestination--; /* address fill from high to low */
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
3001
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3002 for (j = height; j > 0; j--)
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3003 {
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
3004 *(__IO uint32_t*)pDestination = fillpattern;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3005 pDestination += stepdir;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3006 pDestination += stepdir;
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
3007 *(__IO uint32_t*)pDestination = fillpattern;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3008 pDestination += stepdir;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3009 pDestination += stepdir;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3010 }
121
0d97971b771b Use 32bit operations for buffer fills
Ideenmodellierer
parents: 119
diff changeset
3011 if(pSettings->FlipDisplay) pDestination++;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3012 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3013 pDestination += stepdir * OffsetDestination;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3014 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3015 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3016 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3017 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3018 height /= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3019 for(i = width; i > 0; i--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3020 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3021 if(*(uint8_t*)pSource != 0x01)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3022 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3023 for (j = height; j > 0; j--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3024 {
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3025 *(__IO uint16_t*)pDestination = ( *(uint8_t*)pSource++ << 8) | (cfg->color);
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3026 pDestination += stepdir;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3027 *(__IO uint16_t*)pDestination = ( *(uint8_t*)pSource++ << 8) | (cfg->color);
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3028 pDestination += stepdir;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3029 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3030 pSource += char_truncated_Height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3031 }
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3032 else /* clear line */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3033 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3034 pSource++;
119
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3035 for (j = height; j > 0; j--)
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3036 {
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3037 *(__IO uint16_t*)pDestination = cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3038 pDestination += stepdir;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3039 *(__IO uint16_t*)pDestination = cfg->color;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3040 pDestination += stepdir;
76fa42fc0b20 Cleanup writechar pointers
Ideenmodellierer
parents: 114
diff changeset
3041 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3042 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3043 pDestination += stepdir * OffsetDestination;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3044 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3045 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3046 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3047
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3048 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3049
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3050 if(Font == &FontT144)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3051 width += 3;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3052 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3053 if(Font == &FontT105)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3054 width += 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3055 /*
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3056 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3057 if(Font == &Font144)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3058 width += 3;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3059 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3060 if(Font == &Font84)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3061 width += 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3062 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3063 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3064
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3065 if(char_truncated_WidthFlag)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3066 return 0x0000FFFF;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3067 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3068 return cfg->Xdelta + width;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3069 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3070
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
3071 #ifndef BOOTLOADER_STANDALONE
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3072
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3073 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3074 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3075 * @brief GFX write Modify helper for center and right align.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3076 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3077 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3078 * @date 17-March-2015
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3079 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3080 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3081 * @param *cText: output
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3082 * @param *pTextInput: input
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3083 * @param gfx_selected_language: gfx_selected_language
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3084 * @retval counter and *cText content
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3085 */
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
3086 static int8_t GFX_write__Modify_helper(char *cText, const char *pTextInput, uint8_t gfx_selected_language)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3087 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3088 uint32_t pText, backup;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3089 uint8_t textId;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3090 int8_t counter;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3091 uint32_t found;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3092 uint32_t j;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3093
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3094 pText = (uint32_t)pTextInput;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3095 counter = 0;
537
0ad0b26ec56b Added center / right alignment option to custom text display:
Ideenmodellierer
parents: 509
diff changeset
3096 while((counter < 100) && (*(char*)pText != 0) && (*(char*)pText != '\r') && (*(char*)pText != '\n'))
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3097 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3098 if((*(char*)pText) == TXT_2BYTE)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3099 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3100 backup = pText;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3101
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3102 found = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3103 j = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3104 textId = (int8_t)*(char*)(pText + 1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3105 if(textId != 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3106 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3107 for(j=0;j<(uint8_t)TXT2BYTE_END-(uint8_t)TXT2BYTE_START;j++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3108 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3109 if((uint8_t)text_array2[j].code == (uint8_t)textId)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3110 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3111 found = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3112 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3113 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3114 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3115 if(found)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3116 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3117 pText = (uint32_t)text_array2[j].text[gfx_selected_language];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3118 if(!pText)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3119 pText = (uint32_t)text_array2[j].text[0];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3120 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3121 if(*(char*)pText == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3122 pText = (uint32_t)text_array2[j].text[0];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3123
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3124 while((counter < 100) && (*(char*)pText != 0))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3125 cText[counter++] = *(char*)pText++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3126 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3127 pText = backup + 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3128 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3129 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3130 pText = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3131 }
699
01f40cb1057e Cleanup warnings:
Ideenmodellierer
parents: 698
diff changeset
3132 if(0 != pText && ((*(char*)pText) & 0x80))
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3133 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3134 backup = pText;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3135
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3136 found = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3137 j = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3138 textId = (uint8_t)*(char*)pText;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3139 for(uint8_t ii=(uint8_t)TXT_Language;ii<(uint8_t)TXT_END;ii++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3140 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3141 if(text_array[j].code == textId)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3142 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3143 found = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3144 break;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3145 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3146 j++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3147 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3148 if(found)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3149 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3150 pText = (uint32_t)text_array[j].text[gfx_selected_language];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3151 if(!pText)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3152 pText = (uint32_t)text_array[j].text[0];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3153 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3154 if(*(char*)pText == 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3155 pText = (uint32_t)text_array[j].text[0];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3156
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3157 while((counter < 100) && (*(char*)pText != 0))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3158 cText[counter++] = *(char*)pText++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3159 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3160 pText = backup + 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3161 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3162 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3163 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3164 cText[counter++] = *(char*)pText++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3165 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3166 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3167 cText[counter] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3168 return counter;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3169 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3170
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
3171 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3172 /**
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3173 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3174 * @brief GFX write Modify Ydelta for align. / calc Ydelta for start
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3175 * @author heinrichs weikamp gmbh
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3176 * @version V0.0.1
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3177 * @date 22-April-2014
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3178 ******************************************************************************
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3179 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3180 * @param *hgfx: check gfx_engine.h.
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3181 * @param *cfg: Ydelta, Font
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3182 * @param *pText: character
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3183 * @retval Ydelta: 0 if text has to start left ( and probably does not fit)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3184 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3185
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
3186 static uint32_t GFX_write__Modify_Xdelta__Centered(GFX_CfgWriteString* cfg, GFX_DrawCfgWindow* hgfx, const char *pTextInput)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3187 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3188 char cText[101];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3189 uint32_t result;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3190 uint32_t Xsum;
583
3860b8fa4b29 Solved minor warnings
Ideenmodellierer
parents: 567
diff changeset
3191 uint32_t j;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3192 uint32_t pText;
58
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
3193 uint16_t decodeUTF8;
481
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3194 uint8_t tinyState = 0; /* used to identify the usage of tiny font */
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3195 tFont* ptargetFont;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3196
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3197 #ifndef BOOTLOADER_STANDALONE
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
3198 uint8_t gfx_selected_language = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3199 SSettings *pSettings;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3200 pSettings = settingsGetPointer();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3201 gfx_selected_language = pSettings->selected_language;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3202 if(gfx_selected_language >= LANGUAGE_END)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3203 #endif
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3204 // -----------------------------
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
3205 #ifndef BOOTLOADER_STANDALONE
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3206 GFX_write__Modify_helper(cText,pTextInput,gfx_selected_language);
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
3207 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3208 pText = (uint32_t)&cText[0];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3209 Xsum = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3210 j = 0;
565
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3211 ptargetFont = (tFont *)cfg->font;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3212 while (*(char*)pText != 0)// und fehlend: Abfrage window / image size
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3213 {
481
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3214 if(*(char*)pText == '\016') /* request font change */
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3215 {
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3216 tinyState++;
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3217 }
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3218 if(*(char*)pText == '\017') /* request font reset */
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3219 {
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3220 tinyState = 0;
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3221 }
565
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3222
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3223 if((ptargetFont == &FontT105) && ((*(char*)pText == '.') || (*(char*)pText == ':')))
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3224 {
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3225 tinyState++;
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3226 }
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3227
481
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3228 if(tinyState > 1)
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3229 {
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3230 ptargetFont = (tFont *)cfg->TinyFont;
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3231 }
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3232 else
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3233 {
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3234 ptargetFont = (tFont *)cfg->font;
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3235 }
649
60162a939c06 Bugfix consider checkbox in calculation of right aligned and centered position:
Ideenmodellierer
parents: 623
diff changeset
3236
699
01f40cb1057e Cleanup warnings:
Ideenmodellierer
parents: 698
diff changeset
3237 decodeUTF8 = *(char*)pText; /* place ASCII char */
649
60162a939c06 Bugfix consider checkbox in calculation of right aligned and centered position:
Ideenmodellierer
parents: 623
diff changeset
3238 if((*(char*)pText == '\005') || (*(char*)pText == '\006'))
60162a939c06 Bugfix consider checkbox in calculation of right aligned and centered position:
Ideenmodellierer
parents: 623
diff changeset
3239 {
60162a939c06 Bugfix consider checkbox in calculation of right aligned and centered position:
Ideenmodellierer
parents: 623
diff changeset
3240 Xsum += 45;
60162a939c06 Bugfix consider checkbox in calculation of right aligned and centered position:
Ideenmodellierer
parents: 623
diff changeset
3241 }
60162a939c06 Bugfix consider checkbox in calculation of right aligned and centered position:
Ideenmodellierer
parents: 623
diff changeset
3242 else
58
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
3243 {
698
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
3244 if((*(char*)pText) & 0x80) /* Identify a UNICODE character other than standard ASCII using the highest bit */
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
3245 {
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
3246 decodeUTF8 = ((*(char*)pText) & 0x1F) << 6; /* use 5bits of first byte for upper part of unicode */
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
3247 pText++;
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
3248 decodeUTF8 |= (*(char*)pText) & 0x3F; /* add lower 6bits as second part of the unicode */
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
3249 }
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
3250 else
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
3251 {
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
3252 decodeUTF8 = *(char*)pText; /* place ASCII char */
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
3253 }
2c2b9c6eb089 Bugfix Empty menu:
Ideenmodellierer
parents: 681
diff changeset
3254 Xsum += GFX_Character_Width(decodeUTF8, ptargetFont);
58
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
3255 }
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3256
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3257 pText++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3258 j++;
481
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3259 if((ptargetFont == &FontT144) && (*(char*)pText != 0))
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3260 Xsum += 3;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3261 else
481
89f6857276f8 Bugfix calculation of string center position:
ideenmodellierer
parents: 314
diff changeset
3262 if((ptargetFont == &FontT105) && (*(char*)pText != 0))
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3263 Xsum += 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3264 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3265 pText -= j;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3266
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3267 if(cfg->doubleSize)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3268 Xsum *= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3269
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3270 result = hgfx->WindowX1 - hgfx->WindowX0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3271 if(Xsum < result)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3272 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3273 result -= Xsum;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3274 result /= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3275 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3276 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3277 result = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3278 return result;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3279 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3280
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3281
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
3282 static uint32_t GFX_write__Modify_Xdelta__RightAlign(GFX_CfgWriteString* cfg, GFX_DrawCfgWindow* hgfx, const char *pTextInput)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3283 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3284 uint32_t result;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3285 uint32_t Xsum;
583
3860b8fa4b29 Solved minor warnings
Ideenmodellierer
parents: 567
diff changeset
3286 uint32_t j;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3287 tFont *font;
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
3288 char cText[101];
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3289 uint32_t pText;
58
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
3290 uint16_t decodeUTF8;
485
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3291 uint8_t tinyState = 0; /* used to identify the usage of tiny font */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3292
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3293 #ifndef BOOTLOADER_STANDALONE
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
3294 uint8_t gfx_selected_language = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3295 SSettings *pSettings;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3296 pSettings = settingsGetPointer();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3297 gfx_selected_language = pSettings->selected_language;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3298 if(gfx_selected_language >= LANGUAGE_END)
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
3299 #else
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
3300 cText[0] = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3301 #endif
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3302 // -----------------------------
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
3303 #ifndef BOOTLOADER_STANDALONE
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3304 GFX_write__Modify_helper(cText,pTextInput,gfx_selected_language);
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
3305 #endif
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3306 pText = (uint32_t)&cText[0];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3307 // -----------------------------
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3308
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3309 font = (tFont *)cfg->font;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3310 Xsum = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3311 j = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3312
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3313 while (*(char*)pText != 0)// und fehlend: Abfrage window / image size
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3314 {
485
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3315 if(*(char*)pText == '\016') /* request font change */
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3316 {
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3317 tinyState++;
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3318 }
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3319 if(*(char*)pText == '\017') /* request font reset */
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3320 {
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3321 tinyState = 0;
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3322 }
565
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3323
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3324 if((font == &FontT144) && (*(char*)pText == '.'))
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3325 {
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3326 tinyState++;
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3327 }
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3328 if((font == &FontT105) && ((*(char*)pText == '.') || (*(char*)pText == ':')))
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3329 {
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3330 tinyState++;
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3331 }
7b56d4eda695 Bugfix center / right alignment if dualfont is used:
Ideenmodellierer
parents: 537
diff changeset
3332
485
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3333 if(tinyState > 1)
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3334 {
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3335 font = (tFont *)cfg->TinyFont;
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3336 }
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3337 else
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3338 {
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3339 font = (tFont *)cfg->font;
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3340 }
7a17bfc932b6 Bugfix right alignment of string:
ideenmodellierer
parents: 481
diff changeset
3341
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3342 if(*(char*)pText == ' ')
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3343 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3344 Xsum += font->spacesize;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3345 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3346 else
649
60162a939c06 Bugfix consider checkbox in calculation of right aligned and centered position:
Ideenmodellierer
parents: 623
diff changeset
3347 if((*(char*)pText == '\005') || (*(char*)pText == '\006'))
60162a939c06 Bugfix consider checkbox in calculation of right aligned and centered position:
Ideenmodellierer
parents: 623
diff changeset
3348 {
60162a939c06 Bugfix consider checkbox in calculation of right aligned and centered position:
Ideenmodellierer
parents: 623
diff changeset
3349 Xsum += 45;
60162a939c06 Bugfix consider checkbox in calculation of right aligned and centered position:
Ideenmodellierer
parents: 623
diff changeset
3350 }
60162a939c06 Bugfix consider checkbox in calculation of right aligned and centered position:
Ideenmodellierer
parents: 623
diff changeset
3351 else
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3352 {
58
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
3353 if((*(char*)pText) & 0x80) /* Identify a UNICODE character other than standard ASCII using the highest bit */
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
3354 {
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
3355 decodeUTF8 = ((*(char*)pText) & 0x1F) << 6; /* use 5bits of first byte for upper part of unicode */
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
3356 pText++;
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
3357 decodeUTF8 |= (*(char*)pText) & 0x3F; /* add lower 6bits as second part of the unicode */
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
3358 }
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
3359 else
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
3360 {
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
3361 decodeUTF8 = *(char*)pText;
e97deb6e2705 Added UTF8 decode function
Ideenmodellierer
parents: 38
diff changeset
3362 }
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3363 Xsum += GFX_Character_Width(decodeUTF8, font); /* lookup character and add width */
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3364 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3365 pText++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3366 j++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3367 if((font == &FontT144) && (*(char*)pText != 0))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3368 Xsum += 3;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3369 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3370 if((font == &FontT105) && (*(char*)pText != 0))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3371 Xsum += 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3372 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3373 pText -= j;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3374
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3375 if(cfg->doubleSize)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3376 Xsum *= 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3377
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3378 result = hgfx->WindowX1 - hgfx->WindowX0 - 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3379 if(Xsum < result)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3380 result -= Xsum;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3381 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3382 result = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3383
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3384 return result;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3385 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3386
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3387 void GFX_LTDC_Init(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3388 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3389 /*
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3390 HSYNC=10 (9+1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3391 HBP=10 (19-10+1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3392 ActiveW=480 (499-10-10+1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3393 HFP=8 (507-480-10-10+1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3394
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3395 VSYNC=2 (1+1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3396 VBP=2 (3-2+1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3397 ActiveH=800 (803-2-2+1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3398 VFP=2 (805-800-2-2+1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3399 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3400
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3401 /* Timing configuration */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3402 /* Horizontal synchronization width = Hsync - 1 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3403 LtdcHandle.Init.HorizontalSync = 9;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3404 /* Vertical synchronization height = Vsync - 1 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3405 LtdcHandle.Init.VerticalSync = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3406 /* Accumulated horizontal back porch = Hsync + HBP - 1 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3407 LtdcHandle.Init.AccumulatedHBP = 19;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3408 /* Accumulated vertical back porch = Vsync + VBP - 1 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3409 LtdcHandle.Init.AccumulatedVBP = 3;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3410 /* Accumulated active width = Hsync + HBP + Active Width - 1 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3411 LtdcHandle.Init.AccumulatedActiveW = 499;//500;//499;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3412 /* Accumulated active height = Vsync + VBP + Active Heigh - 1 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3413 LtdcHandle.Init.AccumulatedActiveH = 803;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3414 /* Total width = Hsync + HBP + Active Width + HFP - 1 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3415 LtdcHandle.Init.TotalWidth = 507;//508;//507;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3416 /* Total height = Vsync + VBP + Active Heigh + VFP - 1 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3417 LtdcHandle.Init.TotalHeigh = 805;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3418
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3419 /* Configure R,G,B component values for LCD background color */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3420 LtdcHandle.Init.Backcolor.Red= 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3421 LtdcHandle.Init.Backcolor.Blue= 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3422 LtdcHandle.Init.Backcolor.Green= 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3423
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3424 /* LCD clock configuration */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3425 /* PLLSAI_VCO Input = HSE_VALUE/PLL_M = 1 Mhz */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3426 /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN = 192 Mhz */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3427 /* PLLLCDCLK = PLLSAI_VCO Output/PLLSAIR = 192/4 = 48 Mhz */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3428 /* LTDC clock frequency = PLLLCDCLK / LTDC_PLLSAI_DIVR_8 = 48/4 = 6Mhz */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3429
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3430 /* done in main.c SystemClockConfig
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3431
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3432 PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3433 PeriphClkInitStruct.PLLSAI.PLLSAIN = 192;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3434 PeriphClkInitStruct.PLLSAI.PLLSAIR = 4;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3435 PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_8;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3436 HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3437 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3438 /* Polarity */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3439 LtdcHandle.Init.HSPolarity = LTDC_HSPOLARITY_AL;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3440 LtdcHandle.Init.VSPolarity = LTDC_VSPOLARITY_AL;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3441 LtdcHandle.Init.DEPolarity = LTDC_DEPOLARITY_AL;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3442 LtdcHandle.Init.PCPolarity = LTDC_PCPOLARITY_IIPC;//LTDC_PCPOLARITY_IPC;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3443
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3444 LtdcHandle.Instance = LTDC;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3445
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3446 /* Configure the LTDC */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3447 if(HAL_LTDC_Init(&LtdcHandle) != HAL_OK) // auch init der GPIO Pins
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3448 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3449 /* Initialization Error */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3450 GFX_Error_Handler();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3451 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3452 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3453
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3454 void GFX_LTDC_LayerDefaultInit(uint16_t LayerIndex, uint32_t FB_Address)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3455 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3456 LTDC_LayerCfgTypeDef Layercfg;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3457
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3458 /* Layer Init */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3459 Layercfg.WindowX0 = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3460 Layercfg.WindowX1 = 480;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3461 Layercfg.WindowY0 = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3462 Layercfg.WindowY1 = 800;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3463 Layercfg.PixelFormat = LTDC_PIXEL_FORMAT_AL88;//LTDC_PIXEL_FORMAT_ARGB8888;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3464 Layercfg.FBStartAdress = FB_Address;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3465 Layercfg.Alpha = 255;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3466 Layercfg.Alpha0 = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3467 Layercfg.Backcolor.Blue = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3468 Layercfg.Backcolor.Green = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3469 Layercfg.Backcolor.Red = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3470 Layercfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3471 Layercfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3472 Layercfg.ImageWidth = 480;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3473 Layercfg.ImageHeight = 800;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3474
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3475 HAL_LTDC_ConfigCLUT(&LtdcHandle, ColorLUT, CLUT_END, LayerIndex);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3476 HAL_LTDC_ConfigLayer(&LtdcHandle, &Layercfg, LayerIndex);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3477 HAL_LTDC_EnableCLUT(&LtdcHandle, LayerIndex);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3478 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3479
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
3480 static uint32_t GFX_doubleBufferOne(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3481 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3482 return SDRAM_DOUBLE_BUFFER_ONE;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3483 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3484
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3485
297
87d54b4fd946 cleanup: remove unused code, make static, remove commented code
Jan Mulder <jlmulder@xs4all.nl>
parents: 296
diff changeset
3486 static uint32_t GFX_doubleBufferTwo(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3487 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3488 return SDRAM_DOUBLE_BUFFER_TWO;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3489 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3490
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3491 uint32_t getFrame(uint8_t callerId)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3492 {
623
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3493 static uint8_t lastFrameProvided = 0;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3494 uint8_t i;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3495
623
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3496 /* first iteration: look for a clear frame */
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3497 i = lastFrameProvided;
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3498 do
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3499 {
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3500 i++;
623
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3501 if(i == MAXFRAMES)
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3502 {
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3503 i = 0;
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3504 }
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3505 } while((i != lastFrameProvided) && (frame[i].status != CLEAR));
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3506
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3507 if((i < MAXFRAMES) && (frame[i].status == CLEAR))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3508 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3509 frame[i].status = BLOCKED;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3510 frame[i].caller = callerId;
623
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3511 lastFrameProvided = i;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3512 return frame[i].StartAddress;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3513 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3514
623
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3515 /* second iteration: look for a frame which may be reused after clearing */
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3516 i = lastFrameProvided;
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3517 do
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3518 {
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3519 i++;
623
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3520 if(i == MAXFRAMES)
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3521 {
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3522 i = 0;
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3523 }
705
158d612a9f4d Bugfix release frame:
Ideenmodellierer
parents: 699
diff changeset
3524 }while((i != lastFrameProvided) && (frame[i].status != RELEASED));
623
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3525
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3526
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3527 if((i < MAXFRAMES) && (frame[i].status == RELEASED))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3528 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3529 GFX_clear_frame_immediately(frame[i].StartAddress);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3530 frame[i].status = BLOCKED;
623
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3531 lastFrameProvided = i;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3532 return frame[i].StartAddress;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3533 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3534 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3535 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3536
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3537
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3538 void GFX_forceReleaseFramesWithId(uint8_t callerId)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3539 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3540 for(int i=0; i<MAXFRAMES; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3541 if((frame[i].caller == callerId) && (frame[i].status == BLOCKED))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3542 frame[i].status = RELEASED;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3543 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3544
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3545
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3546 void releaseAllFramesExcept(uint8_t callerId, uint32_t frameStartAddress)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3547 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3548 for(int i=0; i<MAXFRAMES; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3549 if((frame[i].caller == callerId) && (frame[i].status == BLOCKED) && (frame[i].StartAddress != frameStartAddress))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3550 frame[i].status = RELEASED;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3551 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3552
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3553
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3554 uint8_t releaseFrame(uint8_t callerId, uint32_t frameStartAddress)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3555 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3556 static uint8_t countErrorCalls = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3557
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3558 if(frameStartAddress < FBGlobalStart)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3559 return 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3560
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3561
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3562 uint8_t i;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3563
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3564 i = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3565 while((i < MAXFRAMES) && (frame[i].StartAddress != frameStartAddress))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3566 i++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3567
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3568 if((i < MAXFRAMES) && (frame[i].StartAddress == frameStartAddress))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3569 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3570 if(frame[i].caller == callerId)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3571 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3572 frame[i].status = RELEASED;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3573 return 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3574 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3575 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3576 countErrorCalls++;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3577 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3578 return 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3579 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3580
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3581
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3582 uint16_t blockedFramesCount(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3583 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3584 uint16_t count = MAXFRAMES;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3585
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3586 for(int i = 0;i<MAXFRAMES;i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3587 if(frame[i].status == BLOCKED)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3588 count--;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3589
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3590 return count;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3591 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3592
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3593
623
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3594 uint8_t housekeepingFrame(void)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3595 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3596 static uint8_t countLogClear = 0;
623
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3597 uint8_t i;
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3598 uint8_t retVal = 1;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3599
623
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3600 if(DMA2D_at_work == 255)
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3601 {
623
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3602 i = 0;
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3603 /* skip frame cleaning for actual frames which have not yet been replaced by new top/bottom frames */
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3604 while((i < MAXFRAMES) && ((frame[i].status != RELEASED) || (frame[i].StartAddress == GFX_get_pActualFrameTop()) || (frame[i].StartAddress == GFX_get_pActualFrameBottom())))
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3605 i++;
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3606
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3607 if((i < MAXFRAMES) && (frame[i].status == RELEASED))
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3608 {
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3609 if(frame[i].caller == 15)
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3610 countLogClear++;
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3611 GFX_clear_frame_dma2d(i);
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3612 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3613 else
623
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3614 {
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3615 retVal = 0; /* no more frame to be cleaned found */
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3616 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3617 }
623
ba83a8ef9bad Improvment frame Handling:
Ideenmodellierer
parents: 622
diff changeset
3618 return retVal;
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3619 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3620
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3621
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3622 static void GFX_Dma2d_TransferComplete(DMA2D_HandleTypeDef* Dma2dHandle)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3623 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3624 if(DMA2D_at_work < MAXFRAMES)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3625 frame[DMA2D_at_work].status = CLEAR;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3626
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3627 DMA2D_at_work = 255;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3628 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3629
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3630
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3631 static void GFX_Dma2d_TransferError(DMA2D_HandleTypeDef* Dma2dHandle)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3632 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3633
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3634 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3635
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3636 static void GFX_Error_Handler(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3637 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3638 /* Turn LED3 on */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3639 // BSP_LED_On(LED3);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3640 while(1)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3641 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3642 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3643 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3644
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3645 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)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3646 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3647 GFX_DrawCfgWindow hgfx;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3648
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3649 SSettings* pSettings;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3650 pSettings = settingsGetPointer();
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3651
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3652 if(!pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3653 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3654 if(XrightGimpStyle > 799)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3655 XrightGimpStyle = 799;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3656 if(XleftGimpStyle >= XrightGimpStyle)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3657 XleftGimpStyle = 0;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3658 if(YtopGimpStyle > 479)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3659 YtopGimpStyle = 479;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3660 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3661 hgfx.Image = tMscreen;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3662 hgfx.WindowNumberOfTextLines = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3663 hgfx.WindowLineSpacing = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3664 hgfx.WindowTab = 0;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3665
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3666 if(!pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3667 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3668 hgfx.WindowX0 = XleftGimpStyle;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3669 hgfx.WindowX1 = XrightGimpStyle;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3670 hgfx.WindowY1 = 479 - YtopGimpStyle;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3671 if(hgfx.WindowY1 < Font->height)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3672 hgfx.WindowY0 = 0;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3673 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3674 hgfx.WindowY0 = hgfx.WindowY1 - Font->height;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3675 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3676 else
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3677 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3678 hgfx.WindowX0 = 800 - XrightGimpStyle;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3679 hgfx.WindowX1 = 800 - XleftGimpStyle;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3680 hgfx.WindowY0 = YtopGimpStyle;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3681 if(hgfx.WindowY0 + Font->height >= 479)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3682 hgfx.WindowY1 = 479;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3683 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3684 hgfx.WindowY1 = hgfx.WindowY0 + Font->height;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3685 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3686 GFX_write_string_color(Font, &hgfx, text, 0, color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3687 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3688
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3689
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3690 void gfx_write_topline_simple(GFX_DrawCfgScreen *tMscreen, const char *text, uint8_t color)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3691 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3692 GFX_DrawCfgWindow hgfx;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3693 const tFont *Font = &FontT48;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3694
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3695 hgfx.Image = tMscreen;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3696 hgfx.WindowNumberOfTextLines = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3697 hgfx.WindowLineSpacing = 0;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3698
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3699 SSettings* pSettings;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3700 pSettings = settingsGetPointer();
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3701
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3702 hgfx.WindowTab = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3703 hgfx.WindowX0 = 20;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3704 hgfx.WindowX1 = 779;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3705
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3706 if(!pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3707 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3708 hgfx.WindowY1 = 479;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3709 hgfx.WindowY0 = hgfx.WindowY1 - Font->height;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3710 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3711 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3712 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3713 hgfx.WindowY0 = 0;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3714 hgfx.WindowY1 = Font->height;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3715 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3716 GFX_write_label(Font, &hgfx, text, color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3717 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3718
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3719
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3720 void gfx_write_page_number(GFX_DrawCfgScreen *tMscreen, uint8_t page, uint8_t total, uint8_t color)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3721 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3722 GFX_DrawCfgWindow hgfx;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3723 const tFont *Font = &FontT48;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3724 char text[7];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3725 uint8_t i, secondDigitPage, secondDigitTotal;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3726
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3727 SSettings* pSettings;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3728 pSettings = settingsGetPointer();
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3729
509
56824129dd56 Show page number in small letters if more than 8 tabs are active
Ideenmodellierer
parents: 494
diff changeset
3730 if(total > 8)
56824129dd56 Show page number in small letters if more than 8 tabs are active
Ideenmodellierer
parents: 494
diff changeset
3731 {
56824129dd56 Show page number in small letters if more than 8 tabs are active
Ideenmodellierer
parents: 494
diff changeset
3732 Font = &FontT24;
56824129dd56 Show page number in small letters if more than 8 tabs are active
Ideenmodellierer
parents: 494
diff changeset
3733 }
56824129dd56 Show page number in small letters if more than 8 tabs are active
Ideenmodellierer
parents: 494
diff changeset
3734
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3735 hgfx.Image = tMscreen;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3736 hgfx.WindowNumberOfTextLines = 1;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3737 hgfx.WindowLineSpacing = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3738 hgfx.WindowTab = 0;
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3739
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3740 if(!pSettings->FlipDisplay)
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3741 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3742 hgfx.WindowX1 = 779;
509
56824129dd56 Show page number in small letters if more than 8 tabs are active
Ideenmodellierer
parents: 494
diff changeset
3743 if(Font == &FontT24)
56824129dd56 Show page number in small letters if more than 8 tabs are active
Ideenmodellierer
parents: 494
diff changeset
3744 {
56824129dd56 Show page number in small letters if more than 8 tabs are active
Ideenmodellierer
parents: 494
diff changeset
3745 hgfx.WindowX0 = hgfx.WindowX1 - (Font->spacesize*3);
56824129dd56 Show page number in small letters if more than 8 tabs are active
Ideenmodellierer
parents: 494
diff changeset
3746 }
56824129dd56 Show page number in small letters if more than 8 tabs are active
Ideenmodellierer
parents: 494
diff changeset
3747 else
56824129dd56 Show page number in small letters if more than 8 tabs are active
Ideenmodellierer
parents: 494
diff changeset
3748 {
56824129dd56 Show page number in small letters if more than 8 tabs are active
Ideenmodellierer
parents: 494
diff changeset
3749 hgfx.WindowX0 = hgfx.WindowX1 - (Font->spacesize2Monospaced*3);
56824129dd56 Show page number in small letters if more than 8 tabs are active
Ideenmodellierer
parents: 494
diff changeset
3750 }
110
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3751 hgfx.WindowY1 = 479;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3752 hgfx.WindowY0 = hgfx.WindowY1 - Font->height;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3753 }
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3754 else
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3755 {
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3756 hgfx.WindowX1 = 25*5;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3757 hgfx.WindowX0 = 0;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3758 hgfx.WindowY1 = Font->height;;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3759 hgfx.WindowY0 = 0;
cc8e24374b83 Added option to handled mirrored display to existing functions
Ideenmodellierer
parents: 58
diff changeset
3760 }
38
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3761 if(page > 99)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3762 page = 99;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3763 if(total > 99)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3764 total = 99;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3765
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3766 i = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3767 text[i++] = '\002';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3768
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3769 secondDigitPage = page / 10;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3770 page -= secondDigitPage * 10;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3771
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3772 secondDigitTotal = total / 10;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3773 total -= secondDigitTotal * 10;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3774
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3775 if(secondDigitPage)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3776 text[i++] = '0' + secondDigitPage;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3777 text[i++] = '0' + page;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3778
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3779 text[i++] = '/';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3780
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3781 if(secondDigitTotal)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3782 text[i++] = '0' + secondDigitTotal;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3783 text[i++] = '0' + total;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3784
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3785 text[i] = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3786
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3787 GFX_clear_window_immediately(&hgfx);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3788 GFX_write_label(Font, &hgfx, text, color);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3789 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3790
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3791
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3792 uint8_t gfx_number_to_string(uint8_t max_digits, _Bool fill, char *pText, uint32_t input)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3793 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3794 uint8_t digits[10];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3795 uint32_t number, divider;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3796 int first;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3797 uint8_t out;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3798
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3799 number = input;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3800 first = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3801 divider = 1000000000;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3802 for(int i=9;i>=0;i--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3803 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3804 digits[i] = (uint8_t)(number / divider);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3805 number -= digits[i] * divider;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3806 divider /= 10;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3807 if((first == 0) && (digits[i] != 0))
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3808 first = i;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3809 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3810
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3811 if((first + 1) > max_digits)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3812 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3813 for(int i = 0; i<max_digits; i++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3814 pText[i] = '9';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3815 out = max_digits;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3816 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3817 else if(fill)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3818 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3819 int i = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3820 for(int k = max_digits; k>0; k--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3821 pText[i++] = digits[k -1] + '0';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3822 out = max_digits;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3823 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3824 else
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3825 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3826 int i = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3827 for(int k = first; k>=0; k--)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3828 pText[i++] = digits[k] + '0';
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3829 out = i;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3830 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3831
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3832 return out;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3833 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3834
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3835
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3836 /* output is
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3837 * 0->
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3838 * |
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3839 * v
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3840 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3841 * input is
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3842 *
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3843 * ->
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3844 * A
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3845 * |
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3846 * 0
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3847 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3848 void GFX_screenshot(void)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3849 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3850 uint32_t pSource = GFX_get_pActualFrameTop();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3851 uint32_t pSourceBottom =GFX_get_pActualFrameBottom();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3852 uint32_t pBottomNew = getFrame(99);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3853 uint32_t pDestination = GFX_doubleBufferOne();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3854 uint32_t sourceNow;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3855
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3856
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3857 uint32_t bot_leftStart = FrameHandler.actualBottom.leftStart; // x0 z.B. 0
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3858 uint32_t bot_bottomStart = FrameHandler.actualBottom.bottomStart; // y0 z.B. 25
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3859 uint32_t bot_width = FrameHandler.actualBottom.width; // 800
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3860 uint32_t bot_height = FrameHandler.actualBottom.height; // 390
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3861
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3862 struct split
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3863 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3864 uint8_t blue;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3865 uint8_t green;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3866 uint8_t red;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3867 uint8_t alpha;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3868 };
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3869
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3870 union inout_u
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3871 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3872 uint32_t in;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3873 struct split out;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3874 };
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3875
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3876 union inout_u value;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3877
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3878 /* test
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3879 uint32_t pSourceTemp = pSource + (2*479);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3880 for (int j = 0xFFFF; j > 0x00FF; j -= 0x0100)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3881 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3882 *(__IO uint16_t*)pSourceTemp = j;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3883 pSourceTemp += 480*2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3884 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3885 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3886 // Top Layer
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3887 const unsigned width = 800, height = 480;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3888 const uint32_t heightX2 = height*2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3889
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3890 for(unsigned y = 0; y < height; y++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3891 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3892 sourceNow = pSource + 2 * ((height - 1) - y);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3893 for(unsigned x = 0; x < width; x++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3894 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3895 // sourceNow += 2 * height * x + 2 * (height - 1 - y);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3896 value.in = ColorLUT[*(__IO uint8_t*)(sourceNow)];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3897 value.out.alpha = *(__IO uint8_t*)(sourceNow + 1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3898
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3899 *(__IO uint8_t*)(pDestination++) = value.out.red;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3900 *(__IO uint8_t*)(pDestination++) = value.out.green;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3901 *(__IO uint8_t*)(pDestination++) = value.out.blue;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3902 *(__IO uint8_t*)(pDestination++) = value.out.alpha;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3903 sourceNow += heightX2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3904 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3905 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3906
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3907 // Bottom Layer
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3908 // build newBottom
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3909 pSource = pSourceBottom;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3910 for(unsigned x = bot_leftStart; x < bot_leftStart+bot_width; x++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3911 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3912 for(unsigned y = bot_bottomStart; y < bot_bottomStart+bot_height; y++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3913 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3914 pDestination = pBottomNew + (2 * y);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3915 pDestination += heightX2 * x;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3916 *(__IO uint16_t*)(pDestination) = *(__IO uint16_t*)(pSource);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3917 pSource += 2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3918 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3919 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3920
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3921 // output Bottom Layer
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3922 pSource = pBottomNew;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3923 pDestination = GFX_doubleBufferTwo();
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3924
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3925 for(unsigned y = 0; y < height; y++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3926 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3927 sourceNow = pSource + 2 * ((height - 1) - y);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3928 for(unsigned x = 0; x < width; x++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3929 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3930 // sourceNow = pSource + 2 * height * x + 2 * (height - 1 - y);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3931 value.in = ColorLUT[*(__IO uint8_t*)(sourceNow)];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3932 value.out.alpha = *(__IO uint8_t*)(sourceNow + 1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3933
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3934 *(__IO uint8_t*)(pDestination++) = value.out.red;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3935 *(__IO uint8_t*)(pDestination++) = value.out.green;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3936 *(__IO uint8_t*)(pDestination++) = value.out.blue;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3937 *(__IO uint8_t*)(pDestination++) = value.out.alpha;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3938 sourceNow += heightX2;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3939 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3940 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3941 releaseFrame(99,pBottomNew);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3942 /*
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3943 // das kommt dazu!
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3944 unsigned yEnd = 480 - FrameHandler.actualBottom.bottomStart;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3945 unsigned yStart = yEnd - FrameHandler.actualBottom.height;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3946
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3947 if(yStart > 0)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3948 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3949 for(unsigned y = 0; y < yStart; y++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3950 for(unsigned x = 0; x < width; x++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3951 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3952 *(__IO uint8_t*)(pDestination++) = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3953 *(__IO uint8_t*)(pDestination++) = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3954 *(__IO uint8_t*)(pDestination++) = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3955 *(__IO uint8_t*)(pDestination++) = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3956 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3957 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3958 for(unsigned y = yStart; y < yEnd; y++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3959 for(unsigned x = 0; x < width; x++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3960 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3961 sourceNow = pSource + 2 * height * x + 2 * (height - 1 - y);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3962 value.in = ColorLUT[*(__IO uint8_t*)(sourceNow)];
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3963 value.out.alpha = *(__IO uint8_t*)(sourceNow + 1);
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3964
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3965 *(__IO uint8_t*)(pDestination++) = value.out.red;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3966 *(__IO uint8_t*)(pDestination++) = value.out.green;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3967 *(__IO uint8_t*)(pDestination++) = value.out.blue;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3968 *(__IO uint8_t*)(pDestination++) = value.out.alpha;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3969 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3970 if(yEnd < 480)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3971 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3972 for(unsigned y = yEnd; y < 480; y++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3973 for(unsigned x = 0; x < width; x++)
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3974 {
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3975 *(__IO uint8_t*)(pDestination++) = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3976 *(__IO uint8_t*)(pDestination++) = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3977 *(__IO uint8_t*)(pDestination++) = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3978 *(__IO uint8_t*)(pDestination++) = 0;
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3979 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3980 }
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3981 */
5f11787b4f42 include in ostc4 repository
heinrichsweikamp
parents:
diff changeset
3982 }
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3983
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
3984 #ifndef BOOTLOADER_STANDALONE
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3985 tFont* GFX_Check_Extra_Font(uint8_t character, tFont *Font)
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3986 {
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3987 uint32_t i;
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3988 uint32_t found;
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3989
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3990 found = 0;
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3991 for(i=0;i<Font->length;i++)
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3992 {
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3993 if(Font->chars[i].code == character)
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3994 {
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3995 found = 1;
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3996 break;
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3997 }
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3998 }
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
3999 if (!found && Font == &FontT54)
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4000 {
699
01f40cb1057e Cleanup warnings:
Ideenmodellierer
parents: 698
diff changeset
4001 Font = (tFont *)&FontT54Extra;
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4002 }
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4003 else if (!found && (Font == &FontT84 || Font == &FontT84Spaced))
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4004 {
699
01f40cb1057e Cleanup warnings:
Ideenmodellierer
parents: 698
diff changeset
4005 Font = (tFont *)&FontT84Extra;
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4006 }
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4007 else if (!found && Font == &FontT105)
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4008 {
699
01f40cb1057e Cleanup warnings:
Ideenmodellierer
parents: 698
diff changeset
4009 Font = (tFont *)&FontT105Extra;
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4010 }
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4011
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4012 return Font;
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4013 }
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4014 #endif
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4015 uint32_t GFX_Character_Width(uint8_t character, tFont *Font)
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4016 {
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4017 uint32_t i;
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4018 #ifndef BOOTLOADER_STANDALONE
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4019 uint32_t found;
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4020 #endif
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4021
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4022 for(i=0;i<Font->length;i++)
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4023 {
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4024 if(Font->chars[i].code == character)
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4025 {
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4026 return Font->chars[i].image->width;
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4027 }
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4028 }
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4029
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4030 #ifndef BOOTLOADER_STANDALONE
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4031 found = 0;
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4032 if (Font == &FontT54)
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4033 {
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4034 found = 1;
699
01f40cb1057e Cleanup warnings:
Ideenmodellierer
parents: 698
diff changeset
4035 Font = (tFont *)&FontT54Extra;
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4036 }
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4037 else if (Font == &FontT84 || Font == &FontT84Spaced)
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4038 {
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4039 found = 1;
699
01f40cb1057e Cleanup warnings:
Ideenmodellierer
parents: 698
diff changeset
4040 Font = (tFont *)&FontT84Extra;
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4041 }
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4042 else if (Font == &FontT105)
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4043 {
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4044 found = 1;
699
01f40cb1057e Cleanup warnings:
Ideenmodellierer
parents: 698
diff changeset
4045 Font = (tFont *)&FontT105Extra;
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4046 }
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4047
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4048 if (found)
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4049 {
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4050 for(i=0;i<Font->length;i++)
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4051 {
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4052 if(Font->chars[i].code == character)
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4053 {
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4054 return Font->chars[i].image->width;
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4055 }
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4056 }
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4057 }
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4058 #endif
567
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4059 return 0;
1c95f811967c -Add 12HR Time Support
izzni
parents: 565
diff changeset
4060 }
870
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4061
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4062 void Gfx_colorsscheme_mod(char *text, uint8_t alternativeColor)
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4063 {
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4064 char *p = text;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4065 uint8_t index = 0;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4066
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4067 while ((*p) && (index < MAX_COLOR_STRING_LENGTH))
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4068 {
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4069 if (*p == '\020')
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4070 {
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4071 if(!GFX_is_colorschemeDiveStandard())
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4072 {
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4073 *p = '\027';
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4074 }
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4075 else if(alternativeColor != 0)
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4076 {
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4077 *p += alternativeColor;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4078 }
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4079 }
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4080 p++;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4081 index++;
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4082 }
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4083 }
bc6c90e20d9e Instrument code for Bootloader:
Ideenmodellierer
parents: 772
diff changeset
4084