Wrapper classes for the emwin library

Dependents:   app_emwin1 app_emwin2_pos lpc4088_ebb_gui_emwin

Revision:
0:316c181e9b65
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/EwCheckBox.cpp	Mon Dec 16 07:03:22 2013 +0000
@@ -0,0 +1,170 @@
+#include "mbed.h"
+
+#include "EwCheckBox.h"
+
+
+EwCheckBox::EwCheckBox(EwWindow* parent) : EwWindow(parent) {
+    init(0, 0, 0, 0, parent);
+}
+
+EwCheckBox::EwCheckBox(int x, int y, int width, int height, EwWindow* parent) :
+	        EwWindow(x, y, width, height, parent) {
+
+    init(x, y, width, height, parent);
+}
+
+
+ewCheckBoxState_t EwCheckBox::getState() {
+    return (ewCheckBoxState_t)CHECKBOX_GetState(_hWnd);
+}
+
+void EwCheckBox::setState(ewCheckBoxState_t state) {
+    ewCheckBoxState_t prev = getState();
+    CHECKBOX_SetState(_hWnd, state);
+
+    if (state != prev) {
+        handleStateChanged();
+    }
+}
+
+void EwCheckBox::setTristate(bool on) {
+    _isTristate = on;
+    if (on) {
+        CHECKBOX_SetNumStates(_hWnd, 3);
+    }
+    else {
+        CHECKBOX_SetNumStates(_hWnd, 2);
+    }
+}
+
+bool EwCheckBox::isTristate() {
+    return _isTristate;
+}
+
+void EwCheckBox::setText(const char* text) {
+    CHECKBOX_SetText(_hWnd, text);
+}
+
+void EwCheckBox::getText(char* pBuf, int bufSz) {
+    CHECKBOX_GetText(_hWnd, pBuf, bufSz);
+}
+
+void EwCheckBox::setBackgroundColor(ewColor_t c) {
+    CHECKBOX_SetBkColor(_hWnd, c);
+}
+
+void EwCheckBox::setBoxBackgroundColor(ewColor_t c, ewCheckBoxColorIndex_t idx) {
+    CHECKBOX_SetBoxBkColor(_hWnd, c, idx);
+}
+
+void EwCheckBox::setFont(const ewFont_t* pFont) {
+    CHECKBOX_SetFont(_hWnd, pFont);
+}
+
+void EwCheckBox::setTextAlign(ewTextAlign_t align) {
+    CHECKBOX_SetTextAlign(_hWnd, align);
+}
+
+void EwCheckBox::setTextColor(ewColor_t c) {
+    CHECKBOX_SetTextColor(_hWnd, c);
+}
+
+void EwCheckBox::setFocusColor(ewColor_t c) {
+    CHECKBOX_SetFocusColor(_hWnd, c);
+}
+
+void EwCheckBox::setImage(ewBitmap_t* pBitmap, ewCheckBoxBitmapIndex_t idx) {
+    CHECKBOX_SetImage(_hWnd, pBitmap, idx);
+}
+
+void EwCheckBox::setSpacing(int32_t spacing) {
+    CHECKBOX_SetSpacing(_hWnd, spacing);
+}
+
+void EwCheckBox::setChangedListener(void (*fptr)(EwWindow* w)) {
+    _changedListener.attach(fptr);
+}
+
+ewColor_t EwCheckBox::getDefaultBackgroundColor() {
+    return CHECKBOX_GetDefaultBkColor();
+}
+
+void EwCheckBox::setDefaultBackgroundColor(ewColor_t c) {
+    CHECKBOX_SetDefaultBkColor(c);
+}
+
+const ewFont_t* EwCheckBox::getDefaultFont() {
+    return CHECKBOX_GetDefaultFont();
+}
+
+void EwCheckBox::setDefaultFont(const ewFont_t* pFont) {
+    CHECKBOX_SetDefaultFont(pFont);
+}
+
+ewColor_t EwCheckBox::getDefaultTextColor() {
+    return CHECKBOX_GetDefaultTextColor();
+}
+
+void EwCheckBox::setDefaultTextColor(ewColor_t c) {
+    CHECKBOX_SetDefaultTextColor(c);
+}
+
+void EwCheckBox::setDefaultFocusColor(ewColor_t c) {
+    CHECKBOX_SetDefaultFocusColor(c);
+}
+
+int32_t EwCheckBox::getDefaultSpacing() {
+    return CHECKBOX_GetDefaultSpacing();
+}
+
+void EwCheckBox::setDefaultSpacing(int32_t spacing) {
+    CHECKBOX_SetDefaultSpacing(spacing);
+}
+
+void EwCheckBox::setDefaultImage(ewBitmap_t* pBitmap, ewCheckBoxBitmapIndex_t idx) {
+    CHECKBOX_SetDefaultImage(pBitmap, idx);
+}
+
+
+void EwCheckBox::init(int x, int y, int width, int height, EwWindow* parent) {
+    CHECKBOX_Handle h;
+    GUI_HWIN hWin = 0;
+
+    _isTristate = false;
+
+    if (parent) {
+        hWin = _getHandle(parent);
+    }
+
+    h = CHECKBOX_CreateEx(x, y, width, height, hWin, (WM_CF_SHOW| WM_CF_MEMDEV),
+            0, _guiWidgetId++);
+    _setNewHandle(h, _callback);
+}
+
+void EwCheckBox::handleStateChanged() {
+    _changedListener.call(this);
+}
+
+void EwCheckBox::_callback(WM_MESSAGE* pMsg, EwWindow* w) {
+    ewCheckBoxState_t prevState;
+
+    EwCheckBox* b = (EwCheckBox*)w;
+
+    // get state before message has been processed
+    if (pMsg->MsgId == WM_TOUCH) {
+        prevState =  b->getState();
+    }
+
+    CHECKBOX_Callback(pMsg);
+
+    // check if the state has changed after processing the message
+    if (pMsg->MsgId == WM_TOUCH) {
+        if (b->getState() != prevState) {
+            b->handleStateChanged();
+        }
+    }
+
+
+
+}
+