Wrapper classes for the emwin library
Dependents: app_emwin1 app_emwin2_pos lpc4088_ebb_gui_emwin
Diff: EwButton.h
- Revision:
- 0:316c181e9b65
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EwButton.h Mon Dec 16 07:03:22 2013 +0000 @@ -0,0 +1,149 @@ + +#ifndef EWBUTTON_H +#define EWBUTTON_H + +#include "EwPainter.h" +#include "EwWindow.h" +#include "EwFunctionPointer.h" + +#include "BUTTON.h" + +enum ewButtonColorIndex_t { + ButtonColorIndexDisabled = BUTTON_CI_DISABLED, + ButtonColorIndexPressed = BUTTON_CI_PRESSED, + ButtonColorIndexUnpressed = BUTTON_CI_UNPRESSED, +}; + +/** + * This is a wrapper class for the emwin BUTTON interface. + */ +class EwButton : public EwWindow { +public: + + EwButton(EwWindow* parent = 0); + EwButton(int x, int y, int width, int height, EwWindow* parent = 0); + + + void setText(const char* text); + void getText(char* pBuf, int bufSz); + + ewColor_t getBackgroundColor(ewButtonColorIndex_t idx); + void setBackgroundColor(ewButtonColorIndex_t idx, ewColor_t c); + const ewFont_t* getFont(); + void setFont(const ewFont_t* pFont); + + ewTextAlign_t getTextAlign(); + void setTextAlign(ewTextAlign_t align); + ewColor_t getTextColor(ewButtonColorIndex_t idx); + void setTextColor(ewButtonColorIndex_t idx, ewColor_t c); + + void setFocusColor(ewColor_t c); + void setFocussable(bool focussable); + void setPressed(bool pressed); + bool isPressed(); + + void setTextOffset(int32_t xPos, int32_t yPos); + + const ewBitmap_t* getBitmap(ewButtonColorIndex_t idx); + void setBitmap(ewButtonColorIndex_t idx, const ewBitmap_t* pBitmap); + void setBitmap(ewButtonColorIndex_t idx, const ewBitmap_t* pBitmap, int32_t x, int32_t y); + + /** + * Register a member function that will called when the button + * is pressed. + * + * @param tptr pointer to the object to call the member function on + * @param mptr pointer to the member function to be called + */ + template<typename T> + void setPressedListener(T* tptr, void (T::*mptr)(EwWindow* w)) { + if((mptr != NULL) && (tptr != NULL)) { + _pressedListener.attach(tptr, mptr); + } + } + + /** + * Register a function that will called when the button + * is pressed. + * + * @param fptr A pointer to a void function that will be called + * when the button is pressed + */ + void setPressedListener(void (*fptr)(EwWindow* w)); + + /** + * Register a member function that will called when the button + * is released. + * + * @param tptr pointer to the object to call the member function on + * @param mptr pointer to the member function to be called + */ + template<typename T> + void setReleasedListener(T* tptr, void (T::*mptr)(EwWindow* w)) { + if((mptr != NULL) && (tptr != NULL)) { + _releasedListener.attach(tptr, mptr); + } + } + + /** + * Register a function that will called when the button + * is released. + * + * @param fptr A pointer to a void function that will be called + * when the button is released + */ + void setReleasedListener(void (*fptr)(EwWindow* w)); + + /** + * Register a member function that will called when the button + * is clicked. + * + * @param tptr pointer to the object to call the member function on + * @param mptr pointer to the member function to be called + */ + template<typename T> + void setClickedListener(T* tptr, void (T::*mptr)(EwWindow* w)) { + if((mptr != NULL) && (tptr != NULL)) { + _clickedListener.attach(tptr, mptr); + } + } + + /** + * Register a function that will called when the button + * is clicked. + * + * @param fptr A pointer to a void function that will be called + * when the button is clicked + */ + void setClickedListener(void (*fptr)(EwWindow* w)); + + static ewColor_t getDefaultBackgroundColor(ewButtonColorIndex_t idx); + static void setDefaultBackgroundColor(ewButtonColorIndex_t idx, ewColor_t c); + static const ewFont_t* getDefaultFont(); + static void setDefaultFont(const ewFont_t* pFont); + static ewTextAlign_t getDefaultTextAlign(); + static void setDefaultTextAlign(ewTextAlign_t align); + static ewColor_t getDefaultTextColor(ewButtonColorIndex_t idx); + static void setDefaultTextColor(ewButtonColorIndex_t idx, ewColor_t c); + + static void setDefaultFocusColor(ewColor_t c); + + + + +private: + + bool _inputStatePressed; + EwFunctionPointer _pressedListener; + EwFunctionPointer _releasedListener; + EwFunctionPointer _clickedListener; + + void init(int x, int y, int width, int height, EwWindow* parent); + void handleInput(bool pressed, bool onWidget); + + static void _callback(WM_MESSAGE* pMsg, EwWindow* w); + + +}; + +#endif