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

button.hpp

Committer:
MikamiUitOpen
Date:
2015-11-23
Revision:
1:57fe493e8db2
Parent:
0:d3038879fed6
Child:
3:d99d9c0324b7

File content as of revision 1:57fe493e8db2:

//-----------------------------------------------------------
//  Button class -- Header
//
//  2015/11/23, Copyright (c) 2015 MIKAMI, Naoki
//-----------------------------------------------------------

#ifndef F746_BUTTON_HPP
#define F746_BUTTON_HPP

#include "mbed.h"
#include <string>
#include "TS_DISCO_F746NG.h"
#include "LCD_DISCO_F746NG.h"

namespace Mikami
{
    class Button
    {
    public:
        // Constructor
        Button(LCD_DISCO_F746NG &lcd, TS_DISCO_F746NG &ts,
               uint16_t x, uint16_t y, uint16_t width, uint16_t height,
               uint32_t color, uint32_t backColor,
               string str = "", sFONT &fonts = Font12,
               uint32_t textColor = LCD_COLOR_WHITE)
              : lcd_(lcd), ts_(ts), X_(x), Y_(y), W_(width), H_(height),
                     COLOR_(color), BACK_COLOR_(backColor),
                     STR_(str), FONTS_(&fonts)
        {   Draw(color, textColor); }

        // Draw button
        void Draw(uint32_t color, uint32_t textColor = LCD_COLOR_WHITE);
        
        // Redraw button with original color
        void Redraw(uint32_t textColor = LCD_COLOR_WHITE)
        {   Draw(COLOR_, textColor);   }
        
        // Erase button with selected color
        void Erase()
        {   Draw(BACK_COLOR_, BACK_COLOR_);   }
        
        // Check touch detected
        bool Touched();
        
        // Check touch detected and redraw button
        bool Touched(uint32_t color, uint32_t textColor = LCD_COLOR_WHITE);
        
        // Get original color 
        uint32_t GetColor() { return COLOR_; }
        
    private:
        LCD_DISCO_F746NG &lcd_;
        TS_DISCO_F746NG &ts_;
        const uint16_t X_, Y_, W_, H_;
        const uint32_t COLOR_;          // original color
        const uint32_t BACK_COLOR_;     // back color of screen
        const string STR_;
        sFONT *const FONTS_;

        // disallow copy constructor and assignment operator
        Button(const Button&);
        Button& operator=(const Button&);
    };
}
#endif  // F746_BUTTON_HPP