Simple integer calculator using FRDM-KL25Z and Adafruit 2.8" TFT with touch \\ "Dentaku" means "Desktop Calculator" in Japanese \\ On 5-Dec-2015, Support for FRDM-K64F, FRDM-K22F, NUCLEO-F411RE added.

Dependencies:   SPI_STMPE610 UniGraphic mbed vt100

Yet another simple desktop calculator program, only for integer.
As usual I used FRDM-KL25Z, Adafruit 2.8" TFT with touch and UniGraphic library.
Now works with FRDM-K64F, FRDM-K22F, and NUCLEO-F411RE.

整数計算のみの簡単な電卓プログラムです。
例によって、FRDM-KL25Z, Adafruit 2.8" TFT with touch, そして UniGraphic を使用しています。
FRDM-K64F, FRDM-K22F, NUCLEO-F411RE でも動くようになりました。

/media/uploads/Rhyme/img_1194.jpg

TFTMenu.h

Committer:
Rhyme
Date:
2017-04-11
Revision:
4:d4c937bcc469
Parent:
0:659a74b77279

File content as of revision 4:d4c937bcc469:

/** mbed oscilloscope my implementation of a oscillo scope
 * Copyright (c) 2014, 2015 Motoo Tanaka @ Design Methodology Lab
 *
 * TFTMenu.h
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
#ifndef _TFT_MENU_H_
#define _TFT_MENU_H_ defined

typedef void (*FuncPtr)(void) ;

class TFTMenuItem {
public:
TFTMenuItem(int x1, int y1, int x2, int y2, FuncPtr fnc, 
    char *name, uint16_t mc, uint16_t fc,
    int l_margin = 7, int t_margin = 10) ;
~TFTMenuItem() ;
virtual bool hit(int x, int y) ;
virtual void draw(int offset_x = 0, int offset_y = 0) ;
virtual void font_margin(int x, int y) ;
void highlight(int offset_x = 0, int offset_y = 0) ;
uint16_t getColor(void) ;
void doIt(void) ;
const char *name(void) { return label ; }

protected:
char *label ;
uint16_t font_color ;
uint16_t menu_color ;
int top ; 
int bottom ;
int left ;
int right ;
int left_margin ;
int top_margin ;
FuncPtr func ;
private:
} ;

class TFTRadioButton : public TFTMenuItem {
public:
TFTRadioButton(int x1, int y1, int x2, int y2, FuncPtr fnc, 
    char *name, uint16_t mc, uint16_t fc,
    char *altname = 0, uint16_t altmc = 0, uint16_t altfc = 0, 
    bool sel = false) ;
~TFTRadioButton() ;

virtual bool hit(int x, int y) ;
virtual void draw(int offset_x = 0, int offset_y = 0) ;

void select(bool value) ;

protected:
bool selected ;
char *alt_label ;
uint16_t alt_font_color ;
uint16_t alt_menu_color ;
// FuncPtr alt_func ;
private:
} ;

class TFTMenu {
public:
TFTMenu() ; // constructor
~TFTMenu() ; // destructor 
private:
} ;

#endif /* _TFT_MENU_H_ */