Several examples run on only mbed-os5.13.0 (not 5.14.0)

Dependencies:   BD_SD_DISCO_F769NI BSP_DISCO_F769NI LCD_DISCO_F769NI TS_DISCO_F769NI USBHost_F769NI

Committer:
kenjiArai
Date:
Mon Oct 14 08:55:15 2019 +0000
Revision:
4:0f4affc00183
Parent:
3:35ac9ee7d2d6
Several Examples

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 3:35ac9ee7d2d6 1 //-----------------------------------------------------------
kenjiArai 3:35ac9ee7d2d6 2 // Button group class
kenjiArai 3:35ac9ee7d2d6 3 //
kenjiArai 3:35ac9ee7d2d6 4 // 2016/02/22, Copyright (c) 2016 MIKAMI, Naoki
kenjiArai 3:35ac9ee7d2d6 5 //-----------------------------------------------------------
kenjiArai 3:35ac9ee7d2d6 6 // Modified by JH1PJL/K.Arai Apr.26,2018 for DISCO-F469NI
kenjiArai 3:35ac9ee7d2d6 7 // Modified by JH1PJL/K.Arai Jul.25,2019 for DISCO-F769NI
kenjiArai 3:35ac9ee7d2d6 8
kenjiArai 3:35ac9ee7d2d6 9 #include "button_group.hpp"
kenjiArai 3:35ac9ee7d2d6 10
kenjiArai 3:35ac9ee7d2d6 11 namespace Mikami
kenjiArai 3:35ac9ee7d2d6 12 {
kenjiArai 3:35ac9ee7d2d6 13 // Constructor
kenjiArai 3:35ac9ee7d2d6 14 ButtonGroup::ButtonGroup(LCD_DISCO_F769NI &lcd, TS_DISCO_F769NI &ts,
kenjiArai 3:35ac9ee7d2d6 15 uint16_t x0, uint16_t y0,
kenjiArai 3:35ac9ee7d2d6 16 uint16_t width, uint16_t height,
kenjiArai 3:35ac9ee7d2d6 17 uint32_t color, uint32_t backColor,
kenjiArai 3:35ac9ee7d2d6 18 uint16_t number, const string str[],
kenjiArai 3:35ac9ee7d2d6 19 uint16_t spaceX, uint16_t spaceY,
kenjiArai 3:35ac9ee7d2d6 20 uint16_t column,
kenjiArai 3:35ac9ee7d2d6 21 sFONT &fonts, uint32_t textColor)
kenjiArai 3:35ac9ee7d2d6 22 : numberOfButtons_(number), touchedNum_(-1)
kenjiArai 3:35ac9ee7d2d6 23 {
kenjiArai 3:35ac9ee7d2d6 24 buttons_ = new Button *[number];
kenjiArai 3:35ac9ee7d2d6 25 for (int n=0; n<number; n++)
kenjiArai 3:35ac9ee7d2d6 26 {
kenjiArai 3:35ac9ee7d2d6 27 div_t u1 = div(n, column);
kenjiArai 3:35ac9ee7d2d6 28 uint16_t x = x0 + u1.rem*(width + spaceX);
kenjiArai 3:35ac9ee7d2d6 29 uint16_t y = y0 + u1.quot*(height + spaceY);
kenjiArai 3:35ac9ee7d2d6 30 buttons_[n] = new Button(lcd, ts, x, y, width, height,
kenjiArai 3:35ac9ee7d2d6 31 color, backColor,
kenjiArai 3:35ac9ee7d2d6 32 str[n], fonts, textColor);
kenjiArai 3:35ac9ee7d2d6 33 }
kenjiArai 3:35ac9ee7d2d6 34 }
kenjiArai 3:35ac9ee7d2d6 35
kenjiArai 3:35ac9ee7d2d6 36 // Destructor
kenjiArai 3:35ac9ee7d2d6 37 ButtonGroup::~ButtonGroup()
kenjiArai 3:35ac9ee7d2d6 38 {
kenjiArai 3:35ac9ee7d2d6 39 for (int n=0; n<numberOfButtons_; n++) delete buttons_[n];
kenjiArai 3:35ac9ee7d2d6 40 delete[] *buttons_;
kenjiArai 3:35ac9ee7d2d6 41 }
kenjiArai 3:35ac9ee7d2d6 42
kenjiArai 3:35ac9ee7d2d6 43 // Draw button
kenjiArai 3:35ac9ee7d2d6 44 bool ButtonGroup::Draw(int num, uint32_t color, uint32_t textColor)
kenjiArai 3:35ac9ee7d2d6 45 {
kenjiArai 3:35ac9ee7d2d6 46 if (!Range(num)) return false;
kenjiArai 3:35ac9ee7d2d6 47 buttons_[num]->Draw(color, textColor);
kenjiArai 3:35ac9ee7d2d6 48 touchedNum_ = num;
kenjiArai 3:35ac9ee7d2d6 49 return true;
kenjiArai 3:35ac9ee7d2d6 50 }
kenjiArai 3:35ac9ee7d2d6 51
kenjiArai 3:35ac9ee7d2d6 52 // Redraw button with original color
kenjiArai 3:35ac9ee7d2d6 53 bool ButtonGroup::Redraw(int num, uint32_t textColor)
kenjiArai 3:35ac9ee7d2d6 54 {
kenjiArai 3:35ac9ee7d2d6 55 if (!Range(num)) return false;
kenjiArai 3:35ac9ee7d2d6 56 buttons_[num]->Redraw(textColor);
kenjiArai 3:35ac9ee7d2d6 57 return true;
kenjiArai 3:35ac9ee7d2d6 58 }
kenjiArai 3:35ac9ee7d2d6 59
kenjiArai 3:35ac9ee7d2d6 60 // Erase button with selected color
kenjiArai 3:35ac9ee7d2d6 61 bool ButtonGroup::Erase(int num, uint32_t color)
kenjiArai 3:35ac9ee7d2d6 62 {
kenjiArai 3:35ac9ee7d2d6 63 if (!Range(num)) return false;
kenjiArai 3:35ac9ee7d2d6 64 buttons_[num]->Draw(color, color);
kenjiArai 3:35ac9ee7d2d6 65 return true;
kenjiArai 3:35ac9ee7d2d6 66 }
kenjiArai 3:35ac9ee7d2d6 67
kenjiArai 3:35ac9ee7d2d6 68 // Check touch detected for specified button
kenjiArai 3:35ac9ee7d2d6 69 bool ButtonGroup::Touched(int num)
kenjiArai 3:35ac9ee7d2d6 70 {
kenjiArai 3:35ac9ee7d2d6 71 if (!Range(num)) return false;
kenjiArai 3:35ac9ee7d2d6 72 bool touched = buttons_[num]->Touched();
kenjiArai 3:35ac9ee7d2d6 73 if (touched) touchedNum_ = num;
kenjiArai 3:35ac9ee7d2d6 74 return touched;
kenjiArai 3:35ac9ee7d2d6 75 }
kenjiArai 3:35ac9ee7d2d6 76
kenjiArai 3:35ac9ee7d2d6 77 // Check touch detected for specified button and redraw
kenjiArai 3:35ac9ee7d2d6 78 bool ButtonGroup::Touched(int num, uint32_t color,
kenjiArai 3:35ac9ee7d2d6 79 uint32_t textColor)
kenjiArai 3:35ac9ee7d2d6 80 {
kenjiArai 3:35ac9ee7d2d6 81 if (!Range(num)) return false;
kenjiArai 3:35ac9ee7d2d6 82 bool touched = buttons_[num]->Touched(color, textColor);
kenjiArai 3:35ac9ee7d2d6 83 if (touched)
kenjiArai 3:35ac9ee7d2d6 84 {
kenjiArai 3:35ac9ee7d2d6 85 if (Range(touchedNum_) && (num != touchedNum_))
kenjiArai 3:35ac9ee7d2d6 86 buttons_[touchedNum_]->Redraw();
kenjiArai 3:35ac9ee7d2d6 87 touchedNum_ = num;
kenjiArai 3:35ac9ee7d2d6 88 }
kenjiArai 3:35ac9ee7d2d6 89 return touched;
kenjiArai 3:35ac9ee7d2d6 90 }
kenjiArai 3:35ac9ee7d2d6 91
kenjiArai 3:35ac9ee7d2d6 92 // Get touched number
kenjiArai 3:35ac9ee7d2d6 93 bool ButtonGroup::GetTouchedNumber(int &num)
kenjiArai 3:35ac9ee7d2d6 94 {
kenjiArai 3:35ac9ee7d2d6 95 if (buttons_[0]->PanelTouched())
kenjiArai 3:35ac9ee7d2d6 96 {
kenjiArai 3:35ac9ee7d2d6 97 for (int n=0; n<numberOfButtons_; n++)
kenjiArai 3:35ac9ee7d2d6 98 if (buttons_[n]->IsOnButton())
kenjiArai 3:35ac9ee7d2d6 99 {
kenjiArai 3:35ac9ee7d2d6 100 num = n;
kenjiArai 3:35ac9ee7d2d6 101 return true;
kenjiArai 3:35ac9ee7d2d6 102 }
kenjiArai 3:35ac9ee7d2d6 103 return false;
kenjiArai 3:35ac9ee7d2d6 104 }
kenjiArai 3:35ac9ee7d2d6 105 else
kenjiArai 3:35ac9ee7d2d6 106 return false;
kenjiArai 3:35ac9ee7d2d6 107 }
kenjiArai 3:35ac9ee7d2d6 108
kenjiArai 3:35ac9ee7d2d6 109 // Get touched number and redraw button if touched
kenjiArai 3:35ac9ee7d2d6 110 bool ButtonGroup::GetTouchedNumber(int &num, uint32_t color)
kenjiArai 3:35ac9ee7d2d6 111 {
kenjiArai 3:35ac9ee7d2d6 112 if (GetTouchedNumber(num))
kenjiArai 3:35ac9ee7d2d6 113 {
kenjiArai 3:35ac9ee7d2d6 114 buttons_[num]->Draw(color);
kenjiArai 3:35ac9ee7d2d6 115 if (Range(touchedNum_) && (num != touchedNum_))
kenjiArai 3:35ac9ee7d2d6 116 buttons_[touchedNum_]->Redraw();
kenjiArai 3:35ac9ee7d2d6 117 touchedNum_ = num;
kenjiArai 3:35ac9ee7d2d6 118 return true;
kenjiArai 3:35ac9ee7d2d6 119 }
kenjiArai 3:35ac9ee7d2d6 120 else
kenjiArai 3:35ac9ee7d2d6 121 return false;
kenjiArai 3:35ac9ee7d2d6 122 }
kenjiArai 3:35ac9ee7d2d6 123 }