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

Dependencies:   Array_Matrix BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG

Dependents:   F746_AudioOutQSPI F746_AudioPlayerSD DISCO-F746NG_test001 F746_SD_WavPlayer ... more

GuiBase.hpp

Committer:
MikamiUitOpen
Date:
2017-03-15
Revision:
30:835a6b1c0fad
Parent:
28:e2b7ea78b7a0
Child:
31:d7f9f667fa68

File content as of revision 30:835a6b1c0fad:

//-----------------------------------------------------------
//  GuiBase class (abstract base class) ---- Header
//      
//  2017/03/15, Copyright (c) 2017 MIKAMI, Naoki
//-----------------------------------------------------------

#ifndef F746_GUI_BASE_HPP
#define F746_GUI_BASE_HPP

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

namespace Mikami
{
    class GuiBase
    {
    public:                    
        static LCD_DISCO_F746NG* GetLcdPtr() { return &lcd_; }
        static LCD_DISCO_F746NG& GetLcd() { return lcd_; }
        static TS_DISCO_F746NG* GetTsPtr() { return &ts_; }
        static TS_DISCO_F746NG& GetTs() { return ts_; }

        // If panel touched, return true
        static bool PanelTouched();
        // Get touch panel state
        static TS_StateTypeDef GetTsState() { return state_; }

        enum { ENUM_TEXT = 0xFFFFFFFF, ENUM_BACK = 0xFF003538,
               ENUM_CREATED = 0xFF0068B7, ENUM_TOUCHED = 0xFF7F7FFF,
               ENUM_INACTIVE = 0xD0003538, ENUM_INACTIVE_TEXT = 0xFF808080};

    protected:
        static LCD_DISCO_F746NG lcd_;  // for LCD display
        static TS_DISCO_F746NG ts_;    // for touch pannel

        static TS_StateTypeDef state_;
        static bool multiTouch_;

        const uint16_t X_, Y_;
        sFONT *const FONTS_;

        const uint32_t TEXT_COLOR_;
        const uint32_t BACK_COLOR_;
        const uint32_t CREATED_COLOR_;
        const uint32_t TOUCHED_COLOR_;
        const uint32_t INACTIVE_COLOR_;
        const uint32_t INACTIVE_TEXT_COLOR_;

        // Constructor
        GuiBase(uint16_t x =0, uint16_t y =0,
                sFONT &fonts = Font12,
                uint32_t textColor         = ENUM_TEXT,
                uint32_t backColor         = ENUM_BACK,
                uint32_t createdColor      = ENUM_CREATED,
                uint32_t touchedColor      = ENUM_TOUCHED,
                uint32_t inactiveColor     = ENUM_INACTIVE,
                uint32_t inactiveTextColor = ENUM_INACTIVE_TEXT);

        void DrawString(uint16_t x, uint16_t y, const string str)
        { lcd_.DisplayStringAt(x, y, (uint8_t *)str.c_str(), LEFT_MODE); }

    private:
        static bool first_;
        
        // disallow copy constructor and assignment operator
        GuiBase(const GuiBase&);
        GuiBase& operator=(const GuiBase&);
    };
}
#endif  // F746_GUI_BASE_HPP