Same as original
Diff: button_group.cpp
- Revision:
- 0:d3038879fed6
- Child:
- 1:57fe493e8db2
diff -r 000000000000 -r d3038879fed6 button_group.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/button_group.cpp Sun Nov 22 10:07:55 2015 +0000 @@ -0,0 +1,69 @@ +//----------------------------------------------------------- +// Button group class -- Header +// +// 2015/11/22, Copyright (c) 2015 MIKAMI, Naoki +//----------------------------------------------------------- + +#include "button_group.hpp" + +namespace Mikami +{ + // Constructor + ButtonGroup::ButtonGroup(LCD_DISCO_F746NG &lcd, TS_DISCO_F746NG &ts, + uint16_t x0, uint16_t y0, + uint16_t width, uint16_t height, + uint32_t color, uint32_t backColor, + uint16_t number, string str[], + uint16_t spaceX, uint16_t spaceY, + uint16_t column, + sFONT &fonts, uint32_t textColor) + : numberOfButtons_(number) + { + buttons_ = new Button *[number]; + for (int n=0; n<number; n++) + { + div_t u1 = div(n, column); + uint16_t x = x0 + u1.rem*(width + spaceX); + uint16_t y = y0 + u1.quot*(height + spaceY); + buttons_[n] = new Button(lcd, ts, x, y, width, height, + color, backColor, + str[n], fonts, textColor); + } + } + + // Destructor + ButtonGroup::~ButtonGroup() + { + for (int n=0; n<numberOfButtons_; n++) delete buttons_[n]; + delete[] *buttons_; + } + + // Get touched number + bool ButtonGroup::GetTouchedNumber(int &num) + { + for (int n=0; n<numberOfButtons_; n++) + if (buttons_[n]->Touched()) + { + num = n; + return true; + } + return false; + } + + // Get touched number and redraw button if touched + bool ButtonGroup::GetTouchedNumber(int &num, uint32_t color, + uint32_t textColor) + { + if (GetTouchedNumber(num)) + { + for (int n=0; n<numberOfButtons_; n++) + if (n == num) + buttons_[n]->Draw(color, textColor); + else + buttons_[n]->Draw(buttons_[n]->GetColor(), textColor); + return true; + } + else + return false; + } +}