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/EwPainter.h	Mon Dec 16 07:03:22 2013 +0000
@@ -0,0 +1,218 @@
+
+#ifndef EWPAINTER_H
+#define EWPAINTER_H
+
+#include "GUI.h"
+
+typedef GUI_COLOR ewColor_t;
+typedef GUI_POINT ewPoint_t;
+typedef GUI_RECT ewRect_t;
+typedef GUI_FONT ewFont_t;
+typedef GUI_BITMAP ewBitmap_t;
+
+enum ewLineStyle_t {
+    LineStyleSolid = GUI_LS_SOLID,
+    LineStyleDash = GUI_LS_DASH,
+    LineStyleDot = GUI_LS_DOT,
+    LineStyleDashDot = GUI_LS_DASHDOT,
+    LineStyleDashDotDot = GUI_LS_DASHDOTDOT
+};
+
+
+enum ewTextAlign_t {
+    TextAlignTop = GUI_TA_TOP,
+    TextAlignBottom = GUI_TA_BOTTOM,
+    TextAlignVertCenter = GUI_TA_VCENTER,
+    TextAlignLeft = GUI_TA_LEFT,
+    TextAlignRight = GUI_TA_RIGHT,
+    TextAlignHorizCenter = GUI_TA_HCENTER
+};
+
+enum ewRotation_t {
+    Rotation_0 = 0,
+    Rotation_180,
+    Rotation_CCW,
+    Rotation_CW
+};
+
+enum ewWrapMode_t {
+    WrapModeNone = GUI_WRAPMODE_NONE,
+    WrapModeWord = GUI_WRAPMODE_WORD,
+    WrapModeChar = GUI_WRAPMODE_CHAR
+};
+
+enum ewTextMode_t {
+    TextModeNormal = GUI_TEXTMODE_NORMAL,
+    TextModeTransparent = GUI_TEXTMODE_TRANS,
+    TextModeReverse = GUI_TEXTMODE_REV,
+    TextModeXor = GUI_TEXTMODE_XOR
+};
+
+enum ewTextStyle_t {
+    TextStyleNormal = GUI_TS_NORMAL,
+    TextStyleUnderline = GUI_TS_UNDERLINE,
+    TextStyleStrikeThru = GUI_TS_STRIKETHRU,
+    TextStyleOverline = GUI_TS_OVERLINE
+};
+
+#define EW_BLUE 		(GUI_BLUE)
+#define EW_GREEN 		(GUI_GREEN)
+#define EW_RED 			(GUI_RED)
+#define EW_CYAN			(GUI_CYAN)
+#define EW_MAGENTA		(GUI_MAGENTA)
+#define EW_YELLOW		(GUI_YELLOW)
+#define EW_LIGHTBLUE	(GUI_LIGHTBLUE)
+#define EW_LIGHTGREEN	(GUI_LIGHTGREEN)
+#define EW_LIGHTRED		(GUI_LIGHTRED)
+#define EW_LIGHTCYAN	(GUI_LIGHTCYAN)
+#define EW_LIGHTMAGENTA	(GUI_LIGHTMAGENTA)
+#define EW_LIGHTYELLOW	(GUI_LIGHTYELLOW)
+#define EW_DARKBLUE		(GUI_DARKBLUE)
+#define EW_DARKGREEN	(GUI_DARKGREEN)
+#define EW_DARKRED		(GUI_DARKRED)
+#define EW_DARKCYAN		(GUI_DARKCYAN)
+#define EW_DARKMAGENTA	(GUI_DARKMAGENTA)
+#define EW_DARKYELLOW	(GUI_DARKYELLOW)
+#define EW_WHITE		(GUI_WHITE)
+#define EW_LIGHTGRAY	(GUI_LIGHTGRAY)
+#define EW_GRAY			(GUI_GRAY)
+#define EW_DARKGRAY		(GUI_DARKGRAY)
+#define EW_BLACK		(GUI_BLACK)
+#define EW_BROWN		(GUI_BROWN)
+#define EW_ORANGE		(GUI_ORANGE)
+#define EW_TRANSPARENT	(GUI_TRANSPARENT)
+
+#define EW_INVALID_COLOR	(GUI_INVALID_COLOR)
+
+
+/**
+ * This is a wrapper class for the drawing primitives in
+ * the emwin GUI interface.
+ */
+class EwPainter {
+public:
+
+
+
+    EwPainter();
+
+    void enableAlpha(bool on);
+    ewColor_t getBackgroundColor();
+    void setBackgroundColor(ewColor_t c);
+    ewColor_t getColor();
+    void setColor(ewColor_t c);
+
+    uint8_t getPenSize();
+    void setPenSize(uint8_t size);
+
+    void move(int32_t dx, int32_t dy);
+    void moveTo(int32_t x, int32_t y);
+
+    void clear();
+    void clearRect(int32_t x0, int32_t y0, int32_t x1, int32_t y1);
+    void copyRect(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t width, int32_t height);
+
+    void drawHorizGradient(int32_t x0, int32_t y0, int32_t x1, int32_t y1, ewColor_t c0, ewColor_t c1);
+    void drawVertGradient(int32_t x0, int32_t y0, int32_t x1, int32_t y1, ewColor_t c0, ewColor_t c1);
+    void drawHorizRoundGradient(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t radius, ewColor_t c0, ewColor_t c1);
+    void drawVertRoundGradient(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t radius, ewColor_t c0, ewColor_t c1);
+
+    void drawPixel(int32_t x, int32_t y);
+    void drawPoint(int32_t x, int32_t y);
+    void drawRect(int32_t x0, int32_t y0, int32_t x1, int32_t y1);
+    void drawRect(ewRect_t *rect);
+    void drawRoundedFrame(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t radius, int32_t width);
+    void drawRoundedRect(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t radius);
+
+    void fillRect(int32_t x0, int32_t y0, int32_t x1, int32_t y1);
+    void fillRect(ewRect_t *rect);
+    void fillRoundedRect(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t radius);
+
+    void drawLine(int32_t x0, int32_t y0, int32_t x1, int32_t y1);
+    void drawLine(int32_t dx, int32_t dy);
+    void drawLineTo(int32_t x, int32_t y);
+    void drawHorizLine(int32_t y, int32_t x0, int32_t x1);
+    void drawVertLine(int32_t x, int32_t y0, int32_t y1);
+
+    void drawPolyLine(ewPoint_t* pPoints, int numPoints, int32_t x, int32_t y);
+
+    ewLineStyle_t getLineStyle();
+    ewLineStyle_t setLineStyle(ewLineStyle_t style);
+
+    void drawPolygon(ewPoint_t* pPoints, int numPoints, int32_t x, int32_t y);
+    void enlargePolygon(ewPoint_t* pDest, ewPoint_t* pSrc, int numPoints, int32_t len);
+    void magnifyPolygon(ewPoint_t* pDest, ewPoint_t* pSrc, int numPoints, int32_t mag);
+    void rotatePolygon(ewPoint_t* pDest, ewPoint_t* pSrc, int numPoints, float angle);
+    void fillPolygon(ewPoint_t* pPoints, int numPoints, int32_t x, int32_t y);
+
+    void drawCircle(int32_t x0, int32_t y0, int32_t radius);
+    void fillCircle(int32_t x0, int32_t y0, int32_t radius);
+
+    void drawEllipse(int32_t x0, int32_t y0, int32_t rx, int32_t ry);
+    void fillEllipse(int32_t x0, int32_t y0, int32_t rx, int32_t ry);
+
+    void drawArc(int32_t xCenter, int32_t yCenter, int32_t rx, int32_t ry, int32_t a0, int32_t a1);
+    void drawGraph(int16_t* paY, int numPoints, int32_t x0, int32_t y0);
+    void drawPie(int32_t x0, int32_t y0, int32_t radius, int32_t a0, int32_t a1);
+
+    void drawChar(uint16_t c);
+    void drawChar(uint16_t c, int32_t x, int32_t y);
+    void drawChars(uint16_t c, int32_t cnt);
+    void newLine();
+    void drawString(const char* s, int32_t maxLen = -1);
+    void drawString(const char* s, int32_t x, int32_t y);
+    void drawStringClearEOL(const char* s, int32_t x, int32_t y);
+    void drawStringHorizCenter(const char* s, int32_t x, int32_t y);
+    void drawStringRect(const char* s, ewRect_t *pRect, ewTextAlign_t align, ewWrapMode_t wrap = WrapModeNone);
+    void drawStringRect(const char* s, ewRect_t *pRect, ewTextAlign_t align, int32_t maxLen, ewRotation_t rotation);
+    int32_t getNumWrapLines(const char* s, int32_t width, ewWrapMode_t wrap);
+
+    ewTextMode_t getTextMode();
+    void setTextMode(ewTextMode_t mode);
+    void setTextStyle(ewTextStyle_t style);
+    ewTextAlign_t getTextAlign();
+    void setTextAlign(ewTextAlign_t align);
+
+    bool setTextPosition(int32_t x, int32_t y);
+    void getTextPosition(int32_t &x, int32_t &y);
+
+    const ewFont_t* setFont(const ewFont_t* pFont);
+    const ewFont_t* getFont();
+    int32_t getCharWidth(uint16_t c);
+    int32_t getFontHeight();
+    int32_t getFontDistY();
+    int32_t getLeadingBlankCols(uint16_t c);
+    int32_t getTrailingBlankCols(uint16_t c);
+    int32_t getStringWidth(const char* s);
+    bool isCharInFont(const ewFont_t* pFont, uint16_t c);
+
+    void drawBitmap(const ewBitmap_t* pBm, int32_t x, int32_t y);
+    void drawBitmapMagnified(const ewBitmap_t* pBm, int32_t x, int32_t y, int32_t xMul, int32_t yMul);
+    void drawBitmapScaled(const ewBitmap_t* pBm, int32_t x, int32_t y, int32_t xCenter, int32_t yCenter, int32_t xMag, int32_t yMag);
+
+    void drawJpeg(const void* pData, int32_t dataSize, int32_t x, int32_t y);
+    void drawJpegScaled(const void* pData, int32_t dataSize, int32_t x, int32_t y, int32_t num, int32_t denom);
+    void getJpegSize(const void* pData, int32_t dataSize, int32_t &width, int32_t &height);
+
+    void drawGif(const void* pData, int32_t dataSize, int32_t x, int32_t y, int32_t imgIdx = -1);
+    void drawGifScaled(const void* pData, int32_t dataSize, int32_t x, int32_t y, int32_t imgIdx, int32_t num, int32_t denom);
+    void getGifSize(const void* pData, int32_t dataSize, int32_t &width, int32_t &height);
+    int32_t getGifNumImages(const void* pData, int32_t dataSize);
+
+    void drawPng(const void* pData, int32_t dataSize, int32_t x, int32_t y);
+    void getPngSize(const void* pData, int32_t dataSize, int32_t &width, int32_t &height);
+
+
+    void saveContext();
+    void restoreContext();
+
+
+private:
+
+
+    GUI_CONTEXT _context;
+    bool _contextSaved;
+
+};
+
+#endif