View difference between Paste ID: ciqWynfA and mwKEhfr4
SHOW: | | - or go back to the newest paste.
1
#include <MI0283QT2.h>
2
#include <ADS7846.h>
3
#include <fonts.h>
4
5
#include "lcdGUI.h"
6
7
#ifdef BUTTON
8
#ifndef lcdGUI_BUTTON
9
#define lcdGUI_BUTTON
10
void Gui::addButton(uint16_t _left, uint16_t _top, uint16_t _width, uint16_t _height, char * _caption, uint8_t _size,uint8_t _id)
11
{
12
  Button * btn = (Button*)malloc(sizeof(Button));
13
  
14
  if(btn != NULL)
15
  {
16
    btn->next          = NULL;
17
    btn->x             = _left;
18
    btn->y             = _top;
19
    btn->width         = _width;
20
    btn->height        = _height;
21
    btn->size          = _size;
22
23
    if (strlen(_caption) == 0)
24
      btn->text = NULL;
25
    else
26
    {
27
      btn->text = (char *)malloc(strlen(_caption) + 1);
28
      if (btn->text != NULL)
29
        strcpy(btn->text, _caption);
30
    }
31
    
32
    btn->id            = _id;
33
    
34
    if (btnPtr == NULL)
35
      btnPtr = btn;
36
    else
37
      lastBtnPtr->next = btn;
38
    
39
    lastBtnPtr = btn;
40
  }
41
  btn->draw(lcd, false);
42
}
43
#endif
44
#endif
45
46
#ifndef lcdGUI_cpp
47
#define lcdGUI_cpp
48
49
void buttonPressed(Button*);
50
void buttonReleased(Button*);
51
void sliderValueChanged(Slider*);
52
53
Gui::Gui(lcdPtr _lcd, tpPtr _tp)
54
{
55
  lcd = _lcd;
56
  tp = _tp;
57
}
58
59
void Gui::addTextbox(uint16_t X, uint16_t Y, uint16_t W, char * T, char * DFT, uint8_t S, uint8_t ID)
60
{
61
  TextBox * txtBox = (TextBox*)malloc(sizeof(TextBox));
62
  
63
  if(txtBox != NULL)
64
  {
65
    txtBox->x = X;
66
    txtBox->y = Y;
67
    txtBox->width = W;
68
    txtBox->id = ID;
69
    txtBox->size = S;
70
    txtBox->next = NULL;
71
  }
72
  
73
  if(strlen(T) == 0)
74
    txtBox->text = NULL;
75
  else
76
  {
77
    txtBox->text = (char*)malloc(strlen(T)+1);
78
    if(txtBox->text != NULL)
79
      strcpy(txtBox->text, T);
80
  }
81
  
82
  if(strlen(DFT) == 0)
83
    txtBox->defaultText = NULL;
84
  else
85
  {
86
    txtBox->defaultText = (char*)malloc(strlen(DFT)+1);
87
    if(txtBox->defaultText != NULL)
88
      strcpy(txtBox->defaultText, DFT);
89
  }
90
  
91
  if(txtPtr == NULL)
92
    txtPtr = txtBox;
93
  else
94
    lastTxtPtr->next = txtBox;
95
  
96
  lastTxtPtr = txtBox;
97
  
98
  txtBox->draw(lcd, false);
99
}
100
101
void Gui::addSlider(uint16_t X, uint16_t Y, uint16_t W, uint16_t H, float V, uint8_t ID)
102
{
103
  Slider * sld = (Slider*)malloc(sizeof(Slider));
104
  
105
  if(sld != NULL)
106
  {
107
    sld->x = X;
108
    sld->y = Y;
109
    sld->width = W;
110
    sld->height = H;
111
    sld->value = V;
112
    sld->id = ID;
113
    sld->next = NULL;
114
  }
115
  
116
  if(sldPtr == NULL)
117
    sldPtr = sld;
118
  else
119
    lastSldPtr->next = sld;
120
    
121
  lastSldPtr = sld;
122
  sld->draw(lcd, false);
123
}
124
125
void Gui::addStatusBar(char * T, uint8_t S)
126
{
127
  if(statBarPtr == NULL)
128
  {
129
    StatusBar * stbr = (StatusBar*)malloc(sizeof(StatusBar));
130
    if(stbr != NULL)
131
    {
132
      if(strlen(T) == NULL)
133
        return;
134
      else
135
      {
136
        stbr->size = S;
137
        stbr->text = (char*)malloc(strlen(T)+1);
138
        if(stbr->text != NULL)
139
          strcpy(stbr->text, T);
140
      }
141
    }
142
    statBarPtr = stbr;
143
    stbr->draw(lcd);
144
  }
145
}
146
147
void Gui::addCheckbox(uint16_t X, uint16_t Y, char * T, bool A, uint8_t ID)
148
{
149
  CheckBox * chk = (CheckBox*)malloc(sizeof(CheckBox));
150
  
151
  if(chk != NULL)
152
  {
153
    chk->x = X;
154
    chk->y = Y;
155
    chk->isActive = A;
156
    chk->next = NULL;
157
    chk->id = ID;
158
    if(strlen(T) == 0)
159
      chk->text = NULL;
160
    else
161
    {
162
      chk->text  = (char*)malloc(strlen(T)+1);
163
      if(chk->text != NULL)
164
        strcpy(chk->text, T);
165
    }
166
    if(chkPtr == NULL)
167
      chkPtr = chk;
168
    else
169
      lastChkPtr->next = chk;
170
    
171
    lastChkPtr = chk;
172
    
173
    chk->draw(lcd, false);
174
  }
175
}
176
177
void Gui::service(bool draw)
178
{  
179
  if(draw)
180
  {
181
    lcd->clear(COLOR_BG);
182
    
183
    //draw statusbar
184
    if(statBarPtr != NULL)
185
      statBarPtr->draw(lcd);
186
    //draw buttons
187
    Button * tmpBtnPtr = btnPtr;
188
    while(tmpBtnPtr != NULL)
189
    {
190
      tmpBtnPtr->draw(lcd, false);
191
      tmpBtnPtr = tmpBtnPtr->next;
192
    }
193
    //draw textboxes
194
    TextBox * tmpTxtPtr = txtPtr;
195
    while(tmpTxtPtr != NULL)
196
    {
197
      tmpTxtPtr->draw(lcd, false);
198
      tmpTxtPtr = tmpTxtPtr->next;
199
    }
200
    //draw sliders
201
    Slider * tmpSldPtr = sldPtr;
202
    while(tmpSldPtr != NULL)
203
    {
204
      tmpSldPtr->draw(lcd, false);
205
      tmpSldPtr = tmpSldPtr->next;
206
    }
207
    //draw checkboxes
208
    CheckBox * tmpChkPtr = chkPtr;
209
    while(tmpChkPtr != NULL)
210
    {
211
      tmpChkPtr->draw(lcd, false);
212
      tmpChkPtr = tmpChkPtr->next;
213
    }
214
  }
215
  
216
  //check buttons
217
  tp->service();
218
  
219
  uint8_t currPress = tp->getPressure();
220
  
221
  if(currPress > MIN_PRESSURE)
222
  {
223
    //check buttons
224
    Button * btn = buttonFromPos(tp->getX(), tp->getY());
225
    if(lastBtnPressed != btn && lastBtnPressed != NULL)
226
    {
227
      lastBtnPressed->draw(lcd, false);
228
      if(lastBtnPressed == buttonFromPos(tp->getX(), tp->getY()))
229
        buttonReleased(lastBtnPressed);
230
      lastBtnPressed = NULL;
231
    }
232
    if(btn != NULL && btn != lastBtnPressed)
233
    {
234
      btn->draw(lcd, true);
235
      lastBtnPressed = btn;
236
      buttonPressed(btn);
237
    }
238
    
239
    //check textboxes
240
    TextBox * txt = textboxFromPos(tp->getX(), tp->getY());
241
    if(lastTxtPressed != txt && lastTxtPressed != NULL)
242
    {
243
      lastTxtPressed->draw(lcd, false);
244
      lastTxtPressed = NULL;
245
    }
246
    if(txt != NULL && txt != lastTxtPressed)
247
    {
248
      txt->draw(lcd, true);
249
      lastTxtPressed = txt;
250
    }
251
    
252
    //check sliders
253
    Slider * sld = sliderFromPos(tp->getX(), tp->getY());
254
    if(sld != NULL)
255
    {
256
      float oldVal = sld->value;
257
      sld->value = (float)(tp->getX()-sld->x)/sld->width*1024;
258
      if(oldVal != sld->value)
259
        sliderValueChanged(sld);
260
    }
261
    if(lastSldPressed != sld && lastSldPressed != NULL)
262
    {
263
      lastSldPressed->draw(lcd, false);
264
      lastSldPressed = NULL;
265
    }
266
    if(sld != NULL && sld != lastSldPressed)
267
    {
268
      sld->draw(lcd, true);
269
      lastSldPressed = sld;
270
    }
271
    if(sld != NULL && sld == lastSldPressed)
272
      sld->draw(lcd, true);
273
    
274
    //check checkboxes
275
    CheckBox * chk = checkboxFromPos(tp->getX(), tp->getY());
276
    if(lastChkPressed != chk && lastChkPressed != NULL)
277
    {
278
      lastChkPressed->draw(lcd, false);
279
      lastChkPressed = NULL;
280
    }
281
    if(chk != NULL && chk != lastChkPressed)
282
    {
283
      chk->isActive = !chk->isActive;
284
      chk->draw(lcd, true);
285
      lastChkPressed = chk;
286
    }
287
    
288
  }
289
  else
290
  {
291
    //deselect selected buttons
292
    if(lastBtnPressed != NULL)
293
    {
294
      buttonReleased(lastBtnPressed);
295
      lastBtnPressed->draw(lcd, false);
296
      lastBtnPressed = NULL;
297
    }
298
    //deselect selected sliders
299
    if(lastSldPressed != NULL)
300
    {
301
      lastSldPressed->draw(lcd, false);
302
      lastSldPressed = NULL;
303
    }
304
    
305
    if(lastChkPressed != NULL)
306
    {
307
      lastChkPressed->draw(lcd, false);
308
      lastChkPressed = NULL;
309
    }
310
  }
311
}
312
313
void Gui::service()
314
{
315
  service(false);
316
}
317
318
void Gui::refresh()
319
{
320
  service(true);
321
}
322
323
void Gui::deleteButton(Button * _button)
324
{
325
  if (_button != NULL)
326
  {
327
    lcd->fillRect(_button->x, _button->y, _button->x + _button->width, _button->y + _button->height, COLOR_BG);
328
    
329
    Button * btn  = btnPtr;
330
    Button * prev = NULL;
331
    while (btn != NULL)
332
    {
333
      if (btn == _button)
334
      {
335
        if (prev == NULL)
336
          btnPtr = btn->next;
337
        else
338
          prev->next = btn->next;
339
        
340
        if (btn->text != NULL)
341
          free(btn->text);
342
        
343
        free(btn);
344
        return;
345
      }
346
      prev = btn;
347
      btn  = btn->next;
348
    }
349
  }
350
}
351
352
void Gui::deleteTextbox(TextBox * txt)
353
{
354
  if (txt != NULL)
355
  {
356
    lcd->fillRect(txt->x, txt->y, txt->x + txt->width, txt->y + FONT_HEIGHT+4, COLOR_BG);
357
    
358
    TextBox * tmpTxtPtr  = txtPtr;
359
    TextBox * prev = NULL;
360
    while (tmpTxtPtr != NULL)
361
    {
362
      if (tmpTxtPtr == txt)
363
      {
364
        if (prev == NULL)
365
          txtPtr = tmpTxtPtr->next;
366
        else
367
          prev->next = tmpTxtPtr->next;
368
        
369
        if (tmpTxtPtr->text != NULL)
370
          free(tmpTxtPtr->text);
371
        if(tmpTxtPtr->defaultText != NULL)
372
          free(tmpTxtPtr->defaultText);
373
        
374
        free(tmpTxtPtr);
375
        return;
376
      }
377
      prev = tmpTxtPtr;
378
      tmpTxtPtr  = tmpTxtPtr->next;
379
    }
380
  }
381
}
382
383
void Gui::deleteSlider(Slider * sld)
384
{
385
  if (sld != NULL)
386
  {
387
    lcd->fillRect(sld->x, sld->y, sld->x + sld->width, sld->y + sld->height, COLOR_BG);
388
    
389
    Slider * tmpSldPtr  = sldPtr;
390
    Slider * prev = NULL;
391
    while (tmpSldPtr != NULL)
392
    {
393
      if (tmpSldPtr == sld)
394
      {
395
        if (prev == NULL)
396
          sldPtr = tmpSldPtr->next;
397
        else
398
          prev->next = tmpSldPtr->next;
399
400
        free(tmpSldPtr);
401
        return;
402
      }
403
      prev = tmpSldPtr;
404
      tmpSldPtr  = tmpSldPtr->next;
405
    }
406
  }
407
}
408
409
void Gui::deleteStatusbar()
410
{
411
  if(statBarPtr != NULL)
412
  {
413
    lcd->fillRect(0,0,lcd->getWidth(),statBarPtr->size*FONT_HEIGHT+4,COLOR_BG);
414
    free(statBarPtr->text);
415
    free(statBarPtr);
416
    statBarPtr = NULL;
417
  }
418
}
419
420
void Gui::deleteCheckbox(CheckBox * chk)
421
{
422
  if (chk != NULL)
423
  {
424
    lcd->fillRect(chk->x, chk->y, chk->x + strlen(chk->text)*FONT_WIDTH+FONT_HEIGHT+10, chk->y + FONT_HEIGHT+4, COLOR_BG);
425
    
426
    CheckBox * tmpChkPtr  = chkPtr;
427
    CheckBox * prev = NULL;
428
    while (tmpChkPtr != NULL)
429
    {
430
      if (tmpChkPtr == chk)
431
      {
432
        if (prev == NULL)
433
          chkPtr = tmpChkPtr->next;
434
        else
435
          prev->next = tmpChkPtr->next;
436
        
437
        if (tmpChkPtr->text != NULL)
438
          free(tmpChkPtr->text);
439
        
440
        free(tmpChkPtr);
441
        return;
442
      }
443
      prev = tmpChkPtr;
444
      tmpChkPtr  = tmpChkPtr->next;
445
    }
446
  }
447
}
448
449
Button * Gui::buttonFromId(uint8_t _id)
450
{
451
  Button * btn = btnPtr;
452
  
453
  while (btn != NULL)
454
  {
455
    if (btn->id == _id)
456
        return btn;
457
    btn = (Button*)btn->next;
458
  }
459
  return NULL;
460
}
461
462
TextBox * Gui::textboxFromId(uint8_t _id)
463
{
464
  TextBox * txt = txtPtr;
465
  
466
  while (txt != NULL)
467
  {
468
    if (txt->id == _id)
469
        return txt;
470
    txt = (TextBox*)txt->next;
471
  }
472
  return NULL;
473
}
474
475
Slider * Gui::sliderFromId(uint8_t _id)
476
{
477
  Slider * sld = sldPtr;
478
  
479
  while (sld != NULL)
480
  {
481
    if (sld->id == _id)
482
        return sld;
483
    sld = (Slider*)sld->next;
484
  }
485
  return NULL;
486
}
487
488
CheckBox * Gui::checkboxFromId(uint8_t _id)
489
{
490
  CheckBox * chk = chkPtr;
491
  
492
  while (chk != NULL)
493
  {
494
    if (chk->id == _id)
495
        return chk;
496
    chk = (CheckBox*)chk->next;
497
  }
498
  return NULL;
499
}
500
501
Button * Gui::buttonFromPos(uint16_t _x, uint16_t _y)
502
{
503
  Button * btn = (Button*)btnPtr;
504
  while (btn != NULL)
505
  {
506
    if ((_x >= btn->x) && (_x < btn->x + btn->width) &&
507
        (_y >= btn->y)  && (_y < btn->y  + btn->height))
508
    {
509
      return btn;
510
    }
511
    btn = (Button*)btn->next;
512
  }
513
  return NULL;
514
}
515
516
TextBox * Gui::textboxFromPos(uint16_t _x, uint16_t _y)
517
{
518
  TextBox * txt = (TextBox*)txtPtr;
519
  while (txt != NULL)
520
  {
521
    uint16_t height = FONT_HEIGHT*txt->size+4;
522
    if ((_x >= txt->x) && (_x < txt->x + txt->width) &&
523
        (_y >= txt->y)  && (_y < txt->y  + height))
524
    {
525
      return txt;
526
    }
527
    txt = (TextBox*)txt->next;
528
  }
529
  return NULL;
530
}
531
532
Slider * Gui::sliderFromPos(uint16_t _x, uint16_t _y)
533
{
534
  Slider * sld = sldPtr;
535
  while (sld != NULL)
536
  {
537
    if ((_x >= sld->x) && (_x < sld->x + sld->width) &&
538
        (_y >= sld->y)  && (_y < sld->y  + sld->height))
539
    {
540
      return sld;
541
    }
542
    sld = sld->next;
543
  }
544
  return NULL;
545
}
546
547
CheckBox * Gui::checkboxFromPos(uint16_t _x, uint16_t _y)
548
{
549
  CheckBox * chk = chkPtr;
550
  while (chk != NULL)
551
  {
552
    if ((_x >= chk->x) && (_x < chk->x + strlen(chk->text)*FONT_WIDTH+FONT_HEIGHT+10) &&
553
        (_y >= chk->y)  && (_y < chk->y  + FONT_HEIGHT+2))
554
    {
555
      return chk;
556
    }
557
    chk = chk->next;
558
  }
559
  return NULL;
560
}
561
562
563
/*
564
--------------------------------------------
565
BUTTON
566
--------------------------------------------
567
*/
568
569
void Button::draw(lcdPtr lcd, bool isDown)
570
{
571
  uint16_t clr = (isDown) ? COLOR_BUTTON_PRESSED : COLOR_BUTTON;
572
  uint16_t clrUpLine = (isDown) ? COLOR_BUTTON_PRESSED_UPPERLINE : COLOR_BUTTON_UPPERLINE;
573
  uint16_t clrLwLine = (isDown) ? COLOR_BUTTON_PRESSED_LOWERLINE : COLOR_BUTTON_LOWERLINE;
574
  lcd->fillRect(x, y+1, x + width, y + height-1, clr);
575
  lcd->drawLine(x+1,y,x+width-1,y,clrUpLine);
576
  lcd->drawLine(x+1,y+height,x+width-1,y+height,clrLwLine);
577
  lcd->drawText(x + (width-strlen(text)*FONT_WIDTH*size)/2, y + (height-FONT_HEIGHT*size)/2, text, size, COLOR_BUTTON_TEXT, clr);
578
}
579
580
/*
581
--------------------------------------------
582
TEXTBOX
583
--------------------------------------------
584
*/
585
586
void TextBox::draw(lcdPtr lcd, bool isDown)
587
{
588
  uint16_t clr = (isDown) ? COLOR_TEXTBOX_PRESSED : COLOR_TEXTBOX;
589
  uint8_t height = FONT_HEIGHT*size+4;
590
  
591
  lcd->drawLine(x,y+height-3,x,y+height,clr);
592
  lcd->drawLine(x+width,y+height-3,x+width,y+height,clr);
593
  lcd->drawLine(x,y+height-1,x+width,y+height-1,clr);
594
  if(isDown)
595
    lcd->drawLine(x,y+height,x+width,y+height,clr);
596
  else
597
    lcd->drawLine(x,y+height,x+width,y+height,COLOR_BG);
598
  
599
  char * content = (text == NULL) ? defaultText : text;
600
  
601
  char * tmpTxt = "";
602
  for(int i=0; i<width/(FONT_WIDTH*size); i++)
603
    strcat(tmpTxt, " ");
604
  
605
  content = (isDown) ? tmpTxt : content;
606
  
607
  uint16_t clrTxt = (text == NULL) ? COLOR_TEXTBOX_TEXT_DEFAULT : COLOR_TEXTBOX_TEXT;
608
  
609
  if(strlen(content)*FONT_WIDTH*size < width)
610
    lcd->drawText(x+4, y+2, content, size, clrTxt, COLOR_BG);
611
  else
612
  {
613
    uint8_t i = 0;
614
    while(i*FONT_WIDTH*size < width - 4*FONT_WIDTH*size)
615
    {
616
      lcd->drawChar(x+4+i*FONT_WIDTH,y+2,content[i++],size,clrTxt,COLOR_BG);
617
    }
618
    lcd->drawText(x+4+i*FONT_WIDTH,y+2,"...",size,clrTxt,COLOR_BG);
619
  }
620
}
621
622
void TextBox::changeText(lcdPtr lcd, char * T)
623
{
624
  if(T != NULL)
625
  {
626
    if(strlen(T) == 0)
627
      text = NULL;
628
    else
629
    {
630
      free(text);
631
      text = (char*)malloc(strlen(T)+1);
632
      if(text != NULL)
633
        strcpy(text, T);
634
    }
635
    draw(lcd, false);
636
  }
637
}
638
639
void TextBox::addText(lcdPtr lcd, char * T)
640
{
641
  if(strlen(T) != NULL)
642
  {
643
    if(text != NULL)
644
    {
645
      char * tmpTxt = (char*)malloc(strlen(text)+strlen(T)+1);
646
      if(tmpTxt != NULL)
647
      {
648
        strcpy(tmpTxt, text);
649
        strcat(tmpTxt, T);
650
        free(text);
651
        text = tmpTxt;
652
        draw(lcd, false);
653
      }
654
    }
655
  }
656
}
657
/*
658
--------------------------------------------
659
SLIDER
660
--------------------------------------------
661
*/
662
663
void Slider::draw(lcdPtr lcd, bool isDown)
664
{
665
  if(value>1023)
666
    value = 1023;
667
  if(value<0)
668
    value = 0;
669
  
670
  float valToX = (float)value/1024*width;
671
  
672
  lcd->fillRect(x,y+(height-2)/2,x+valToX,y+height/2,COLOR_SLIDER_VALUE);
673
  lcd->fillRect(x+valToX,y+(height-2)/2,x+width,y+height/2,COLOR_SLIDER);
674
  
675
  lcd->fillRect(x-10,y,x+width+10,y+(height-2)/2-1,COLOR_BG);
676
  lcd->fillRect(x-10,y+height/2+1,x+width+10,y+height,COLOR_BG);
677
  lcd->fillRect(x-10,y,x-1,y+height,COLOR_BG);
678
  lcd->fillRect(x+width+1,y,x+width+10,y+height,COLOR_BG);
679
  
680
  lcd->fillCircle(x+valToX,y+height/2,height/2,COLOR_SLIDER_CIRCLE);
681
  lcd->fillCircle(x+valToX,y+height/2,2,COLOR_SLIDER_VALUE);
682
  lcd->drawCircle(x+valToX,y+height/2,height/2,COLOR_SLIDER_VALUE);
683
}
684
685
/*
686
--------------------------------------------
687
STATUSBAR
688
--------------------------------------------
689
*/
690
691
void StatusBar::draw(lcdPtr lcd)
692
{
693
  lcd->fillRect(0,0,lcd->getWidth(), size*FONT_HEIGHT+4,COLOR_STATUSBAR);
694
  lcd->drawText(2,2,text,size,COLOR_STATUSBAR_TEXT,COLOR_STATUSBAR);
695
}
696
697
/*
698
--------------------------------------------
699
CHECKBOX
700
--------------------------------------------
701
*/
702
703
void CheckBox::draw(lcdPtr lcd, bool isDown)
704
{
705
  uint16_t clr = (isDown) ? COLOR_CHECK_PRESSED : COLOR_CHECK ;
706
  if(!isActive && !isDown)
707
  {
708
    lcd->fillRect(x,y,x+FONT_HEIGHT,y+FONT_HEIGHT,clr);
709
    lcd->fillRect(x+1,y+1,x+FONT_HEIGHT-1,y+FONT_HEIGHT-1,COLOR_BG);
710
    lcd->fillRect(x+FONT_HEIGHT,y,x+FONT_HEIGHT+2,y+FONT_HEIGHT,COLOR_BG);
711
  }
712
  lcd->drawRect(x,y,x+FONT_HEIGHT,y+FONT_HEIGHT,clr);
713
  lcd->drawText(x+FONT_HEIGHT+8,y+1,text,1,COLOR_CHECK_TEXT,COLOR_BG);
714
  
715
  if(isActive)
716
  {   
717
    //line 1 (upper)
718
    lcd->drawLine(x+2,y+6,x+6,y+10,COLOR_CHECK_PRESSED);
719
    lcd->drawLine(x+7,y+10,x+FONT_HEIGHT+2,y+3,COLOR_CHECK_PRESSED);
720
    //line 2 (middle)
721
    lcd->drawLine(x+2,y+5,x+6,y+9,COLOR_CHECK_PRESSED);
722
    lcd->drawLine(x+7,y+9,x+FONT_HEIGHT+2,y+2,COLOR_CHECK_PRESSED);
723
    //line 3 (middle)
724-
}
724+
725
    lcd->drawLine(x+7,y+8,x+FONT_HEIGHT+1,y+2,COLOR_CHECK_PRESSED);
726
    //line 4 (lower)
727
    lcd->drawLine(x+3,y+4,x+6,y+7,COLOR_CHECK_PRESSED);
728
    lcd->drawLine(x+7,y+7,x+FONT_HEIGHT+1,y+1,COLOR_CHECK_PRESSED);
729
  }
730
}
731
#endif