GUI parts for DISCO-F746NG. GuiBase, Button, ButtonGroup, ResetButton, Label, BlinkLabel, NumericLabel, SeekBar, SeekbarGroup, NumericUpDown
Dependencies: Array_Matrix TS_DISCO_F746NG LCD_DISCO_F746NG BSP_DISCO_F746NG
SeekBar.hpp@6:b8f197b0012c, 2016-04-12 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Tue Apr 12 04:15:41 2016 +0000
- Revision:
- 6:b8f197b0012c
- Parent:
- 5:9c3ea4d4bc6b
- Child:
- 9:c379410bda15
7
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:a2686ef737c2 | 1 | //----------------------------------------------------------- |
MikamiUitOpen | 0:a2686ef737c2 | 2 | // SeekBar class -- Header |
MikamiUitOpen | 0:a2686ef737c2 | 3 | // |
MikamiUitOpen | 6:b8f197b0012c | 4 | // 2016/04/12, Copyright (c) 2016 MIKAMI, Naoki |
MikamiUitOpen | 0:a2686ef737c2 | 5 | //----------------------------------------------------------- |
MikamiUitOpen | 0:a2686ef737c2 | 6 | |
MikamiUitOpen | 0:a2686ef737c2 | 7 | #ifndef F746_SEEKBAR_HPP |
MikamiUitOpen | 0:a2686ef737c2 | 8 | #define F746_SEEKBAR_HPP |
MikamiUitOpen | 0:a2686ef737c2 | 9 | |
MikamiUitOpen | 0:a2686ef737c2 | 10 | #include "GuiBase.hpp" |
MikamiUitOpen | 6:b8f197b0012c | 11 | #include "Label.hpp" |
MikamiUitOpen | 0:a2686ef737c2 | 12 | |
MikamiUitOpen | 0:a2686ef737c2 | 13 | namespace Mikami |
MikamiUitOpen | 0:a2686ef737c2 | 14 | { |
MikamiUitOpen | 0:a2686ef737c2 | 15 | class SeekBar : public GuiBase |
MikamiUitOpen | 0:a2686ef737c2 | 16 | { |
MikamiUitOpen | 0:a2686ef737c2 | 17 | public: |
MikamiUitOpen | 0:a2686ef737c2 | 18 | enum Orientation { Holizontal, Vertical }; |
MikamiUitOpen | 0:a2686ef737c2 | 19 | |
MikamiUitOpen | 0:a2686ef737c2 | 20 | // Constructor |
MikamiUitOpen | 0:a2686ef737c2 | 21 | SeekBar(uint16_t x, uint16_t y, uint16_t length, |
MikamiUitOpen | 6:b8f197b0012c | 22 | float min, float max, float initialValue, |
MikamiUitOpen | 0:a2686ef737c2 | 23 | Orientation hv = Holizontal, |
MikamiUitOpen | 0:a2686ef737c2 | 24 | uint32_t thumbColor = LCD_COLOR_WHITE, |
MikamiUitOpen | 0:a2686ef737c2 | 25 | uint16_t thumbSize = 30, uint16_t width = 4, |
MikamiUitOpen | 0:a2686ef737c2 | 26 | uint32_t colorL = LCD_COLOR_LIGHTGRAY, |
MikamiUitOpen | 0:a2686ef737c2 | 27 | uint32_t colorH = 0xFFB0B0B0, |
MikamiUitOpen | 0:a2686ef737c2 | 28 | uint32_t backColor = GuiBase::ENUM_BACK) |
MikamiUitOpen | 0:a2686ef737c2 | 29 | : GuiBase(x, y, Font12, 0, backColor, thumbColor), |
MikamiUitOpen | 0:a2686ef737c2 | 30 | L_(length), W_(width), |
MikamiUitOpen | 0:a2686ef737c2 | 31 | SIZE_(thumbSize), COLOR_L_(colorL), COLOR_H_(colorH), |
MikamiUitOpen | 5:9c3ea4d4bc6b | 32 | MIN_(min), MAX_(max), ORIENT_(hv), |
MikamiUitOpen | 6:b8f197b0012c | 33 | labelL(NULL), labelC(NULL), labelR(NULL), |
MikamiUitOpen | 6:b8f197b0012c | 34 | v_(initialValue), active_(true) |
MikamiUitOpen | 6:b8f197b0012c | 35 | { Draw(initialValue); } |
MikamiUitOpen | 6:b8f197b0012c | 36 | |
MikamiUitOpen | 6:b8f197b0012c | 37 | // Constructor with scale value (only horizontal) |
MikamiUitOpen | 6:b8f197b0012c | 38 | SeekBar(uint16_t x, uint16_t y, uint16_t length, |
MikamiUitOpen | 6:b8f197b0012c | 39 | float min, float max, float initialValue, |
MikamiUitOpen | 6:b8f197b0012c | 40 | string left, string center, string right, |
MikamiUitOpen | 6:b8f197b0012c | 41 | uint32_t thumbColor = LCD_COLOR_WHITE, |
MikamiUitOpen | 6:b8f197b0012c | 42 | uint16_t thumbSize = 30, uint16_t width = 4, |
MikamiUitOpen | 6:b8f197b0012c | 43 | uint32_t colorL = LCD_COLOR_LIGHTGRAY, |
MikamiUitOpen | 6:b8f197b0012c | 44 | uint32_t colorH = 0xFFB0B0B0, |
MikamiUitOpen | 6:b8f197b0012c | 45 | uint32_t backColor = GuiBase::ENUM_BACK); |
MikamiUitOpen | 0:a2686ef737c2 | 46 | |
MikamiUitOpen | 0:a2686ef737c2 | 47 | bool Slide(); |
MikamiUitOpen | 0:a2686ef737c2 | 48 | float GetValue() { return v_; } |
MikamiUitOpen | 0:a2686ef737c2 | 49 | int GetIntValue() { return Round(v_); } |
MikamiUitOpen | 5:9c3ea4d4bc6b | 50 | void Activate(); |
MikamiUitOpen | 5:9c3ea4d4bc6b | 51 | void Inactivate(); |
MikamiUitOpen | 0:a2686ef737c2 | 52 | |
MikamiUitOpen | 0:a2686ef737c2 | 53 | private: |
MikamiUitOpen | 0:a2686ef737c2 | 54 | struct Point |
MikamiUitOpen | 0:a2686ef737c2 | 55 | { |
MikamiUitOpen | 0:a2686ef737c2 | 56 | uint16_t x, y; |
MikamiUitOpen | 0:a2686ef737c2 | 57 | Point(uint16_t x0 = 0, uint16_t y0 = 0) : x(x0), y(y0) {} |
MikamiUitOpen | 0:a2686ef737c2 | 58 | }; |
MikamiUitOpen | 0:a2686ef737c2 | 59 | |
MikamiUitOpen | 0:a2686ef737c2 | 60 | const uint16_t L_, W_; |
MikamiUitOpen | 0:a2686ef737c2 | 61 | const uint16_t SIZE_; // Size of thumb |
MikamiUitOpen | 0:a2686ef737c2 | 62 | const uint32_t COLOR_L_, COLOR_H_; |
MikamiUitOpen | 0:a2686ef737c2 | 63 | const float MIN_, MAX_; |
MikamiUitOpen | 0:a2686ef737c2 | 64 | const Orientation ORIENT_; |
MikamiUitOpen | 0:a2686ef737c2 | 65 | |
MikamiUitOpen | 6:b8f197b0012c | 66 | Label *labelL, *labelC, *labelR; |
MikamiUitOpen | 0:a2686ef737c2 | 67 | float v_; // value of seekbar |
MikamiUitOpen | 0:a2686ef737c2 | 68 | bool slided_; |
MikamiUitOpen | 5:9c3ea4d4bc6b | 69 | bool active_; |
MikamiUitOpen | 0:a2686ef737c2 | 70 | |
MikamiUitOpen | 0:a2686ef737c2 | 71 | void Draw(float value, bool fill = false); |
MikamiUitOpen | 0:a2686ef737c2 | 72 | bool IsOnThumb(uint16_t &x, uint16_t &y); |
MikamiUitOpen | 0:a2686ef737c2 | 73 | Point ToPoint(float value); |
MikamiUitOpen | 0:a2686ef737c2 | 74 | float ToValue(Point pt); |
MikamiUitOpen | 0:a2686ef737c2 | 75 | int Round(float x) { return x + 0.5f - (x < 0); } // Round up on 5 |
MikamiUitOpen | 0:a2686ef737c2 | 76 | float Saturate(float value); |
MikamiUitOpen | 0:a2686ef737c2 | 77 | |
MikamiUitOpen | 0:a2686ef737c2 | 78 | // disallow copy constructor and assignment operator |
MikamiUitOpen | 0:a2686ef737c2 | 79 | SeekBar(const SeekBar&); |
MikamiUitOpen | 0:a2686ef737c2 | 80 | SeekBar& operator=(const SeekBar&); |
MikamiUitOpen | 0:a2686ef737c2 | 81 | }; |
MikamiUitOpen | 0:a2686ef737c2 | 82 | } |
MikamiUitOpen | 0:a2686ef737c2 | 83 | #endif // F746_SEEKBAR_HPP |