Mercurial > public > ostc4
annotate Discovery/Src/tInfo.c @ 196:2885628ab3ba div-fixes-cleaup-2
Bugfix, minor: color the overview customview correctly
When using a custom color (from the SYS2 menu, layout), the overview
customview was the only one presented in the wrong color. While the fix
for this is rather simple (in hindsight), it was a non trivial search
trough rather obfuscated code.
There is a specific function to set the text color index on this page, but
this only worked for a single line text string, that has the color index
byte as the very first character. The original author already recognized
that this function "could be extended", but left this extension as an
exercise to the reader.
So, the coloring is fixed by extending the function, and actually using
it for the overview customview.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
author | Jan Mulder <jlmulder@xs4all.nl> |
---|---|
date | Wed, 20 Mar 2019 16:24:10 +0100 |
parents | 255eedad4155 |
children | 2bb1db22b5f5 |
rev | line source |
---|---|
38 | 1 /////////////////////////////////////////////////////////////////////////////// |
2 /// -*- coding: UTF-8 -*- | |
3 /// | |
4 /// \file Discovery/Src/tInfo.c | |
5 /// \brief Main Template file for Info menu page on left side | |
6 /// \author heinrichs weikamp gmbh | |
7 /// \date 11-Aug-2014 | |
8 /// | |
9 /// \details | |
10 /// | |
11 /// $Id$ | |
12 /////////////////////////////////////////////////////////////////////////////// | |
13 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh | |
14 /// | |
15 /// This program is free software: you can redistribute it and/or modify | |
16 /// it under the terms of the GNU General Public License as published by | |
17 /// the Free Software Foundation, either version 3 of the License, or | |
18 /// (at your option) any later version. | |
19 /// | |
20 /// This program is distributed in the hope that it will be useful, | |
21 /// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
22 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
23 /// GNU General Public License for more details. | |
24 /// | |
25 /// You should have received a copy of the GNU General Public License | |
26 /// along with this program. If not, see <http://www.gnu.org/licenses/>. | |
27 ////////////////////////////////////////////////////////////////////////////// | |
28 | |
29 /* Includes ------------------------------------------------------------------*/ | |
30 #include "tInfo.h" | |
31 | |
32 #include "data_exchange.h" | |
33 #include "tDebug.h" | |
34 #include "gfx_fonts.h" | |
35 #include "tHome.h" | |
36 //#include "tInfoDive.h" | |
37 //#include "tInfoSurface.h" | |
38 #include "tInfoCompass.h" | |
39 #include "tMenu.h" | |
40 | |
41 #include <string.h> | |
42 | |
43 /* Private types -------------------------------------------------------------*/ | |
44 | |
45 typedef struct | |
46 { | |
47 uint32_t pEventFunction; | |
48 uint32_t callerID; | |
49 } SInfoEventHandler; | |
50 | |
51 typedef struct | |
52 { | |
53 char orgText[32]; | |
54 char newText[32]; | |
55 char input; | |
56 char symbolCounter; | |
57 int8_t begin[4], size[4]; | |
58 uint16_t coord[3]; | |
59 tFont *fontUsed; | |
60 uint32_t callerID; | |
61 uint8_t maintype; | |
62 uint8_t subtype; | |
63 } SInfoIdent; | |
64 | |
65 typedef enum | |
66 { | |
67 FIELD_BUTTON = 1, | |
68 FIELD_SELECT, | |
69 FIELD_SYMBOL, | |
70 FIELD_TOGGLE, | |
71 FIELD_ON_OFF, | |
72 FIELD_END | |
73 } SInfoField; | |
74 | |
75 /* Private variables ---------------------------------------------------------*/ | |
76 GFX_DrawCfgScreen tIscreen; | |
77 GFX_DrawCfgScreen tIcursor; | |
78 | |
79 uint8_t infoColor = CLUT_InfoSurface; | |
80 | |
81 int8_t TIid = 0; | |
82 int8_t TIidLast = -1; | |
83 SInfoIdent TIident[10]; | |
84 | |
85 int8_t TIevid = 0; | |
86 int8_t TIevidLast = -1; | |
87 SInfoEventHandler TIevent[10]; | |
88 | |
89 /* Private function prototypes -----------------------------------------------*/ | |
90 void tInfo_build_page(void); | |
91 void tInfo_showlog(void); | |
92 | |
93 void tI_draw_tIdesign(void); | |
94 void tI_set_cursor(uint8_t forThisIdentID); | |
95 void tI_startInfoFieldSelect(void); | |
96 void tInfo_write_content_of_actual_Id(void); | |
97 void tI_clean_content_of_actual_Id(void); | |
98 void tInfo_write_content_without_Id(void); | |
99 | |
100 void tI_clean_content(uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font); | |
101 void tInfo_write_content(uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const char *text, uint8_t color); | |
102 | |
103 void tI_resetInfo(uint8_t color); | |
104 | |
105 void tI_tInfo_refresh_live_content(void); | |
106 void tI_evaluateNewString (uint32_t editID, uint32_t *pNewValue1, uint32_t *pNewValue2, uint32_t *pNewValue3, uint32_t *pNewValue4); | |
107 | |
108 //void tI_tInfo_newInput (uint32_t editID, uint32_t int1, uint32_t int2, uint32_t int3, uint32_t int4); | |
109 //void tI_tInfo_newButtonText (uint32_t editID, char *text); | |
110 | |
111 void tI_enterInfoField(void); | |
112 void tI_nextInfoField(void); | |
113 | |
114 /* Announced function prototypes -----------------------------------------------*/ | |
115 //uint8_t OnAction_ILoglist (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
116 //uint8_t OnAction_ISimulator (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
117 | |
118 /* Exported functions --------------------------------------------------------*/ | |
119 | |
120 void tI_init(void) | |
121 { | |
122 tIscreen.FBStartAdress = 0; | |
123 tIscreen.ImageHeight = 480; | |
124 tIscreen.ImageWidth = 800; | |
125 tIscreen.LayerIndex = 1; | |
126 | |
127 tIcursor.FBStartAdress = getFrame(12); | |
128 tIcursor.ImageHeight = 480; | |
129 tIcursor.ImageWidth = 800; | |
130 tIcursor.LayerIndex = 0; | |
131 | |
132 GFX_fill_buffer(tIcursor.FBStartAdress, 0xFF, CLUT_InfoCursor); | |
133 } | |
134 | |
135 | |
136 void openInfo(uint32_t modeToStart) | |
137 { | |
138 if((modeToStart != StILOGLIST) && (modeToStart != StIDEBUG)) | |
139 return; | |
140 | |
141 TIid = 0; | |
142 TIidLast = -1; | |
143 TIevid = 0; | |
144 TIevidLast = -1; | |
145 | |
146 if(tIscreen.FBStartAdress) | |
147 releaseFrame(14,tIscreen.FBStartAdress); | |
148 tIscreen.FBStartAdress = getFrame(14); | |
149 | |
150 // GFX_SetFramesTopBottom(tIscreen.FBStartAdress, tIcursor.FBStartAdress,480); | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
151 GFX_SetFramesTopBottom(tIscreen.FBStartAdress, 0,480); |
38 | 152 infoColor = CLUT_InfoSurface; |
153 | |
154 if(modeToStart == StIDEBUG) | |
155 { | |
156 tDebug_start(); | |
157 } | |
158 else | |
159 { | |
160 openLog(0); | |
161 } | |
162 // openInfoLogLastDive(); | |
163 } | |
164 | |
165 /* | |
166 void openInfo(void) | |
167 { | |
168 if((stateUsed->mode == MODE_DIVE) && (!is_stateUsedSetToSim())) | |
169 { | |
170 return; | |
171 } | |
172 | |
173 TIid = 0; | |
174 TIidLast = -1; | |
175 TIevid = 0; | |
176 TIevidLast = -1; | |
177 | |
178 if(tIscreen.FBStartAdress) | |
179 releaseFrame(14,tIscreen.FBStartAdress); | |
180 tIscreen.FBStartAdress = getFrame(14); | |
181 | |
182 GFX_SetFramesTopBottom(tIscreen.FBStartAdress, tIcursor.FBStartAdress,480); | |
183 | |
184 if(stateUsed->mode == MODE_DIVE) | |
185 { | |
186 infoColor = CLUT_InfoSurface; | |
187 openInfo_Dive(); | |
188 } | |
189 else | |
190 { | |
191 infoColor = CLUT_InfoDive; | |
192 openInfo_Surface(); | |
193 } | |
194 } | |
195 */ | |
196 | |
197 /* | |
198 uint8_t OnAction_ILoglist (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
199 { | |
200 return 255; | |
201 } | |
202 */ | |
203 | |
204 void tInfo_refresh(void) | |
205 { | |
206 if(!inDebugMode() && (get_globalState() != StICOMPASS)) | |
207 return; | |
208 | |
209 uint32_t oldIscreen; | |
210 | |
211 oldIscreen = tIscreen.FBStartAdress; | |
212 tIscreen.FBStartAdress = getFrame(14); | |
213 infoColor = CLUT_InfoCompass; | |
214 | |
215 if(inDebugMode()) | |
216 tDebug_refresh(); | |
217 else | |
218 refreshInfo_Compass(); | |
219 | |
220 if(inDebugMode() || (get_globalState() == StICOMPASS)) /* could be timeout and exitInfo */ | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
221 GFX_SetFramesTopBottom(tIscreen.FBStartAdress, 0,480); |
38 | 222 |
223 if(oldIscreen) | |
224 releaseFrame(14,oldIscreen); | |
225 } | |
226 | |
227 | |
228 void exitInfo(void) | |
229 { | |
230 set_globalState_tHome(); | |
231 releaseFrame(14,tIscreen.FBStartAdress); | |
232 exitDebugMode(); | |
233 } | |
234 | |
235 | |
236 void sendActionToInfo(uint8_t sendAction) | |
237 { | |
238 if(inDebugMode()) | |
239 { | |
240 tDebugControl(sendAction); | |
241 return; | |
242 } | |
243 | |
244 if(get_globalState() == StICOMPASS) | |
245 return; | |
246 | |
247 switch(sendAction) | |
248 { | |
249 case ACTION_BUTTON_ENTER: | |
250 tI_enterInfoField(); | |
251 break; | |
252 case ACTION_BUTTON_NEXT: | |
253 tI_nextInfoField(); | |
254 break; | |
255 case ACTION_TIMEOUT: | |
256 case ACTION_MODE_CHANGE: | |
257 case ACTION_BUTTON_BACK: | |
258 exitInfo(); | |
130
b7689d9e888a
Minor changes to improved code quality and to eliminate warnings
Ideenmodellierer
parents:
38
diff
changeset
|
259 break; |
38 | 260 default: |
261 break; | |
262 case ACTION_IDLE_TICK: | |
263 case ACTION_IDLE_SECOND: | |
264 break; | |
265 } | |
266 | |
267 } | |
268 | |
269 /* Private functions ---------------------------------------------------------*/ | |
270 | |
271 void tInfo_build_page(void) | |
272 { | |
273 tInfo_write_content_simple( 30, 340, 90, &FontT48, "Logbook", CLUT_Font020); | |
274 | |
275 } | |
276 | |
277 void tInfo_write_content_simple(uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const char *text, uint8_t color) | |
278 { | |
279 GFX_DrawCfgWindow hgfx; | |
280 | |
281 if(XrightGimpStyle > 799) | |
282 XrightGimpStyle = 799; | |
283 if(XleftGimpStyle >= XrightGimpStyle) | |
284 XleftGimpStyle = 0; | |
285 if(YtopGimpStyle > 479) | |
286 YtopGimpStyle = 479; | |
287 hgfx.Image = &tIscreen; | |
288 hgfx.WindowNumberOfTextLines = 1; | |
289 hgfx.WindowLineSpacing = 0; | |
290 hgfx.WindowTab = 400; | |
291 hgfx.WindowX0 = XleftGimpStyle; | |
292 hgfx.WindowX1 = XrightGimpStyle; | |
293 hgfx.WindowY1 = 479 - YtopGimpStyle; | |
294 if(hgfx.WindowY1 < Font->height) | |
295 hgfx.WindowY0 = 0; | |
296 else | |
297 hgfx.WindowY0 = hgfx.WindowY1 - Font->height; | |
298 | |
299 GFX_write_string_color(Font, &hgfx, text, 0, color); | |
300 } | |
301 | |
302 /* Exported functions --------------------------------------------------------*/ | |
303 | |
304 void tI_startInfoFieldSelect(void) | |
305 { | |
306 TIid = 0; | |
307 tI_set_cursor(TIid); | |
308 } | |
309 | |
310 | |
311 void tI_nextInfoField(void) | |
312 { | |
313 if(TIid < TIidLast) | |
314 TIid++; | |
315 else | |
316 TIid = 0; | |
317 tI_set_cursor(TIid); | |
318 } | |
319 | |
320 | |
321 void tI_previousInfoField(void) | |
322 { | |
323 if(TIid > 0) | |
324 TIid--; | |
325 else | |
326 TIid = TIidLast; | |
327 tI_set_cursor(TIid); | |
328 } | |
329 | |
330 | |
331 uint8_t tI_get_newContent_of_actual_id_block_and_subBlock(uint8_t action) | |
332 { | |
333 uint8_t (*onActionFunc)(uint32_t, uint8_t, uint8_t, uint8_t, uint8_t); | |
334 uint8_t content; | |
335 | |
336 if(TIevent[TIevid].callerID != TIident[TIid].callerID) | |
337 return 0; | |
338 | |
339 onActionFunc = (uint8_t (*)(uint32_t, uint8_t, uint8_t, uint8_t, uint8_t))(TIevent[TIevid].pEventFunction); | |
340 | |
341 if(TIident[TIid].maintype == FIELD_ON_OFF) | |
342 content = TIident[TIid].input; | |
343 else | |
344 content = 0; /* just a default for protection */ | |
345 | |
346 return onActionFunc(TIident[TIid].callerID, 0, 0, content, action); | |
347 } | |
348 | |
349 | |
350 void tI_enterInfoField(void) | |
351 { | |
352 uint8_t newContent; | |
353 | |
354 TIevid = 0; | |
355 while((TIevid < TIevidLast) && (TIevent[TIevid].callerID != TIident[TIid].callerID)) | |
356 { | |
357 TIevid++; | |
358 } | |
359 | |
360 if(TIevent[TIevid].callerID != TIident[TIid].callerID) | |
361 return; | |
362 | |
363 newContent = tI_get_newContent_of_actual_id_block_and_subBlock(ACTION_BUTTON_ENTER); | |
364 | |
365 if(newContent == 255) | |
366 { | |
367 exitInfo(); | |
368 return; | |
369 } | |
370 | |
371 switch(TIident[TIid].maintype) | |
372 { | |
373 case FIELD_BUTTON: | |
374 break; | |
375 case FIELD_ON_OFF: | |
376 break; | |
377 case FIELD_SYMBOL: | |
378 TIident[TIid].input += 1; | |
379 if(TIident[TIid].input >= TIident[TIid].symbolCounter) | |
380 TIident[TIid].input = 0; | |
381 TIident[TIid].newText[0] = TIident[TIid].orgText[TIident[TIid].input]; | |
382 tInfo_write_content_of_actual_Id(); | |
383 break; | |
384 } | |
385 } | |
386 | |
387 | |
388 void tI_evaluateNewString(uint32_t editID, uint32_t *pNewValue1, uint32_t *pNewValue2, uint32_t *pNewValue3, uint32_t *pNewValue4) | |
389 { | |
390 if(editID != TIident[TIid].callerID) | |
391 return; | |
392 | |
393 uint8_t i, digitCount, digit; | |
394 uint32_t sum[4], multiplier; | |
395 | |
396 for(i=0;i<4;i++) | |
397 sum[i] = 0; | |
398 | |
399 i = 0; | |
400 while( TIident[TIid].size[i] && (i < 4)) | |
401 { | |
402 multiplier = 1; | |
403 for(digitCount = 1; digitCount < TIident[TIid].size[i]; digitCount++) | |
404 multiplier *= 10; | |
405 | |
406 for(digitCount = 0; digitCount < TIident[TIid].size[i]; digitCount++) | |
407 { | |
408 digit = TIident[TIid].newText[TIident[TIid].begin[i] + digitCount]; | |
409 | |
410 if(digit > '0') | |
411 digit -= '0'; | |
412 else | |
413 digit = 0; | |
414 | |
415 if(digit > 9) | |
416 digit = 9; | |
417 | |
418 sum[i] += digit * multiplier; | |
419 | |
420 if(multiplier >= 10) | |
421 multiplier /= 10; | |
422 else | |
423 multiplier = 0; | |
424 } | |
425 i++; | |
426 } | |
427 | |
428 *pNewValue1 = sum[0]; | |
429 *pNewValue2 = sum[1]; | |
430 *pNewValue3 = sum[2]; | |
431 *pNewValue4 = sum[3]; | |
432 } | |
433 | |
434 | |
435 uint8_t tI_get_id_of(uint32_t editID) | |
436 { | |
437 uint8_t temp_id; | |
438 | |
439 if(editID == TIident[TIid].callerID) | |
440 return TIid; | |
441 else | |
442 { | |
443 temp_id = 0; | |
444 while((temp_id < 9) && (editID != TIident[temp_id].callerID)) | |
445 temp_id++; | |
446 if(editID != TIident[temp_id].callerID) | |
447 temp_id = 255; | |
448 return temp_id; | |
449 } | |
450 } | |
451 | |
452 | |
453 void tI_newButtonText(uint32_t editID, char *text) | |
454 { | |
455 uint8_t backup_id, temp_id; | |
456 | |
457 temp_id = tI_get_id_of(editID); | |
458 if(temp_id == 255) | |
459 return; | |
460 | |
461 backup_id = TIid; | |
462 TIid = temp_id; | |
463 | |
464 strncpy(TIident[TIid].newText, text, 32); | |
465 TIident[TIid].newText[31] = 0; | |
466 | |
467 tI_clean_content_of_actual_Id(); | |
468 tInfo_write_content_of_actual_Id(); | |
469 | |
470 TIid = backup_id; | |
471 } | |
472 | |
473 | |
474 void tInfo_set_on_off(uint32_t editID, uint32_t int1) | |
475 { | |
476 uint8_t backup_id, temp_id; | |
477 | |
478 temp_id = tI_get_id_of(editID); | |
479 if(temp_id == 255) | |
480 return; | |
481 | |
482 backup_id = TIid; | |
483 TIid = temp_id; | |
484 | |
485 TIident[TIid].input = int1; | |
486 | |
487 if(int1) | |
488 change_CLUT_entry((CLUT_InfoField0 + TIid), CLUT_InfoActive); | |
489 else | |
490 change_CLUT_entry((CLUT_InfoField0 + TIid), CLUT_InfoInActive); | |
491 | |
492 tInfo_write_content_of_actual_Id(); | |
493 | |
494 TIid = backup_id; | |
495 } | |
496 | |
497 | |
498 void tInfo_write_content_without_Id(void) | |
499 { | |
500 tInfo_write_content( TIident[TIid].coord[0], TIident[TIid].coord[1], TIident[TIid].coord[2], TIident[TIid].fontUsed, TIident[TIid].newText, CLUT_InfoFieldRegular); | |
501 } | |
502 | |
503 | |
504 void tInfo_write_content_of_actual_Id(void) | |
505 { | |
506 tInfo_write_content( TIident[TIid].coord[0], TIident[TIid].coord[1], TIident[TIid].coord[2], TIident[TIid].fontUsed, TIident[TIid].newText, (CLUT_InfoField0 + TIid)); | |
507 } | |
508 | |
509 | |
510 void tI_clean_content_of_actual_Id(void) | |
511 { | |
512 tI_clean_content( TIident[TIid].coord[0], TIident[TIid].coord[1], TIident[TIid].coord[2], TIident[TIid].fontUsed); | |
513 } | |
514 | |
515 | |
516 void tInfo_write_field_button(uint32_t editID, uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const char *text) | |
517 { | |
518 if(TIidLast >= 9) | |
519 return; | |
520 | |
521 TIident[TIid].maintype = FIELD_BUTTON; | |
522 TIident[TIid].subtype = FIELD_BUTTON; | |
523 | |
524 TIident[TIid].coord[0] = XleftGimpStyle; | |
525 TIident[TIid].coord[1] = XrightGimpStyle; | |
526 TIident[TIid].coord[2] = YtopGimpStyle; | |
527 TIident[TIid].fontUsed = (tFont *)Font; | |
528 TIident[TIid].callerID = editID; | |
529 | |
530 strncpy(TIident[TIid].orgText, text, 32); | |
531 strncpy(TIident[TIid].newText, text, 32); | |
532 TIident[TIid].orgText[31] = 0; | |
533 TIident[TIid].newText[31] = 0; | |
534 | |
535 change_CLUT_entry((CLUT_InfoField0 + TIid), CLUT_InfoButtonColor1); | |
536 | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
537 if(editID == 0) |
38 | 538 tInfo_write_content_without_Id(); |
539 else | |
540 { | |
541 tInfo_write_content_of_actual_Id(); | |
542 TIidLast = TIid; | |
543 TIid++; | |
544 } | |
545 } | |
546 | |
547 | |
548 void tInfo_write_field_symbol(uint32_t editID, uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const char *text, uint8_t int1) | |
549 { | |
550 if(TIidLast >= 9) | |
551 return; | |
552 | |
553 TIident[TIid].maintype = FIELD_SYMBOL; | |
554 TIident[TIid].subtype = FIELD_SYMBOL; | |
555 | |
556 TIident[TIid].coord[0] = XleftGimpStyle; | |
557 TIident[TIid].coord[1] = XrightGimpStyle; | |
558 TIident[TIid].coord[2] = YtopGimpStyle; | |
559 TIident[TIid].fontUsed = (tFont *)Font; | |
560 TIident[TIid].callerID = editID; | |
561 | |
562 strncpy(TIident[TIid].orgText, text, 32); | |
563 strncpy(TIident[TIid].newText, text, 32); | |
564 TIident[TIid].orgText[31] = 0; | |
565 | |
566 TIident[TIid].newText[0] = text[0]; | |
567 TIident[TIid].newText[1] = 0; | |
568 | |
569 TIident[TIid].input = int1; | |
570 TIident[TIid].symbolCounter = strlen(TIident[TIid].orgText); | |
571 | |
572 change_CLUT_entry((CLUT_InfoField0 + TIid), CLUT_InfoButtonColor1); | |
573 | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
574 if(editID == 0) |
38 | 575 tInfo_write_content_without_Id(); |
576 else | |
577 { | |
578 tInfo_write_content_of_actual_Id(); | |
579 TIidLast = TIid; | |
580 TIid++; | |
581 } | |
582 } | |
583 | |
584 | |
585 void tInfo_write_field_on_off(uint32_t editID, uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const char *text, uint8_t int1) | |
586 { | |
587 if(TIidLast >= 9) | |
588 return; | |
589 | |
590 TIident[TIid].maintype = FIELD_ON_OFF; | |
591 TIident[TIid].subtype = FIELD_ON_OFF; | |
592 | |
593 TIident[TIid].coord[0] = XleftGimpStyle; | |
594 TIident[TIid].coord[1] = XrightGimpStyle; | |
595 TIident[TIid].coord[2] = YtopGimpStyle; | |
596 TIident[TIid].fontUsed = (tFont *)Font; | |
597 TIident[TIid].callerID = editID; | |
598 | |
599 strncpy(TIident[TIid].orgText, text, 32); | |
600 strncpy(TIident[TIid].newText, text, 32); | |
601 TIident[TIid].orgText[31] = 0; | |
602 TIident[TIid].newText[31] = 0; | |
603 | |
604 | |
605 if(int1) | |
606 change_CLUT_entry((CLUT_InfoField0 + TIid), CLUT_InfoActive); | |
607 else | |
608 change_CLUT_entry((CLUT_InfoField0 + TIid), CLUT_InfoInActive); | |
609 | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
610 if(editID == 0) |
38 | 611 tInfo_write_content_without_Id(); |
612 else | |
613 { | |
614 tInfo_write_content_of_actual_Id(); | |
615 TIidLast = TIid; | |
616 TIid++; | |
617 } | |
618 } | |
619 | |
620 | |
621 void tInfo_setEvent(uint32_t inputEventID, uint32_t inputFunctionCall) | |
622 { | |
623 if(TIevidLast >= 9) | |
624 return; | |
625 | |
626 /* set cursor to first field */ | |
627 if(TIevidLast < 0) | |
628 { | |
629 tI_startInfoFieldSelect(); | |
630 } | |
631 | |
632 TIevent[TIevid].callerID = inputEventID; | |
633 TIevent[TIevid].pEventFunction = inputFunctionCall; | |
634 | |
635 TIevidLast = TIevid; | |
636 TIevid++; | |
637 } | |
638 | |
639 | |
640 void tI_set_cursor(uint8_t forThisIdentID) | |
641 { | |
642 int16_t x0, x1, y0, y1; | |
643 | |
644 uint32_t xtra_left_right = 10; | |
645 uint32_t xtra_top_bottom = 10; | |
646 | |
647 /* y geht von 0 bis 799 */ | |
648 /* x geht von 0 bis 479 */ | |
649 | |
650 x0 = (int16_t)TIident[forThisIdentID].coord[0]; | |
651 x1 = (int16_t)TIident[forThisIdentID].coord[1]; | |
652 y0 = (int16_t)TIident[forThisIdentID].coord[2]; | |
653 y1 = y0 + (int16_t)TIident[forThisIdentID].fontUsed->height; | |
654 | |
655 if(((int16_t)TIident[forThisIdentID].fontUsed->height) > 70) | |
656 { | |
657 xtra_left_right = 10; | |
658 xtra_top_bottom = 10; | |
659 } | |
660 else | |
661 { | |
662 xtra_left_right = 10; | |
663 xtra_top_bottom = 0; | |
664 } | |
665 | |
666 x0 -= xtra_left_right; | |
667 x1 += xtra_left_right; | |
668 y0 -= xtra_top_bottom; | |
669 y1 += xtra_top_bottom; | |
670 | |
671 GFX_SetWindowLayer0(tIcursor.FBStartAdress, x0, x1, y0, y1); | |
672 } | |
673 | |
674 | |
675 void tInfo_write_label_var(uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const char *text) | |
676 { | |
677 GFX_DrawCfgWindow hgfx; | |
678 | |
679 if(XrightGimpStyle > 799) | |
680 XrightGimpStyle = 799; | |
681 if(XleftGimpStyle >= XrightGimpStyle) | |
682 XleftGimpStyle = 0; | |
683 if(YtopGimpStyle > 479) | |
684 YtopGimpStyle = 479; | |
685 hgfx.Image = &tIscreen; | |
686 hgfx.WindowNumberOfTextLines = 1; | |
687 hgfx.WindowLineSpacing = 0; | |
688 hgfx.WindowTab = 0; | |
689 hgfx.WindowX0 = XleftGimpStyle; | |
690 hgfx.WindowX1 = XrightGimpStyle; | |
691 hgfx.WindowY1 = 479 - YtopGimpStyle; | |
692 if(hgfx.WindowY1 < Font->height) | |
693 hgfx.WindowY0 = 0; | |
694 else | |
695 hgfx.WindowY0 = hgfx.WindowY1 - Font->height; | |
696 | |
697 GFX_write_label(Font, &hgfx, text, infoColor); | |
698 } | |
699 | |
700 | |
701 void tInfo_write_content(uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const char *text, uint8_t color) | |
702 { | |
703 GFX_DrawCfgWindow hgfx; | |
704 | |
705 if(XrightGimpStyle > 799) | |
706 XrightGimpStyle = 799; | |
707 if(XleftGimpStyle >= XrightGimpStyle) | |
708 XleftGimpStyle = 0; | |
709 if(YtopGimpStyle > 479) | |
710 YtopGimpStyle = 479; | |
711 hgfx.Image = &tIscreen; | |
712 hgfx.WindowNumberOfTextLines = 1; | |
713 hgfx.WindowLineSpacing = 0; | |
714 hgfx.WindowTab = 0; | |
715 hgfx.WindowX0 = XleftGimpStyle; | |
716 hgfx.WindowX1 = XrightGimpStyle; | |
717 hgfx.WindowY1 = 479 - YtopGimpStyle; | |
718 if(hgfx.WindowY1 < Font->height) | |
719 hgfx.WindowY0 = 0; | |
720 else | |
721 hgfx.WindowY0 = hgfx.WindowY1 - Font->height; | |
722 | |
723 GFX_write_label(Font, &hgfx, text, color); | |
724 } | |
725 | |
726 | |
727 void tInfo_write_label_fix(uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const char textId) | |
728 { | |
729 char text[2]; | |
730 | |
731 text[0] = textId; | |
732 text[1] = 0; | |
733 | |
734 tInfo_write_label_var(XleftGimpStyle, XrightGimpStyle, YtopGimpStyle, Font, text); | |
735 } | |
736 | |
737 | |
738 void tI_clean_content(uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font) | |
739 { | |
740 GFX_DrawCfgWindow hgfx; | |
741 | |
742 if(XrightGimpStyle > 799) | |
743 XrightGimpStyle = 799; | |
744 if(XleftGimpStyle >= XrightGimpStyle) | |
745 XleftGimpStyle = 0; | |
746 if(YtopGimpStyle > 479) | |
747 YtopGimpStyle = 479; | |
748 hgfx.Image = &tIscreen; | |
749 hgfx.WindowX0 = XleftGimpStyle; | |
750 hgfx.WindowX1 = XrightGimpStyle; | |
751 hgfx.WindowY1 = 479 - YtopGimpStyle; | |
752 if(hgfx.WindowY1 < Font->height) | |
753 hgfx.WindowY0 = 0; | |
754 else | |
755 hgfx.WindowY0 = hgfx.WindowY1 - Font->height; | |
756 | |
757 GFX_clear_window_immediately(&hgfx); | |
758 } | |
759 | |
760 | |
761 void tInfo_write_buttonTextline(GFX_DrawCfgScreen *screenPtr, uint8_t left2ByteCode, char middle2ByteCode, char right2ByteCode) | |
762 { | |
763 GFX_clean_area(&tIscreen, 0, 800, 480-24,480); | |
764 | |
765 char localtext[32]; | |
766 | |
767 if(left2ByteCode) | |
768 { | |
769 localtext[0] = TXT_2BYTE; | |
770 localtext[1] = left2ByteCode; | |
771 localtext[2] = 0; | |
772 write_content_simple(screenPtr, 0, 800, 480-24, &FontT24,localtext,CLUT_ButtonSurfaceScreen); | |
773 } | |
774 | |
775 if(middle2ByteCode) | |
776 { | |
777 localtext[0] = '\001'; | |
778 localtext[1] = TXT_2BYTE; | |
779 localtext[2] = middle2ByteCode; | |
780 localtext[3] = 0; | |
781 write_content_simple(screenPtr, 0, 800, 480-24, &FontT24,localtext,CLUT_ButtonSurfaceScreen); | |
782 } | |
783 | |
784 if(right2ByteCode) | |
785 { | |
786 localtext[0] = '\002'; | |
787 localtext[1] = TXT_2BYTE; | |
788 localtext[2] = right2ByteCode; | |
789 localtext[3] = 0; | |
790 write_content_simple(screenPtr, 0, 800, 480-24, &FontT24,localtext,CLUT_ButtonSurfaceScreen); | |
791 } | |
792 } |