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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Button.cpp	Sun Apr 05 13:54:48 2015 +0000
@@ -0,0 +1,146 @@
+#include "Button.h"
+
+Button::Button(Screen* mScreen,UINT16 _id,UINT16 _x,UINT16 _y,string _text,Font _font,
+               Color _colorText,Color _colorBtn,State _state):
+    Widget(mScreen,_id,_x,_y,0,0,_colorBtn)
+
+{
+    myText=_text;
+    myFont=_font;
+    myColorText=_colorText;
+
+    myState=_state;
+    myType=OBJ_BUTTON;
+
+    //
+    UINT16 largeur=0;
+    UINT16 hauteur=16;
+    UINT16 taille=0;
+    UINT16 incLargeur=12;
+
+    switch(_font) {
+            //
+        case FONT_2:
+            incLargeur=8;
+            hauteur=8;
+            largeur=8;
+            break;
+
+            //
+        case FONT_3:
+            incLargeur=8;
+            hauteur=12;
+            largeur=8;
+            break;
+            //
+        case FONT_1:
+            incLargeur=5;
+            hauteur=7;
+            largeur=5;
+            break;
+
+            //
+        default:
+            incLargeur=12;
+            hauteur=16;
+            largeur=8;
+            break;
+    }
+
+    //cherche taille
+
+    taille=_text.size();
+
+    largeur=taille*incLargeur;
+
+    if(largeur > incLargeur)
+        largeur=largeur-incLargeur;
+
+    myWidth=largeur+incLargeur+incLargeur;
+    myHeight=hauteur+incLargeur+incLargeur;
+
+    myScreen->addWidget((Widget*) this);
+
+    //
+
+}
+//--------------------------------------
+Button::~Button(void)
+{
+}
+//---------------------------------------
+void Button::draw(void)
+{
+    if(myIsVisible==false)
+        return;
+
+    State state=getState();
+
+    PicasoSerial* ps=0;
+    ps=myScreen->getPicasoSerial();
+
+    switch(state) {
+            //
+        case BUTTON_STATE_PRESSED:
+            if(ps!=0) {
+                ps->draw_button(myText,myX,myY,myFont,BUTTON_STATE_PRESSED,myColor,WHITE);
+
+            }
+            ps=0;
+            return;
+            //
+        case BUTTON_STATE_RELEASED:
+            if(ps!=0) {
+                ps->draw_button(myText,myX,myY,myFont,BUTTON_STATE_RELEASED,myColor,myColorText);
+
+            }
+            ps=0;
+            return;
+            //
+        default:
+            break;
+    }
+}
+
+//-----------------------------------
+void Button::setInvisible(bool _state)
+{
+    // element devient invisible
+    if(_state==true) {
+        if(myIsVisible==false)
+            return;
+
+        myIsVisible=false;
+
+        Color c= myScreen->getColorBkg();
+
+        PicasoSerial* ps=0;
+        ps=myScreen->getPicasoSerial();
+
+        if(ps!=0) {
+            ps->draw_filled_rectangle(myX,myY,myX+myWidth,myY+myHeight,c);
+        }
+        ps=0;
+    }
+
+    // element devient visible
+    else {
+        myIsVisible=true;
+
+
+        this->draw();
+    }
+}
+//------------------------------------
+void Button::setState(State _state)
+{
+    if(myIsVisible==false)
+        return;
+
+    if(myState==_state)
+        return;
+
+    myState=_state;
+
+    this->draw();
+}
\ No newline at end of file