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

Committer:
MikamiUitOpen
Date:
Mon Feb 22 13:39:32 2016 +0000
Revision:
13:af578b53ff0e
Parent:
12:710078d50d9b
14

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:d3038879fed6 1 //-----------------------------------------------------------
MikamiUitOpen 13:af578b53ff0e 2 // Button class handling multi-touch -- Header
MikamiUitOpen 13:af578b53ff0e 3 // Multi-touch: Enabled (default)
MikamiUitOpen 0:d3038879fed6 4 //
MikamiUitOpen 13:af578b53ff0e 5 // 2016/02/22, Copyright (c) 2016 MIKAMI, Naoki
MikamiUitOpen 0:d3038879fed6 6 //-----------------------------------------------------------
MikamiUitOpen 0:d3038879fed6 7
MikamiUitOpen 0:d3038879fed6 8 #ifndef F746_BUTTON_HPP
MikamiUitOpen 0:d3038879fed6 9 #define F746_BUTTON_HPP
MikamiUitOpen 0:d3038879fed6 10
MikamiUitOpen 0:d3038879fed6 11 #include "mbed.h"
MikamiUitOpen 0:d3038879fed6 12 #include <string>
MikamiUitOpen 0:d3038879fed6 13 #include "TS_DISCO_F746NG.h"
MikamiUitOpen 0:d3038879fed6 14 #include "LCD_DISCO_F746NG.h"
MikamiUitOpen 0:d3038879fed6 15
MikamiUitOpen 0:d3038879fed6 16 namespace Mikami
MikamiUitOpen 0:d3038879fed6 17 {
MikamiUitOpen 0:d3038879fed6 18 class Button
MikamiUitOpen 0:d3038879fed6 19 {
MikamiUitOpen 0:d3038879fed6 20 public:
MikamiUitOpen 0:d3038879fed6 21 // Constructor
MikamiUitOpen 0:d3038879fed6 22 Button(LCD_DISCO_F746NG &lcd, TS_DISCO_F746NG &ts,
MikamiUitOpen 0:d3038879fed6 23 uint16_t x, uint16_t y, uint16_t width, uint16_t height,
MikamiUitOpen 0:d3038879fed6 24 uint32_t color, uint32_t backColor,
MikamiUitOpen 3:d99d9c0324b7 25 const string str = "", sFONT &fonts = Font12,
MikamiUitOpen 0:d3038879fed6 26 uint32_t textColor = LCD_COLOR_WHITE)
MikamiUitOpen 0:d3038879fed6 27 : lcd_(lcd), ts_(ts), X_(x), Y_(y), W_(width), H_(height),
MikamiUitOpen 5:2cc388e91bde 28 ORIGINAL_COLOR_(color), BACK_COLOR_(backColor),
MikamiUitOpen 5:2cc388e91bde 29 STR_(str), FONTS_(&fonts), FONT_WIDTH_(fonts.Width),
MikamiUitOpen 5:2cc388e91bde 30 FONT_HEIGHT_(fonts.Height)
MikamiUitOpen 0:d3038879fed6 31 { Draw(color, textColor); }
MikamiUitOpen 0:d3038879fed6 32
MikamiUitOpen 0:d3038879fed6 33 // Draw button
MikamiUitOpen 0:d3038879fed6 34 void Draw(uint32_t color, uint32_t textColor = LCD_COLOR_WHITE);
MikamiUitOpen 10:5ca60e724a76 35
MikamiUitOpen 0:d3038879fed6 36 // Redraw button with original color
MikamiUitOpen 0:d3038879fed6 37 void Redraw(uint32_t textColor = LCD_COLOR_WHITE)
MikamiUitOpen 4:543ec60c2814 38 { Draw(ORIGINAL_COLOR_, textColor); }
MikamiUitOpen 10:5ca60e724a76 39
MikamiUitOpen 13:af578b53ff0e 40 // Erase button
MikamiUitOpen 0:d3038879fed6 41 void Erase()
MikamiUitOpen 0:d3038879fed6 42 { Draw(BACK_COLOR_, BACK_COLOR_); }
MikamiUitOpen 10:5ca60e724a76 43
MikamiUitOpen 0:d3038879fed6 44 // Check touch detected
MikamiUitOpen 0:d3038879fed6 45 bool Touched();
MikamiUitOpen 10:5ca60e724a76 46
MikamiUitOpen 0:d3038879fed6 47 // Check touch detected and redraw button
MikamiUitOpen 0:d3038879fed6 48 bool Touched(uint32_t color, uint32_t textColor = LCD_COLOR_WHITE);
MikamiUitOpen 10:5ca60e724a76 49
MikamiUitOpen 0:d3038879fed6 50 // Get original color
MikamiUitOpen 4:543ec60c2814 51 uint32_t GetOriginalColor() { return ORIGINAL_COLOR_; }
MikamiUitOpen 13:af578b53ff0e 52
MikamiUitOpen 13:af578b53ff0e 53 bool PanelTouched();
MikamiUitOpen 13:af578b53ff0e 54 bool IsOnButton();
MikamiUitOpen 13:af578b53ff0e 55
MikamiUitOpen 13:af578b53ff0e 56 // Get previously got state
MikamiUitOpen 13:af578b53ff0e 57 static TS_StateTypeDef GottenState()
MikamiUitOpen 13:af578b53ff0e 58 { return state_; }
MikamiUitOpen 13:af578b53ff0e 59
MikamiUitOpen 13:af578b53ff0e 60 // Set or reset multi-touch
MikamiUitOpen 13:af578b53ff0e 61 static void SetMultiTouch(bool tf) { multiTouch = tf; }
MikamiUitOpen 4:543ec60c2814 62
MikamiUitOpen 0:d3038879fed6 63 private:
MikamiUitOpen 0:d3038879fed6 64 LCD_DISCO_F746NG &lcd_;
MikamiUitOpen 0:d3038879fed6 65 TS_DISCO_F746NG &ts_;
MikamiUitOpen 13:af578b53ff0e 66
MikamiUitOpen 0:d3038879fed6 67 const uint16_t X_, Y_, W_, H_;
MikamiUitOpen 5:2cc388e91bde 68 const uint32_t ORIGINAL_COLOR_; // original color
MikamiUitOpen 0:d3038879fed6 69 const uint32_t BACK_COLOR_; // back color of screen
MikamiUitOpen 0:d3038879fed6 70 const string STR_;
MikamiUitOpen 0:d3038879fed6 71 sFONT *const FONTS_;
MikamiUitOpen 5:2cc388e91bde 72 const uint16_t FONT_WIDTH_;
MikamiUitOpen 5:2cc388e91bde 73 const uint16_t FONT_HEIGHT_;
MikamiUitOpen 0:d3038879fed6 74
MikamiUitOpen 13:af578b53ff0e 75 static TS_StateTypeDef state_;
MikamiUitOpen 13:af578b53ff0e 76 static bool multiTouch;
MikamiUitOpen 13:af578b53ff0e 77
MikamiUitOpen 0:d3038879fed6 78 // disallow copy constructor and assignment operator
MikamiUitOpen 0:d3038879fed6 79 Button(const Button&);
MikamiUitOpen 0:d3038879fed6 80 Button& operator=(const Button&);
MikamiUitOpen 0:d3038879fed6 81 };
MikamiUitOpen 0:d3038879fed6 82 }
MikamiUitOpen 0:d3038879fed6 83 #endif // F746_BUTTON_HPP