Class library: Button class and ButtonGroup class for DISCO-F746NG. クラスライブラリ: DISCO-F746NG 用の,Button クラス,ButtonGroup クラス.

Dependents:   F746_SpectralAnalysis_NoPhoto F746_Fourier_series_of_square_wave_01 F746_ButtonGroup_Demo F746_Mandelbrot ... more

Revision:
0:d3038879fed6
Child:
1:57fe493e8db2
--- /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;
+    }
+}