Library for 4D systems touchscreen
TouchScreen.h
- Committer:
- ashleymills
- Date:
- 2012-08-21
- Revision:
- 0:edf5f3d8645e
File content as of revision 0:edf5f3d8645e:
/*************************** * Created by Ashley Mills * ***************************/ #pragma once #include "mbed.h" #include "rtos.h" #define lowByte(w) ((uint8_t) ((w) & 0xff)) #define highByte(w) ((uint8_t) ((w) >> 8)) typedef enum { NO_TOUCH_ACTIVITY=0, TOUCH_PRESS, TOUCH_RELEASE, TOUCH_MOVING } eTouchStatus; typedef enum { LANDSCAPE=0, LANDSCAPE_R, NATIVE, PORTRAIT_R } eScreenOrientation; typedef enum { BAUD_9600, BAUD_14400, BAUD_19200, BAUD_57600, BAUD_115200, BAUD_256000 } eBaudRate; typedef struct { uint16_t x; uint16_t y; } TouchPoint; typedef enum { INTERNAL_FONT_5x7, INTERNAL_FONT_8x8, INTERNAL_FONT_8x12, INTERNAL_FONT_12x16 } eInternalFont; class TouchScreen : Serial { public: static const int WIDTH = 320; static const int HEIGHT = 240; // constructors TouchScreen(PinName tx, PinName rx, PinName resetPin, const char *name = NULL); TouchScreen(PinName tx, PinName rx, PinName resetPin, eBaudRate baud, const char *name = NULL); bool begin(); // drawing commands void drawCircle(uint16_t xPos, uint16_t yPos, uint16_t radius, uint16_t color); void drawPixel(uint16_t xPos, uint16_t yPos, uint16_t color); void clearScreen(); void setBackgroundColor(uint16_t color); void setPenSolid(); void setPenWireframe(); void drawImage(char *name, uint16_t x, uint16_t y); void drawGraphicsFormatString(uint16_t x, uint16_t y, eInternalFont font, uint16_t textColor, uint8_t charWidth, uint8_t charHeight, char* text); void drawRectangle(uint16_t topLeftX, uint16_t topLeftY, uint16_t botRightX, uint16_t botRightY, uint16_t color); void drawRectangleWH(uint16_t topLeftX, uint16_t topLeftY, uint16_t width, uint16_t height, uint16_t color); void drawRectangleWH(uint16_t topLeftX, uint16_t topLeftY, uint16_t width, uint16_t height); void drawLine(uint16_t topLeftX, uint16_t topLeftY, uint16_t botRightX, uint16_t botRightY, uint16_t color); // drawing text void drawTextFormatString(uint8_t row, uint8_t column, eInternalFont font, uint16_t textColor, char* text); void drawChar(char c, uint16_t x, uint16_t y, uint16_t color, uint8_t width, uint8_t height); void drawText(char *s, uint16_t x, uint16_t y); void setFont(uint8_t fontIndex); // color creation uint16_t createRGB(uint8_t r, uint8_t g, uint8_t b); uint16_t createRGBClassic(int r, int g, int b); uint16_t createRGBF(float r, float g, float b); // touch commands void enableTouch(); void disableTouch(); eTouchStatus getTouchStatus(); TouchPoint getLastTouch(); void reset(); // misc commands void getVersion(); void setOrientation(eScreenOrientation o); bool setBaudRate(eBaudRate baud); void setBacklight(bool state); void setContrast(uint8_t value); void setFillColor(uint16_t c); void setStrokeColor(uint16_t c); private: void dropByte(); void dropBytes(uint16_t numBytes); void dropByteAndWaitUntilReadable(); bool gack(); bool waitUntilReadable(); DigitalOut *_resetPin; uint16_t _fillColor; uint16_t _strokeColor; bool _initOK; }; /* Header (6 bytes as 3 words) word1 (Hi:Lo) = width : horizontal size of the image word2 (Hi:Lo) = height : vertical size of the image Word3 = colour_mode : 16dec = 65K colour mode, 16bits/2bytes per pixel (msb, lsb) The header is then followed by the pixel data Pixel1�PixelN: Image pixel data and N is the total number of pixels N = height x width when colour_mode = 0 N = height x width x 2 when colour_mode = 1 */