GUI parts for DISCO-F746NG. GuiBase, Button, ButtonGroup, Label, BlinkLabel, NumericLabel, SeekBar, SeekbarGroup

Dependents:   F746_SD_GraphicEqualizer_ren0620

Fork of F746_GUI by 不韋 呂

Revision:
11:7debdaa7b503
Child:
12:687ec6183385
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SeekbarGroup.cpp	Wed Apr 27 07:28:04 2016 +0000
@@ -0,0 +1,80 @@
+//-----------------------------------------------------------
+//  SeekbarGroup class
+//
+//  2016/04/27, Copyright (c) 2016 MIKAMI, Naoki
+//-----------------------------------------------------------
+
+#include "SeekbarGroup.hpp"
+
+namespace Mikami
+{
+    SeekbarGroup::SeekbarGroup(
+            uint16_t x0, uint16_t y0, uint16_t length,
+            uint16_t number, uint16_t space,
+            float min, float max, float initialValue,
+            SeekBar::Orientation hv,
+            uint32_t thumbColor,
+            uint16_t thumbSize, uint16_t width,
+            uint32_t colorL, uint32_t colorH,
+            uint32_t backColor)
+        : GuiBase(x0, y0, Font12, GuiBase::ENUM_TEXT, backColor, thumbColor),
+          numberOfSeekBar_(number)
+    {
+        seekBars_ = new SeekBar *[number];
+        for (int n=0; n<number; n++)
+        {
+            uint16_t x = x0;
+            uint16_t y = y0;
+            if (hv == SeekBar::Holizontal) y += space*n;
+            else                           x += space*n;
+            seekBars_[n] =
+                new SeekBar(x, y, length, min, max, initialValue, hv,
+                            thumbColor, thumbSize, width,
+                            colorL, colorH, backColor);
+        }
+    }
+
+    // Destructor
+    SeekbarGroup::~SeekbarGroup()
+    {
+        for (int n=0; n<numberOfSeekBar_; n++) delete seekBars_[n];
+        delete[] *seekBars_;
+    }
+
+    // Get slided number
+    bool SeekbarGroup::GetSlidedNumber(int &num)
+    {
+        bool active = false;
+        for (int n=0; n<numberOfSeekBar_; n++)
+            if (seekBars_[n]->IsActive()) active = true;
+        if (!active) return false;
+
+        if (!PanelTouched())
+        {
+            for (int n=0; n<numberOfSeekBar_; n++)
+            {
+                if (seekBars_[n]->GetSlided())
+                    seekBars_[n]->Draw(seekBars_[n]->GetValue());
+                seekBars_[n]->SetSlided(false);
+            }
+            return false;
+        }
+
+        bool rtn = false;
+        uint16_t x, y;
+        for (int n=0; n<numberOfSeekBar_; n++)
+        {
+            if (seekBars_[n]->IsOnThumb(x, y))
+            {
+                if ((num != n) && Range(num))
+                    seekBars_[num]->Draw(seekBars_[num]->GetValue());
+                num = n;
+                seekBars_[n]->SetValue(seekBars_[n]->ToValue(SeekBar::Point(x, y)));
+                seekBars_[n]->Draw(seekBars_[n]->GetValue(), true);
+                seekBars_[n]->SetSlided(true);
+                rtn = true;
+            }
+        }
+        return rtn;
+    }
+}