Library for 3.2'' uLcd Picaso Display4D system Picaso Serial Environment Command Set web: http://www.4dsystems.com.au/product/20/67/Processors_Graphics/PICASO/
Diff: ObjetGraphic.h
- Revision:
- 0:65fd8b1cbf86
diff -r 000000000000 -r 65fd8b1cbf86 ObjetGraphic.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ObjetGraphic.h Sun Jul 06 10:36:27 2014 +0000 @@ -0,0 +1,755 @@ +#ifndef OBJET_GRAPHIC_H +#define OBJET_GRAPHIC_H + +#include "PicasoSerial.h" +#include <vector> +#include <string> + +/** +* Library for 3.2'' uLcd Picaso Display +* 4D system +* The Objets +* Picaso Serial Environment Command Set +* http://www.4dsystems.com.au/product/20/67/Processors_Graphics/PICASO/ +* @autor A.Decarvalho +* +* 17/04/ 2014 +* +*/ + +//------------------------------------- +class ObjetHeader; +//------------------------------------- +// +// +class Screen +{ +public: + /** Construct a Screen + * + * @param serial the PicasoSerial Obj + * @param _x the up left + * @params _y the up left + * @params _w the width + * @params _h the height + * @param _colorBkg the background color + */ + // constructeur + Screen(PicasoSerial* serial,UINT16 _x,UINT16 _y,UINT16 _w,UINT16 _h,Color _colorBkg); + // + ~Screen(void); + // + //! draw all objects + void drawAll(void); + //------------------------------ + //! add a new Objet + void addObj(ObjetHeader* pObj); + // + //! draw a particular object + void drawObj(ObjetHeader* pObj); + // + //! @returns PicasoSerial the pointer to draw on the screen + PicasoSerial* getPicasoSerial(void); + // + void drawCells(void); + +//getter + UINT16 getXpos(void); + UINT16 getYpos(void); + UINT16 getWidth(void); + UINT16 getHeight(void); + Color getColorBkg(void); + + bool isContent(ObjetHeader* pObj, UINT16 _x,UINT16 _y); + + //----------------------------------------------------- + //! returns the Objet in [_x,_y] position + ObjetHeader* getObjetPosition(UINT16 _x,UINT16 _y); + + //! returns the Objet by Id + ObjetHeader* getObjetById(UINT16 _id); + + //----------------------------------------------------- + //! returns the touch and update the GraphicMessage + TouchEvent getTouchEvent(GraphicMessage* msg); + + //------------------------------------------- + //! update the identifier Id of the object being touched + void getProcessMessage(GraphicMessage* msg); + +protected: + PicasoSerial* mySerial; + + UINT16 myXpos,myYpos,myWidth,myHeight; + + Color myColorBkg; + + vector<ObjetHeader*> myVectorObjet; +}; +// +// +//-------------------------------------- +// +// +class ObjetHeader +{ +public: + /** Construct a ObjetHeader the father + * + * @param mScreen the pointer screen + * @param _id the identifier Id + * @params _x the up left + * @params _y the up left + * @params _w the width + * @params _h the height + * @param _color the background color + * @params _isVisible + */ +// constructor + // + ObjetHeader(Screen* mScreen,UINT16 _id,UINT16 _x,UINT16 _y,UINT16 _w,UINT16 _h,Color _color,bool _isVisible); + // + //! draw the obj + virtual void draw(void); + // + virtual ~ObjetHeader(void); + // + //! test a overlap + bool overlapWith(ObjetHeader* pObj); + // + static bool overlap(ObjetHeader* pObj1,ObjetHeader* pObj2); + // + static const UINT16 CELL_DIM=80; + static const UINT16 CELL_COL=3; + void updateCellId(void); + + +//getter + UINT16 getXpos(void); + UINT16 getYpos(void); + UINT16 getWidth(void); + UINT16 getHeight(void); + UINT16 getElementId(void); + bool getIsVisible(void); + State getElementState(void); + + float getSpeedX(void); + float getSpeedY(void); + + Color getColor(void); + + UINT16 getCellId(void); + +//setter + void setColor(Color _color); + void setElementState(State _state); + void setElementId(UINT16 _id); + void setVisibility(bool _val); + void setInvertSpeedX(void); + void setInvertSpeedY(void); + void setSpeedX(float _speedX); + void setSpeedY(float _speedY); + void setSpeedXY(float _speedX,float _speedY); + + void setXpos(UINT16 _xpos); + void setYpos(UINT16 _ypos); + + GRAPHIC_OBJ_TYPE getElementType(void); + + void setUpdateAutomatic(bool _state); + bool getUpdateAutomatic(void); + +protected: + Screen* myScreen; + + void elementUpdate(void); + + UINT16 myX,myY,myWidth,myHeight; + UINT16 myElementId; + GRAPHIC_OBJ_TYPE myElementType; + + bool myElementIsVisible; + bool myIsUpdateAutomatic; + float mySpeedX,mySpeedY; + + UINT16 myXMoveMin,myXMoveMax,myYMoveMin,myYMoveMax; + UINT16 myCellId; + + State myElementState; + Color myColor; +}; +//----------------------------------------- +// +// +class Isocele:public ObjetHeader +{ +public: + Isocele(Screen* mScreen,UINT16 _id,UINT16 xc,UINT16 yc,UINT16 radius,int orientation,float _speed,Color color,bool isVisible); + // + virtual void draw(void); + // + virtual ~Isocele(void); + // + void setOrientation(int _orientation); + // + void turnLeft(void); + // + void turnRight(void); + // + void setInvisible(bool _state); + // + void setNewPosition(INT16 _xcnew,INT16 _ycnew); + // + void update(float delta); + // + int getOrientation(void); + // + UINT16 getXcenter(void); + // + UINT16 getYcenter(void); + + static const int ORIENTATION_UP=0; + static const int ORIENTATION_LEFT=1; + static const int ORIENTATION_DOWN=2; + static const int ORIENTATION_RIGHT=3; + +protected: + UINT16 myXcenter; + UINT16 myYcenter; + UINT16 myRadius; + int myOrientation; + + UINT16 myX1,myY1; + UINT16 myX2,myY2; + UINT16 myX3,myY3; + float mySpeed; + + void updateOrientation(void); + void myElementUpdate(void); +}; +//---------------------------------------- +// +// +class Rectangle:public ObjetHeader +{ +public: + /** Construct a filled Rectangle + * + * @param mScreen the pointer screen + * @param _id the identifier Id + * @params _x the up left + * @params _y the up left + * @params _w the width + * @params _h the height + * @param _color the background color + * @params _isVisible + */ + Rectangle(Screen* mScreen,UINT16 _id,UINT16 _x,UINT16 _y,UINT16 _w,UINT16 _h,Color _color,bool _isVisible); + // + virtual void draw(void); + // + virtual ~Rectangle(void); + // + //! updating the position of the object, in the case of a game + void update(float delta); + + +//setter + void setInvisible(bool _state); + // + void setNewPosition(INT16 _xcnew,INT16 _ycnew); + +}; +//---------------------------------------- +// +// +class Circle:public ObjetHeader +{ +public: + /** Construct a filled Circle + * + * @param mScreen the pointer screen + * @param _id the identifier Id + * @params _xc the center x + * @params _yc the center y + * @params _radius + * @param _color the background color + * @params _isVisible + */ + Circle(Screen* mScreen,UINT16 _id,UINT16 _xc,UINT16 _yc,UINT16 _radius,Color _color,bool _isVisible); + // + virtual void draw(void); + // + virtual ~Circle(void); + // + void update(float delta); + +// getter + UINT16 getCenterX(void); + // + UINT16 getCenterY(void); + +//setter + void setInvisible(bool _state); + // + void setNewPosition(INT16 _xnew,INT16 _ynew); + // + void setCenterX(UINT16 _xcenter); + // + void setCenterY(UINT16 _ycenter); + +protected: + UINT16 myRadius; + UINT16 myCenterX; + UINT16 myCenterY; +}; +//----------------------------------------- +// +// +class Ellipse:public ObjetHeader +{ +public: + /** Construct a filled Ellipse + * + * @param mScreen the pointer screen + * @param _id the identifier Id + * @params _xc the center x + * @params _yc the center y + * @params _radiusX + * @radius _radiusY + * @param _color the background color + * @params _isVisible + */ + Ellipse(Screen* mScreen,UINT16 _id,UINT16 _xc,UINT16 _yc,UINT16 _radiusX,UINT16 _radiusY,Color _color,bool _isVisible); + // + virtual void draw(void); + // + virtual ~Ellipse(void); + // + void update(float delta); +// getter + UINT16 getCenterX(void); + // + UINT16 getCenterY(void); + +//setter + void setInvisible(bool _state); + // + void setNewPosition(INT16 _xcnew,INT16 _ycnew); + // + void setCenterX(UINT16 _xcenter); + // + void setCenterY(UINT16 _ycenter); + + +protected: + UINT16 myCenterX; + UINT16 myCenterY; + UINT16 myRadiusX; + UINT16 myRadiusY; +}; +//----------------------------------------- +// +// +class Diamond:public ObjetHeader +{ +public: + /** Construct a filled Diamond + * + * @param mScreen the pointer screen + * @param _id the identifier Id + * @params x1 + * @params y1 + * @params x2 + * @params y2 + * @params x3 + * @params y3 + * @params x4 + * @params y4 + * @param _color the background color + * @params _isVisible + */ + Diamond(Screen* mScreen,UINT16 _id,UINT16 x1,UINT16 y1,UINT16 x2,UINT16 y2, + UINT16 x3,UINT16 y3,UINT16 x4,UINT16 y4,Color _color,bool _isVisible); + // + virtual void draw(void); + // + virtual ~Diamond(void); + // + void update(float delta); + +//setter + void setInvisible(bool _state); + // + void setNewPosition(INT16 _xnew,INT16 _ynew); + +protected: + UINT16 myX1,myY1; + UINT16 myX2,myY2; + UINT16 myX3,myY3; + UINT16 myX4,myY4; + UINT16 myU1,myU2; + UINT16 myV1,myV2; + +}; +//--------------------------------------- +// +// +class Triangle:public ObjetHeader +{ +public: + /** Construct a filled Triangle + * + * @param mScreen the pointer screen + * @param _id the identifier Id + * @params x1 + * @params y1 + * @params x2 + * @params y2 + * @params x3 + * @params y3 + * @param _color the background color + * @params _isVisible + */ + + Triangle(Screen* mScreen,UINT16 _id,UINT16 x1,UINT16 y1, + UINT16 x2,UINT16 y2, + UINT16 x3,UINT16 y3, + Color _color,bool _isVisible); + // + virtual void draw(void); + // + virtual ~Triangle(void); + // + void update(float delta); + + +//setter + void setInvisible(bool _state); + // + void setNewPosition(INT16 _xnew,INT16 _ynew); + + +protected: + UINT16 myX1,myY1; + UINT16 myX2,myY2; + UINT16 myX3,myY3; + UINT16 myU,myV; +}; +//------------------------------------------ +// +// +class Label:public ObjetHeader +{ +public: + /** Construct a label + * + * @param mScreen the pointer screen + * @param _id the identifier Id + * @params _x + * @params _y + * @params _text + * @params _font + * @params _colorText + * @params _colorBkg + * @params _isVisible + */ + + Label(Screen* mScreen,UINT16 _id,UINT16 _x,UINT16 _y, + string _text,Font _font,Color _colorText,Color _colorBkg,bool _isVisible); + + // + virtual void draw(void); + // + virtual ~Label(void); + +//setter + void setInvisible(bool _state); + // + void setNewText(string _newText); + +protected: + string myText; + Font myFont; + Color myColorText; + +}; +//------------------------------------------- +// +// +class GraphicLed:public ObjetHeader +{ +public: + /** Construct a filled Circle + * + * @param mScreen the pointer screen + * @param _id the identifier Id + * @params _xc center + * @params _yc center + * @params _radius + * @params _colorOn + * @params _colorOff + * @params _state LED_STATE_ON or LED_STATE_OFF, + * @params _isVisible + */ + GraphicLed(Screen* mScreen,UINT16 _id,UINT16 _xc,UINT16 _yc,UINT16 _radius, + Color _colorOn,Color _colorOff,State _state,bool _isVisible); + // + virtual void draw(void); + // + virtual ~GraphicLed(void); + + +//setter + void setInvisible(bool _state); + // + void setState(State _state); + +protected: + Color myColorOn; + Color myColorOff; + UINT16 myRadius; + UINT16 myCenterX; + UINT16 myCenterY; +}; +//------------------------------------------ +// +// +class Button:public ObjetHeader +{ +public: + /** Construct a Button + * + * @param mScreen the pointer screen + * @param _id the identifier Id + * @params _x up left + * @params _y up left + * @params _text + * @params _font + * @params _colorText + * @params _colorBtn + * @params _state BUTTON_STATE_PRESSED or BUTTON_STATE_RELEASED, + * @params _isVisible + */ + Button(Screen* mScreen,UINT16 _id,UINT16 _x,UINT16 _y,string _text,Font _font, + Color _colorText,Color _colorBtn,State _state,bool _isVisible); + // + virtual void draw(void); + // + virtual ~Button(void); + + //setter + void setInvisible(bool _state); + // + void setState(State _state); + +protected: + string myText; + Font myFont; + Color myColorText; +}; +//------------------------------------------ +// +// +class Slider:public ObjetHeader +{ +public: + /** Construct a Slider + * + * @param mScreen the pointer screen + * @param _id the identifier Id + * @params _x up left + * @params _y up left + * @params _width + * @params _height + * @params _valMax + * @params _value + * @params _colorBkg + * @params _isVisible + */ + Slider(Screen* mScreen,UINT16 _id,UINT16 _x,UINT16 _y,UINT16 _width,UINT16 _height,int _valMax,int _value, + Color _colorBkg,bool _isVisible); + // + virtual void draw(void); + // + virtual ~Slider(void); + // + void setInvisible(bool _state); + // + int getValue(GraphicMessage* pmsg); + +protected: + int myValueMax; + int myValue; +}; +//------------------------------------------ +// +// +class Input:public ObjetHeader +{ +public: + /** Construct a Input + * + * @param mScreen the pointer screen + * @param _id the identifier Id + * @params _x up left + * @params _y up left + * @params _width + * @params _height + * @params _valMin + * @params _valInc incrementing the value + * @params _valMax + * @params _isVisible + */ + Input(Screen* mScreen,UINT16 _id,UINT16 _x,UINT16 _y,UINT16 _width,UINT16 _height,float _valMin,float _valInc, + float _valMax,bool _isVisible); + // + virtual void draw(void); + // + virtual ~Input(void); + // + void setInvisible(bool _state); + // + float getValue(GraphicMessage* msg); + // + void setColorBkg(Color _color); + // + void setColorCursorDown(Color _color); + // + void setColorCursorUp(Color _color); + +protected: + float myValMin; + float myValInc; + float myValMax; + float myValue; + Color myColorBkg; + Color myColorCursorUp; + Color myColorCursorDown; +}; +//----------------------------------------- +// +// +class Switch:public ObjetHeader +{ +public: + /** Construct a Switch + * + * @param mScreen the pointer screen + * @param _id the identifier Id + * @params _x up left + * @params _y up left + * @params _width + * @params _height + * @params _isVisible + */ + Switch(Screen* mScreen,UINT16 _id,UINT16 _x,UINT16 _y,UINT16 _width,UINT16 _height,bool _isVisible); + // + virtual void draw(void); + // + virtual ~Switch(void); + // + void setInvisible(bool _state); + // + void setState(State _state); + // + void changeState(GraphicMessage* msg); + +protected: + Color myColorOn; + Color myColorOff; + Color myColorCursor; +}; +//------------------------------------ +// +// +class DigitLed:public ObjetHeader +{ +public: + /** Construct a Digit Led + * + * @param mScreen the pointer screen + * @param _id the identifier Id + * @params _x up left + * @params _y up left + * @params _ptVisible + * @params _isVisible + */ + DigitLed(Screen* mScreen,UINT16 _id,UINT16 _x,UINT16 _y,bool _ptVisible,bool _isVisible); + // + virtual void draw(void); + // + virtual ~DigitLed(void); + // + void setInvisible(bool _state); + // + void setValue(char _value); + // + void setColorBkg(Color _colorBkg); + // + void setColorSeg(Color _colorSeg); + // + void setPtVisible(bool _state); + +protected: + char myValue; + Color myColorBkg; + Color myColorSeg; + UINT16 myIncX; + UINT16 myIncY; + bool isPtVisible; + // + void draw_seg_a(PicasoSerial* ps); + void draw_seg_b(PicasoSerial* ps); + + void draw_seg_c(PicasoSerial* ps); + + void draw_seg_d(PicasoSerial* ps); + void draw_seg_e(PicasoSerial* ps); + void draw_seg_f(PicasoSerial* ps); + + void draw_seg_g(PicasoSerial* ps); + void draw_seg_pt(PicasoSerial* ps); +}; +//-------------------------------------------- +// +// +class Digit3Led:public ObjetHeader +{ +public: + /** Construct a 3 Digit Led [000] + * + * @param mScreen the pointer screen + * @param _id the identifier Id + * @params _x up left + * @params _y up left + * @params _resolution 1[000],10[00.0],100[0.00] + * @params _isVisible + */ + Digit3Led(Screen* mScreen,UINT16 _id,UINT16 _x,UINT16 _y,UINT8 _resolution,bool _isVisible); + // + virtual void draw(void); + // + virtual ~Digit3Led(void); + // + void setInvisible(bool _state); + // + void setValue(float _value); + // + void setColorBkg(Color _colorBkg); + // + void setColorSeg(Color _colorSeg); + +protected: + Color myColorBkg; + Color myColorSeg; + float myValue; + UINT8 myResolution; + + DigitLed* myDigitLedCentaine; + DigitLed* myDigitLedDizaine; + DigitLed* myDigitLedUnite; + +}; +//-------------------------------------------------------- +#endif \ No newline at end of file