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/

Revision:
1:a74e42cf52b2
diff -r 65fd8b1cbf86 -r a74e42cf52b2 Screen.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Screen.cpp	Sun Apr 05 13:54:48 2015 +0000
@@ -0,0 +1,264 @@
+#include "Screen.h"
+
+Screen::Screen(PicasoSerial* serial,UINT16 _x,UINT16 _y,UINT16 _w,UINT16 _h,Color _colorBkg):
+    myXpos(_x),myYpos(_y),myWidth(_w),myHeight(_h),myColorBkg(_colorBkg)
+{
+    mySerial=serial;
+}
+//------------------------------------
+Screen::~Screen(void)
+{
+
+
+    for(int i=0; i<myVectorObjet.size(); i++) {
+        delete  myVectorObjet[i];
+        myVectorObjet[i]=0;
+    }
+}
+//------------------------------------
+UINT16 Screen::getXpos(void) const
+{
+    return this->myXpos;
+}
+//----------------------------------
+UINT16 Screen::getYpos(void) const
+{
+    return this->myYpos;
+}
+//------------------------------------
+UINT16 Screen::getWidth(void) const
+{
+    return this->myWidth;
+}
+//-------------------------------------
+UINT16 Screen::getHeight(void) const
+{
+    return this->myHeight;
+}
+//------------------------------------
+void Screen::drawWidget(Widget* pObj)
+{
+    pObj->draw();
+
+}
+//------------------------------------
+void Screen::drawAllWidget(void)
+{
+    mySerial->draw_filled_rectangle(myXpos,myYpos,myXpos+myWidth,myYpos+myHeight,myColorBkg);
+
+    //
+    for(int i=0; i<myVectorObjet.size(); i++) {
+        drawWidget(myVectorObjet[i]);
+    }
+}
+//-------------------------------------
+void Screen::addWidget(Widget* pObj)
+{
+    myVectorObjet.push_back(pObj);
+}
+//---------------------------------------
+PicasoSerial* Screen::getPicasoSerial(void) const
+{
+    return  mySerial;
+}
+//---------------------------------------
+Color Screen::getColorBkg(void) const
+{
+    return myColorBkg;
+}
+//--------------------------------------
+bool Screen::isContent(Widget* pObj, UINT16 _x,UINT16 _y)
+{
+    UINT16 xd=pObj->getXposition();
+    UINT16 w=pObj->getWidth();
+    UINT16 xf=xd+w;
+
+    UINT16 yd=pObj->getYposition();
+    UINT16 h=pObj->getHeight();
+    UINT16 yf=yd+h;
+
+    if(_x >= xd && _x<= xf && _y>=yd && _y<= yf) {
+        return true;
+    }
+
+    return false;
+
+}
+//-------------------------------------
+Widget* Screen::getWidgetPosition(UINT16 _x,UINT16 _y)
+{
+
+    if(myVectorObjet.size()==0)
+        return NULL;
+
+    //
+    for(int i=0; i<myVectorObjet.size(); i++) {
+        if(isContent(myVectorObjet[i],_x,_y))
+            return myVectorObjet[i];
+    }
+    return NULL;
+}
+//-------------------------------------
+Widget* Screen::getWidgetById(UINT16 _id)
+{
+    if(myVectorObjet.size()==0)
+        return NULL;
+
+    //
+    for(int i=0; i<myVectorObjet.size(); i++) {
+        if((myVectorObjet[i]->getId())== _id)
+            return myVectorObjet[i];
+    }
+    return NULL;
+
+}
+//-------------------------------------
+TouchEvent Screen::getTouchEvent(GraphicMessage* msg)
+{
+    TouchEvent ev=EVENT_NO_ACTIVITY;
+    UINT16 xp=0;
+    UINT16 yp=0;
+
+    ev=mySerial->touch_get_status();
+
+    //
+    if(ev >EVENT_NO_ACTIVITY) {
+        xp=mySerial->touch_get_x();
+        yp=mySerial->touch_get_y();
+
+        msg->event=ev;
+        msg->posiX=xp;
+        msg->posiY=yp;
+        msg->objId=0;
+
+        return ev;
+    } else {
+
+        msg->event=EVENT_NO_ACTIVITY;
+        msg->posiX=0;
+        msg->posiY=0;
+        msg->objId=0;
+    }
+    //
+    return ev;
+}
+//-------------------------------------
+void Screen::getProcessMessage(GraphicMessage* msg)
+{
+    UINT16 xt=msg->posiX;
+    UINT16 yt=msg->posiY;
+    UINT16 res=0;
+
+    Widget* obj=NULL;
+
+    obj=getWidgetPosition(xt,yt);
+
+    if(obj!=NULL && obj->getIsVisible()==true) {
+        res=obj->getId();
+        msg->objId=res;
+    } else {
+        msg->objId=0;
+    }
+
+}
+//------------------------------------
+void Screen::setClear()
+{
+   mySerial->draw_filled_rectangle(myXpos,myYpos,myXpos+myWidth,myYpos+myHeight,myColorBkg); 
+}
+///////////////////////////////////////
+
+Widget::Widget(Screen* mScreen,UINT16 _id,UINT16 _x,UINT16 _y,UINT16 _w,UINT16 _h,Color _color):
+    myScreen(mScreen),myId(_id),myX(_x),myY(_y),myWidth(_w),myHeight(_h),myColor(_color)
+{
+
+    myState=STATE_ON;
+    myIsVisible=true;
+}
+//-------------------------------------
+Widget::~Widget(void)
+{
+}
+//-------------------------------------
+//-------------------------------------
+void Widget::draw(void)
+{
+//to do
+}
+//-------------------------------------
+UINT16 Widget::getXposition(void) const
+{
+    return this->myX;
+}
+//---------------------------------------
+UINT16 Widget::getYposition(void) const
+{
+    return this->myY;
+}
+//----------------------------------------
+UINT16 Widget::getWidth(void) const
+{
+    return this->myWidth;
+}
+//----------------------------------------
+UINT16 Widget::getHeight(void) const
+{
+    return this->myHeight;
+}
+//----------------------------------------
+UINT16 Widget::getId(void) const
+{
+    return this->myId;
+}
+//----------------------------------------
+WIDGET_TYPE Widget::getType(void) const
+{
+    return this->myType;
+}
+//----------------------------------------
+bool Widget::getIsVisible(void) const
+{
+    return this->myIsVisible;
+}
+//----------------------------------------
+Color Widget::getColor(void) const
+{
+    return myColor;
+}
+//----------------------------------------
+void Widget::setVisibility(bool _val)
+{
+    (this->myIsVisible)=_val;
+}
+//----------------------------------------
+State Widget::getState(void) const
+{
+    return this->myState;
+}
+//------------------------------------------
+void Widget::setColor(Color _color)
+{
+    myColor=_color;
+}
+//------------------------------------------
+void Widget::setState(State _state)
+{
+    myState=_state;
+}
+//------------------------------------------
+void Widget::setId(UINT16 _id)
+{
+    myId=_id;
+}
+//------------------------------------------
+void Widget::setXposition(UINT16 _xpos)
+{
+    this->myX=_xpos;
+}
+//------------------------------------------
+void Widget::setYposition(UINT16 _ypos)
+{
+    this->myY=_ypos;
+}
+//----------------------------------------
+ 
\ No newline at end of file