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"
|
718
|
39 #include "tInfoSensor.h"
|
845
|
40 #include "tInfoPreDive.h"
|
38
|
41 #include "tMenu.h"
|
718
|
42 #include "tMenuEdit.h"
|
38
|
43
|
|
44 #include <string.h>
|
|
45
|
|
46 /* Private types -------------------------------------------------------------*/
|
|
47
|
|
48 typedef struct
|
|
49 {
|
|
50 uint32_t pEventFunction;
|
|
51 uint32_t callerID;
|
|
52 } SInfoEventHandler;
|
|
53
|
|
54 typedef struct
|
|
55 {
|
|
56 char orgText[32];
|
|
57 char newText[32];
|
699
|
58 uint8_t input;
|
38
|
59 char symbolCounter;
|
|
60 int8_t begin[4], size[4];
|
|
61 uint16_t coord[3];
|
|
62 tFont *fontUsed;
|
|
63 uint32_t callerID;
|
|
64 uint8_t maintype;
|
|
65 uint8_t subtype;
|
|
66 } SInfoIdent;
|
|
67
|
|
68 typedef enum
|
|
69 {
|
|
70 FIELD_BUTTON = 1,
|
|
71 FIELD_SELECT,
|
|
72 FIELD_SYMBOL,
|
|
73 FIELD_TOGGLE,
|
|
74 FIELD_ON_OFF,
|
|
75 FIELD_END
|
|
76 } SInfoField;
|
|
77
|
|
78 /* Private variables ---------------------------------------------------------*/
|
|
79 GFX_DrawCfgScreen tIscreen;
|
|
80 GFX_DrawCfgScreen tIcursor;
|
|
81
|
|
82 uint8_t infoColor = CLUT_InfoSurface;
|
|
83
|
|
84 int8_t TIid = 0;
|
|
85 int8_t TIidLast = -1;
|
|
86 SInfoIdent TIident[10];
|
|
87
|
|
88 int8_t TIevid = 0;
|
|
89 int8_t TIevidLast = -1;
|
|
90 SInfoEventHandler TIevent[10];
|
|
91
|
|
92 /* Private function prototypes -----------------------------------------------*/
|
|
93 void tInfo_build_page(void);
|
|
94
|
|
95 void tI_set_cursor(uint8_t forThisIdentID);
|
|
96 void tI_startInfoFieldSelect(void);
|
|
97 void tInfo_write_content_of_actual_Id(void);
|
|
98 void tI_clean_content_of_actual_Id(void);
|
|
99 void tInfo_write_content_without_Id(void);
|
|
100
|
|
101 void tI_clean_content(uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font);
|
|
102 void tInfo_write_content(uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const char *text, uint8_t color);
|
|
103
|
|
104 void tI_evaluateNewString (uint32_t editID, uint32_t *pNewValue1, uint32_t *pNewValue2, uint32_t *pNewValue3, uint32_t *pNewValue4);
|
|
105
|
|
106 //void tI_tInfo_newInput (uint32_t editID, uint32_t int1, uint32_t int2, uint32_t int3, uint32_t int4);
|
|
107 //void tI_tInfo_newButtonText (uint32_t editID, char *text);
|
|
108
|
|
109 void tI_enterInfoField(void);
|
|
110 void tI_nextInfoField(void);
|
|
111
|
|
112 /* Announced function prototypes -----------------------------------------------*/
|
|
113 //uint8_t OnAction_ILoglist (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
|
|
114 //uint8_t OnAction_ISimulator (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action);
|
|
115
|
|
116 /* Exported functions --------------------------------------------------------*/
|
|
117
|
|
118 void tI_init(void)
|
|
119 {
|
|
120 tIscreen.FBStartAdress = 0;
|
|
121 tIscreen.ImageHeight = 480;
|
|
122 tIscreen.ImageWidth = 800;
|
|
123 tIscreen.LayerIndex = 1;
|
|
124
|
|
125 tIcursor.FBStartAdress = getFrame(12);
|
|
126 tIcursor.ImageHeight = 480;
|
|
127 tIcursor.ImageWidth = 800;
|
|
128 tIcursor.LayerIndex = 0;
|
|
129
|
|
130 GFX_fill_buffer(tIcursor.FBStartAdress, 0xFF, CLUT_InfoCursor);
|
|
131 }
|
|
132
|
|
133
|
|
134 void openInfo(uint32_t modeToStart)
|
|
135 {
|
|
136 if((modeToStart != StILOGLIST) && (modeToStart != StIDEBUG))
|
|
137 return;
|
|
138
|
|
139 TIid = 0;
|
|
140 TIidLast = -1;
|
|
141 TIevid = 0;
|
|
142 TIevidLast = -1;
|
|
143
|
|
144 if(tIscreen.FBStartAdress)
|
|
145 releaseFrame(14,tIscreen.FBStartAdress);
|
|
146 tIscreen.FBStartAdress = getFrame(14);
|
|
147
|
|
148 // GFX_SetFramesTopBottom(tIscreen.FBStartAdress, tIcursor.FBStartAdress,480);
|
166
|
149 GFX_SetFramesTopBottom(tIscreen.FBStartAdress, 0,480);
|
38
|
150 infoColor = CLUT_InfoSurface;
|
|
151
|
|
152 if(modeToStart == StIDEBUG)
|
|
153 {
|
|
154 tDebug_start();
|
|
155 }
|
|
156 else
|
|
157 {
|
|
158 openLog(0);
|
|
159 }
|
|
160 // openInfoLogLastDive();
|
|
161 }
|
|
162
|
|
163 /*
|
|
164 void openInfo(void)
|
|
165 {
|
|
166 if((stateUsed->mode == MODE_DIVE) && (!is_stateUsedSetToSim()))
|
|
167 {
|
|
168 return;
|
|
169 }
|
|
170
|
|
171 TIid = 0;
|
|
172 TIidLast = -1;
|
|
173 TIevid = 0;
|
|
174 TIevidLast = -1;
|
|
175
|
|
176 if(tIscreen.FBStartAdress)
|
|
177 releaseFrame(14,tIscreen.FBStartAdress);
|
|
178 tIscreen.FBStartAdress = getFrame(14);
|
|
179
|
|
180 GFX_SetFramesTopBottom(tIscreen.FBStartAdress, tIcursor.FBStartAdress,480);
|
|
181
|
|
182 if(stateUsed->mode == MODE_DIVE)
|
|
183 {
|
|
184 infoColor = CLUT_InfoSurface;
|
|
185 openInfo_Dive();
|
|
186 }
|
|
187 else
|
|
188 {
|
|
189 infoColor = CLUT_InfoDive;
|
|
190 openInfo_Surface();
|
|
191 }
|
|
192 }
|
|
193 */
|
|
194
|
|
195 /*
|
|
196 uint8_t OnAction_ILoglist (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action)
|
|
197 {
|
|
198 return 255;
|
|
199 }
|
|
200 */
|
|
201
|
|
202 void tInfo_refresh(void)
|
|
203 {
|
|
204 uint32_t oldIscreen;
|
718
|
205 uint32_t globalState = get_globalState();
|
38
|
206 oldIscreen = tIscreen.FBStartAdress;
|
718
|
207
|
38
|
208 if(inDebugMode())
|
718
|
209 {
|
|
210 tIscreen.FBStartAdress = getFrame(14);
|
|
211 infoColor = CLUT_InfoCompass;
|
|
212 tDebug_refresh();
|
|
213 }
|
38
|
214 else
|
718
|
215 {
|
|
216 switch(globalState)
|
|
217 {
|
|
218 case StICOMPASS: tIscreen.FBStartAdress = getFrame(14);
|
|
219 infoColor = CLUT_InfoCompass;
|
|
220 refreshInfo_Compass(tIscreen);
|
|
221 break;
|
|
222 case StISENINFO: tIscreen.FBStartAdress = getFrame(14);
|
|
223 infoColor = CLUT_MenuPageHardware;
|
|
224 refreshInfo_Sensor(tIscreen);
|
|
225 break;
|
845
|
226 case StIPREDIVE: tIscreen.FBStartAdress = getFrame(14);
|
|
227 infoColor = CLUT_MenuPageGasCC;
|
|
228 refreshInfo_PreDive(tIscreen);
|
|
229 break;
|
|
230
|
718
|
231 default:
|
|
232 break;
|
|
233 }
|
|
234 }
|
|
235 if(oldIscreen != tIscreen.FBStartAdress)
|
|
236 {
|
|
237 GFX_SetFramesTopBottom(tIscreen.FBStartAdress, 0,480);
|
|
238 if(oldIscreen)
|
|
239 {
|
|
240 releaseFrame(14,oldIscreen);
|
|
241 }
|
|
242 }
|
38
|
243 }
|
|
244
|
|
245
|
|
246 void exitInfo(void)
|
|
247 {
|
|
248 set_globalState_tHome();
|
|
249 releaseFrame(14,tIscreen.FBStartAdress);
|
|
250 exitDebugMode();
|
|
251 }
|
|
252
|
718
|
253 void exitInfoToBack(void)
|
|
254 {
|
|
255 releaseFrame(14,tIscreen.FBStartAdress);
|
|
256 exitMenuEdit_to_BackMenu();
|
|
257 }
|
|
258
|
38
|
259
|
|
260 void sendActionToInfo(uint8_t sendAction)
|
|
261 {
|
|
262 if(inDebugMode())
|
|
263 {
|
|
264 tDebugControl(sendAction);
|
|
265 return;
|
|
266 }
|
|
267
|
|
268 if(get_globalState() == StICOMPASS)
|
|
269 return;
|
|
270
|
|
271 switch(sendAction)
|
|
272 {
|
|
273 case ACTION_BUTTON_ENTER:
|
|
274 tI_enterInfoField();
|
|
275 break;
|
|
276 case ACTION_BUTTON_NEXT:
|
|
277 tI_nextInfoField();
|
|
278 break;
|
|
279 case ACTION_TIMEOUT:
|
|
280 case ACTION_MODE_CHANGE:
|
|
281 case ACTION_BUTTON_BACK:
|
|
282 exitInfo();
|
130
|
283 break;
|
38
|
284 default:
|
|
285 break;
|
|
286 case ACTION_IDLE_TICK:
|
|
287 case ACTION_IDLE_SECOND:
|
|
288 break;
|
|
289 }
|
|
290
|
|
291 }
|
|
292
|
|
293 /* Private functions ---------------------------------------------------------*/
|
|
294
|
|
295 void tInfo_build_page(void)
|
|
296 {
|
|
297 tInfo_write_content_simple( 30, 340, 90, &FontT48, "Logbook", CLUT_Font020);
|
|
298
|
|
299 }
|
|
300
|
|
301 void tInfo_write_content_simple(uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const char *text, uint8_t color)
|
|
302 {
|
|
303 GFX_DrawCfgWindow hgfx;
|
|
304
|
|
305 if(XrightGimpStyle > 799)
|
|
306 XrightGimpStyle = 799;
|
|
307 if(XleftGimpStyle >= XrightGimpStyle)
|
|
308 XleftGimpStyle = 0;
|
|
309 if(YtopGimpStyle > 479)
|
|
310 YtopGimpStyle = 479;
|
|
311 hgfx.Image = &tIscreen;
|
|
312 hgfx.WindowNumberOfTextLines = 1;
|
|
313 hgfx.WindowLineSpacing = 0;
|
|
314 hgfx.WindowTab = 400;
|
826
|
315
|
|
316 if(!settingsGetPointer()->FlipDisplay)
|
|
317 {
|
848
|
318 hgfx.WindowX0 = XleftGimpStyle;
|
|
319 hgfx.WindowX1 = XrightGimpStyle;
|
|
320
|
826
|
321 hgfx.WindowY1 = 479 - YtopGimpStyle;
|
|
322 if(hgfx.WindowY1 < Font->height)
|
|
323 hgfx.WindowY0 = 0;
|
|
324 else
|
|
325 hgfx.WindowY0 = hgfx.WindowY1 - Font->height;
|
|
326 }
|
38
|
327 else
|
826
|
328 {
|
848
|
329 hgfx.WindowX0 = 800 - XrightGimpStyle;
|
|
330 hgfx.WindowX1 = 800 - XleftGimpStyle;
|
826
|
331 hgfx.WindowY0 = YtopGimpStyle;
|
|
332 hgfx.WindowY1 = YtopGimpStyle + Font->height;
|
|
333 }
|
38
|
334
|
|
335 GFX_write_string_color(Font, &hgfx, text, 0, color);
|
|
336 }
|
|
337
|
|
338 /* Exported functions --------------------------------------------------------*/
|
|
339
|
|
340 void tI_startInfoFieldSelect(void)
|
|
341 {
|
|
342 TIid = 0;
|
|
343 tI_set_cursor(TIid);
|
|
344 }
|
|
345
|
|
346
|
|
347 void tI_nextInfoField(void)
|
|
348 {
|
|
349 if(TIid < TIidLast)
|
|
350 TIid++;
|
|
351 else
|
|
352 TIid = 0;
|
|
353 tI_set_cursor(TIid);
|
|
354 }
|
|
355
|
|
356
|
|
357 void tI_previousInfoField(void)
|
|
358 {
|
|
359 if(TIid > 0)
|
|
360 TIid--;
|
|
361 else
|
|
362 TIid = TIidLast;
|
|
363 tI_set_cursor(TIid);
|
|
364 }
|
|
365
|
|
366
|
|
367 uint8_t tI_get_newContent_of_actual_id_block_and_subBlock(uint8_t action)
|
|
368 {
|
|
369 uint8_t (*onActionFunc)(uint32_t, uint8_t, uint8_t, uint8_t, uint8_t);
|
|
370 uint8_t content;
|
|
371
|
|
372 if(TIevent[TIevid].callerID != TIident[TIid].callerID)
|
|
373 return 0;
|
|
374
|
|
375 onActionFunc = (uint8_t (*)(uint32_t, uint8_t, uint8_t, uint8_t, uint8_t))(TIevent[TIevid].pEventFunction);
|
|
376
|
|
377 if(TIident[TIid].maintype == FIELD_ON_OFF)
|
|
378 content = TIident[TIid].input;
|
|
379 else
|
|
380 content = 0; /* just a default for protection */
|
|
381
|
|
382 return onActionFunc(TIident[TIid].callerID, 0, 0, content, action);
|
|
383 }
|
|
384
|
|
385
|
|
386 void tI_enterInfoField(void)
|
|
387 {
|
|
388 uint8_t newContent;
|
|
389
|
|
390 TIevid = 0;
|
|
391 while((TIevid < TIevidLast) && (TIevent[TIevid].callerID != TIident[TIid].callerID))
|
|
392 {
|
|
393 TIevid++;
|
|
394 }
|
|
395
|
|
396 if(TIevent[TIevid].callerID != TIident[TIid].callerID)
|
|
397 return;
|
|
398
|
|
399 newContent = tI_get_newContent_of_actual_id_block_and_subBlock(ACTION_BUTTON_ENTER);
|
|
400
|
|
401 if(newContent == 255)
|
|
402 {
|
|
403 exitInfo();
|
|
404 return;
|
|
405 }
|
|
406
|
|
407 switch(TIident[TIid].maintype)
|
|
408 {
|
|
409 case FIELD_BUTTON:
|
|
410 break;
|
|
411 case FIELD_ON_OFF:
|
|
412 break;
|
|
413 case FIELD_SYMBOL:
|
|
414 TIident[TIid].input += 1;
|
|
415 if(TIident[TIid].input >= TIident[TIid].symbolCounter)
|
|
416 TIident[TIid].input = 0;
|
|
417 TIident[TIid].newText[0] = TIident[TIid].orgText[TIident[TIid].input];
|
|
418 tInfo_write_content_of_actual_Id();
|
|
419 break;
|
|
420 }
|
|
421 }
|
|
422
|
|
423
|
|
424 void tI_evaluateNewString(uint32_t editID, uint32_t *pNewValue1, uint32_t *pNewValue2, uint32_t *pNewValue3, uint32_t *pNewValue4)
|
|
425 {
|
|
426 if(editID != TIident[TIid].callerID)
|
|
427 return;
|
|
428
|
|
429 uint8_t i, digitCount, digit;
|
|
430 uint32_t sum[4], multiplier;
|
|
431
|
|
432 for(i=0;i<4;i++)
|
|
433 sum[i] = 0;
|
|
434
|
|
435 i = 0;
|
|
436 while( TIident[TIid].size[i] && (i < 4))
|
|
437 {
|
|
438 multiplier = 1;
|
|
439 for(digitCount = 1; digitCount < TIident[TIid].size[i]; digitCount++)
|
|
440 multiplier *= 10;
|
|
441
|
|
442 for(digitCount = 0; digitCount < TIident[TIid].size[i]; digitCount++)
|
|
443 {
|
|
444 digit = TIident[TIid].newText[TIident[TIid].begin[i] + digitCount];
|
|
445
|
|
446 if(digit > '0')
|
|
447 digit -= '0';
|
|
448 else
|
|
449 digit = 0;
|
|
450
|
|
451 if(digit > 9)
|
|
452 digit = 9;
|
|
453
|
|
454 sum[i] += digit * multiplier;
|
|
455
|
|
456 if(multiplier >= 10)
|
|
457 multiplier /= 10;
|
|
458 else
|
|
459 multiplier = 0;
|
|
460 }
|
|
461 i++;
|
|
462 }
|
|
463
|
|
464 *pNewValue1 = sum[0];
|
|
465 *pNewValue2 = sum[1];
|
|
466 *pNewValue3 = sum[2];
|
|
467 *pNewValue4 = sum[3];
|
|
468 }
|
|
469
|
|
470
|
|
471 uint8_t tI_get_id_of(uint32_t editID)
|
|
472 {
|
|
473 uint8_t temp_id;
|
|
474
|
|
475 if(editID == TIident[TIid].callerID)
|
|
476 return TIid;
|
|
477 else
|
|
478 {
|
|
479 temp_id = 0;
|
|
480 while((temp_id < 9) && (editID != TIident[temp_id].callerID))
|
|
481 temp_id++;
|
|
482 if(editID != TIident[temp_id].callerID)
|
|
483 temp_id = 255;
|
|
484 return temp_id;
|
|
485 }
|
|
486 }
|
|
487
|
|
488
|
|
489 void tI_newButtonText(uint32_t editID, char *text)
|
|
490 {
|
|
491 uint8_t backup_id, temp_id;
|
|
492
|
|
493 temp_id = tI_get_id_of(editID);
|
|
494 if(temp_id == 255)
|
|
495 return;
|
|
496
|
|
497 backup_id = TIid;
|
|
498 TIid = temp_id;
|
|
499
|
|
500 strncpy(TIident[TIid].newText, text, 32);
|
|
501 TIident[TIid].newText[31] = 0;
|
|
502
|
|
503 tI_clean_content_of_actual_Id();
|
|
504 tInfo_write_content_of_actual_Id();
|
|
505
|
|
506 TIid = backup_id;
|
|
507 }
|
|
508
|
|
509
|
699
|
510 void tInfo_set_on_off(uint32_t editID, uint8_t int1)
|
38
|
511 {
|
|
512 uint8_t backup_id, temp_id;
|
|
513
|
|
514 temp_id = tI_get_id_of(editID);
|
|
515 if(temp_id == 255)
|
|
516 return;
|
|
517
|
|
518 backup_id = TIid;
|
|
519 TIid = temp_id;
|
|
520
|
|
521 TIident[TIid].input = int1;
|
|
522
|
|
523 if(int1)
|
|
524 change_CLUT_entry((CLUT_InfoField0 + TIid), CLUT_InfoActive);
|
|
525 else
|
|
526 change_CLUT_entry((CLUT_InfoField0 + TIid), CLUT_InfoInActive);
|
|
527
|
|
528 tInfo_write_content_of_actual_Id();
|
|
529
|
|
530 TIid = backup_id;
|
|
531 }
|
|
532
|
|
533
|
|
534 void tInfo_write_content_without_Id(void)
|
|
535 {
|
|
536 tInfo_write_content( TIident[TIid].coord[0], TIident[TIid].coord[1], TIident[TIid].coord[2], TIident[TIid].fontUsed, TIident[TIid].newText, CLUT_InfoFieldRegular);
|
|
537 }
|
|
538
|
|
539
|
|
540 void tInfo_write_content_of_actual_Id(void)
|
|
541 {
|
|
542 tInfo_write_content( TIident[TIid].coord[0], TIident[TIid].coord[1], TIident[TIid].coord[2], TIident[TIid].fontUsed, TIident[TIid].newText, (CLUT_InfoField0 + TIid));
|
|
543 }
|
|
544
|
|
545
|
|
546 void tI_clean_content_of_actual_Id(void)
|
|
547 {
|
|
548 tI_clean_content( TIident[TIid].coord[0], TIident[TIid].coord[1], TIident[TIid].coord[2], TIident[TIid].fontUsed);
|
|
549 }
|
|
550
|
|
551
|
|
552 void tInfo_write_field_button(uint32_t editID, uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const char *text)
|
|
553 {
|
|
554 if(TIidLast >= 9)
|
|
555 return;
|
|
556
|
|
557 TIident[TIid].maintype = FIELD_BUTTON;
|
|
558 TIident[TIid].subtype = FIELD_BUTTON;
|
|
559
|
|
560 TIident[TIid].coord[0] = XleftGimpStyle;
|
|
561 TIident[TIid].coord[1] = XrightGimpStyle;
|
|
562 TIident[TIid].coord[2] = YtopGimpStyle;
|
|
563 TIident[TIid].fontUsed = (tFont *)Font;
|
|
564 TIident[TIid].callerID = editID;
|
|
565
|
|
566 strncpy(TIident[TIid].orgText, text, 32);
|
|
567 strncpy(TIident[TIid].newText, text, 32);
|
|
568 TIident[TIid].orgText[31] = 0;
|
|
569 TIident[TIid].newText[31] = 0;
|
|
570
|
|
571 change_CLUT_entry((CLUT_InfoField0 + TIid), CLUT_InfoButtonColor1);
|
|
572
|
166
|
573 if(editID == 0)
|
38
|
574 tInfo_write_content_without_Id();
|
|
575 else
|
|
576 {
|
|
577 tInfo_write_content_of_actual_Id();
|
|
578 TIidLast = TIid;
|
|
579 TIid++;
|
|
580 }
|
|
581 }
|
|
582
|
|
583
|
|
584 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)
|
|
585 {
|
|
586 if(TIidLast >= 9)
|
|
587 return;
|
|
588
|
|
589 TIident[TIid].maintype = FIELD_SYMBOL;
|
|
590 TIident[TIid].subtype = FIELD_SYMBOL;
|
|
591
|
|
592 TIident[TIid].coord[0] = XleftGimpStyle;
|
|
593 TIident[TIid].coord[1] = XrightGimpStyle;
|
|
594 TIident[TIid].coord[2] = YtopGimpStyle;
|
|
595 TIident[TIid].fontUsed = (tFont *)Font;
|
|
596 TIident[TIid].callerID = editID;
|
|
597
|
|
598 strncpy(TIident[TIid].orgText, text, 32);
|
|
599 strncpy(TIident[TIid].newText, text, 32);
|
|
600 TIident[TIid].orgText[31] = 0;
|
|
601
|
|
602 TIident[TIid].newText[0] = text[0];
|
|
603 TIident[TIid].newText[1] = 0;
|
|
604
|
|
605 TIident[TIid].input = int1;
|
|
606 TIident[TIid].symbolCounter = strlen(TIident[TIid].orgText);
|
|
607
|
|
608 change_CLUT_entry((CLUT_InfoField0 + TIid), CLUT_InfoButtonColor1);
|
|
609
|
166
|
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_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)
|
|
622 {
|
|
623 if(TIidLast >= 9)
|
|
624 return;
|
|
625
|
|
626 TIident[TIid].maintype = FIELD_ON_OFF;
|
|
627 TIident[TIid].subtype = FIELD_ON_OFF;
|
|
628
|
|
629 TIident[TIid].coord[0] = XleftGimpStyle;
|
|
630 TIident[TIid].coord[1] = XrightGimpStyle;
|
|
631 TIident[TIid].coord[2] = YtopGimpStyle;
|
|
632 TIident[TIid].fontUsed = (tFont *)Font;
|
|
633 TIident[TIid].callerID = editID;
|
|
634
|
|
635 strncpy(TIident[TIid].orgText, text, 32);
|
|
636 strncpy(TIident[TIid].newText, text, 32);
|
|
637 TIident[TIid].orgText[31] = 0;
|
|
638 TIident[TIid].newText[31] = 0;
|
|
639
|
|
640
|
|
641 if(int1)
|
|
642 change_CLUT_entry((CLUT_InfoField0 + TIid), CLUT_InfoActive);
|
|
643 else
|
|
644 change_CLUT_entry((CLUT_InfoField0 + TIid), CLUT_InfoInActive);
|
|
645
|
166
|
646 if(editID == 0)
|
38
|
647 tInfo_write_content_without_Id();
|
|
648 else
|
|
649 {
|
|
650 tInfo_write_content_of_actual_Id();
|
|
651 TIidLast = TIid;
|
|
652 TIid++;
|
|
653 }
|
|
654 }
|
|
655
|
|
656
|
|
657 void tInfo_setEvent(uint32_t inputEventID, uint32_t inputFunctionCall)
|
|
658 {
|
|
659 if(TIevidLast >= 9)
|
|
660 return;
|
|
661
|
|
662 /* set cursor to first field */
|
|
663 if(TIevidLast < 0)
|
|
664 {
|
|
665 tI_startInfoFieldSelect();
|
|
666 }
|
|
667
|
|
668 TIevent[TIevid].callerID = inputEventID;
|
|
669 TIevent[TIevid].pEventFunction = inputFunctionCall;
|
|
670
|
|
671 TIevidLast = TIevid;
|
|
672 TIevid++;
|
|
673 }
|
|
674
|
|
675
|
|
676 void tI_set_cursor(uint8_t forThisIdentID)
|
|
677 {
|
|
678 int16_t x0, x1, y0, y1;
|
|
679
|
|
680 uint32_t xtra_left_right = 10;
|
|
681 uint32_t xtra_top_bottom = 10;
|
|
682
|
|
683 /* y geht von 0 bis 799 */
|
|
684 /* x geht von 0 bis 479 */
|
|
685
|
|
686 x0 = (int16_t)TIident[forThisIdentID].coord[0];
|
|
687 x1 = (int16_t)TIident[forThisIdentID].coord[1];
|
|
688 y0 = (int16_t)TIident[forThisIdentID].coord[2];
|
|
689 y1 = y0 + (int16_t)TIident[forThisIdentID].fontUsed->height;
|
|
690
|
|
691 if(((int16_t)TIident[forThisIdentID].fontUsed->height) > 70)
|
|
692 {
|
|
693 xtra_left_right = 10;
|
|
694 xtra_top_bottom = 10;
|
|
695 }
|
|
696 else
|
|
697 {
|
|
698 xtra_left_right = 10;
|
|
699 xtra_top_bottom = 0;
|
|
700 }
|
|
701
|
|
702 x0 -= xtra_left_right;
|
|
703 x1 += xtra_left_right;
|
|
704 y0 -= xtra_top_bottom;
|
|
705 y1 += xtra_top_bottom;
|
|
706
|
|
707 GFX_SetWindowLayer0(tIcursor.FBStartAdress, x0, x1, y0, y1);
|
|
708 }
|
|
709
|
|
710
|
|
711 void tInfo_write_label_var(uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const char *text)
|
|
712 {
|
|
713 GFX_DrawCfgWindow hgfx;
|
|
714
|
|
715 if(XrightGimpStyle > 799)
|
|
716 XrightGimpStyle = 799;
|
|
717 if(XleftGimpStyle >= XrightGimpStyle)
|
|
718 XleftGimpStyle = 0;
|
|
719 if(YtopGimpStyle > 479)
|
|
720 YtopGimpStyle = 479;
|
|
721 hgfx.Image = &tIscreen;
|
|
722 hgfx.WindowNumberOfTextLines = 1;
|
|
723 hgfx.WindowLineSpacing = 0;
|
|
724 hgfx.WindowTab = 0;
|
|
725 hgfx.WindowX0 = XleftGimpStyle;
|
|
726 hgfx.WindowX1 = XrightGimpStyle;
|
|
727 hgfx.WindowY1 = 479 - YtopGimpStyle;
|
|
728 if(hgfx.WindowY1 < Font->height)
|
|
729 hgfx.WindowY0 = 0;
|
|
730 else
|
|
731 hgfx.WindowY0 = hgfx.WindowY1 - Font->height;
|
|
732
|
|
733 GFX_write_label(Font, &hgfx, text, infoColor);
|
|
734 }
|
|
735
|
|
736
|
|
737 void tInfo_write_content(uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const char *text, uint8_t color)
|
|
738 {
|
|
739 GFX_DrawCfgWindow hgfx;
|
|
740
|
|
741 if(XrightGimpStyle > 799)
|
|
742 XrightGimpStyle = 799;
|
|
743 if(XleftGimpStyle >= XrightGimpStyle)
|
|
744 XleftGimpStyle = 0;
|
|
745 if(YtopGimpStyle > 479)
|
|
746 YtopGimpStyle = 479;
|
|
747 hgfx.Image = &tIscreen;
|
|
748 hgfx.WindowNumberOfTextLines = 1;
|
|
749 hgfx.WindowLineSpacing = 0;
|
|
750 hgfx.WindowTab = 0;
|
|
751 hgfx.WindowX0 = XleftGimpStyle;
|
|
752 hgfx.WindowX1 = XrightGimpStyle;
|
|
753 hgfx.WindowY1 = 479 - YtopGimpStyle;
|
|
754 if(hgfx.WindowY1 < Font->height)
|
|
755 hgfx.WindowY0 = 0;
|
|
756 else
|
|
757 hgfx.WindowY0 = hgfx.WindowY1 - Font->height;
|
|
758
|
|
759 GFX_write_label(Font, &hgfx, text, color);
|
|
760 }
|
|
761
|
|
762
|
|
763 void tInfo_write_label_fix(uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font, const char textId)
|
|
764 {
|
|
765 char text[2];
|
|
766
|
|
767 text[0] = textId;
|
|
768 text[1] = 0;
|
|
769
|
|
770 tInfo_write_label_var(XleftGimpStyle, XrightGimpStyle, YtopGimpStyle, Font, text);
|
|
771 }
|
|
772
|
|
773
|
|
774 void tI_clean_content(uint16_t XleftGimpStyle, uint16_t XrightGimpStyle, uint16_t YtopGimpStyle, const tFont *Font)
|
|
775 {
|
|
776 GFX_DrawCfgWindow hgfx;
|
|
777
|
|
778 if(XrightGimpStyle > 799)
|
|
779 XrightGimpStyle = 799;
|
|
780 if(XleftGimpStyle >= XrightGimpStyle)
|
|
781 XleftGimpStyle = 0;
|
|
782 if(YtopGimpStyle > 479)
|
|
783 YtopGimpStyle = 479;
|
|
784 hgfx.Image = &tIscreen;
|
|
785 hgfx.WindowX0 = XleftGimpStyle;
|
|
786 hgfx.WindowX1 = XrightGimpStyle;
|
|
787 hgfx.WindowY1 = 479 - YtopGimpStyle;
|
|
788 if(hgfx.WindowY1 < Font->height)
|
|
789 hgfx.WindowY0 = 0;
|
|
790 else
|
|
791 hgfx.WindowY0 = hgfx.WindowY1 - Font->height;
|
|
792
|
|
793 GFX_clear_window_immediately(&hgfx);
|
|
794 }
|
|
795
|
|
796
|
|
797 void tInfo_write_buttonTextline(GFX_DrawCfgScreen *screenPtr, uint8_t left2ByteCode, char middle2ByteCode, char right2ByteCode)
|
|
798 {
|
|
799 GFX_clean_area(&tIscreen, 0, 800, 480-24,480);
|
|
800
|
|
801 char localtext[32];
|
|
802
|
|
803 if(left2ByteCode)
|
|
804 {
|
|
805 localtext[0] = TXT_2BYTE;
|
|
806 localtext[1] = left2ByteCode;
|
|
807 localtext[2] = 0;
|
|
808 write_content_simple(screenPtr, 0, 800, 480-24, &FontT24,localtext,CLUT_ButtonSurfaceScreen);
|
|
809 }
|
|
810
|
|
811 if(middle2ByteCode)
|
|
812 {
|
|
813 localtext[0] = '\001';
|
|
814 localtext[1] = TXT_2BYTE;
|
|
815 localtext[2] = middle2ByteCode;
|
|
816 localtext[3] = 0;
|
|
817 write_content_simple(screenPtr, 0, 800, 480-24, &FontT24,localtext,CLUT_ButtonSurfaceScreen);
|
|
818 }
|
|
819
|
|
820 if(right2ByteCode)
|
|
821 {
|
|
822 localtext[0] = '\002';
|
|
823 localtext[1] = TXT_2BYTE;
|
|
824 localtext[2] = right2ByteCode;
|
|
825 localtext[3] = 0;
|
|
826 write_content_simple(screenPtr, 0, 800, 480-24, &FontT24,localtext,CLUT_ButtonSurfaceScreen);
|
|
827 }
|
|
828 }
|
845
|
829 void tInfo_write_buttonTextline_simple(uint8_t left2ByteCode, char middle2ByteCode, char right2ByteCode)
|
|
830 {
|
|
831 char localtext[32];
|
|
832
|
|
833 if(left2ByteCode)
|
|
834 {
|
|
835 localtext[0] = TXT_2BYTE;
|
|
836 localtext[1] = left2ByteCode;
|
|
837 localtext[2] = 0;
|
|
838 tInfo_write_content_simple(0, 800, 480-24, &FontT24,localtext,CLUT_ButtonSurfaceScreen);
|
|
839 }
|
|
840
|
|
841 if(middle2ByteCode)
|
|
842 {
|
|
843 localtext[0] = '\001';
|
|
844 localtext[1] = TXT_2BYTE;
|
|
845 localtext[2] = middle2ByteCode;
|
|
846 localtext[3] = 0;
|
|
847 tInfo_write_content_simple(0, 800, 480-24, &FontT24,localtext,CLUT_ButtonSurfaceScreen);
|
|
848 }
|
|
849
|
|
850 if(right2ByteCode)
|
|
851 {
|
|
852 localtext[0] = '\002';
|
|
853 localtext[1] = TXT_2BYTE;
|
|
854 localtext[2] = right2ByteCode;
|
|
855 localtext[3] = 0;
|
|
856 tInfo_write_content_simple(0, 800, 480-24, &FontT24,localtext,CLUT_ButtonSurfaceScreen);
|
|
857 }
|
|
858 }
|