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/

Switcher.cpp

Committer:
adelino
Date:
2015-04-05
Revision:
1:a74e42cf52b2

File content as of revision 1:a74e42cf52b2:

#include "Switcher.h"

Switcher::Switcher(Screen* mScreen,UINT16 _id,UINT16 _x,UINT16 _y,UINT16 _width,UINT16 _height):
    Widget(mScreen,_id,_x,_y,_width,_height,WHITE)
{
    myColorOn=GREEN;
    myColorOff=RED;
    myColorCursor=WHITE;

    myType=OBJ_SWITCHER;
    myState=SWITCHER_STATE_OFF;

    myScreen->addWidget((Widget*) this);
}
//---------------------------------------
Switcher::~Switcher(void)
{
}
//---------------------------------------
void Switcher::draw(void)
{
    if(myIsVisible==false)
        return;
    //
    PicasoSerial* ps=0;
    ps=myScreen->getPicasoSerial();

    State state=myState;

    Color gauche=WHITE;
    Color droite=WHITE;

    switch(state) {
            //
        case SWITCHER_STATE_ON:
            droite=myColorOn;
            gauche=myColorCursor;
            break;

            //
        case SWITCHER_STATE_OFF:
            droite=myColorCursor;
            gauche=myColorOff;
            break;

            //
        default:
            break;
    }
    //

    //rect gauche
    if(ps!=0)
        ps->draw_filled_rectangle(myX,myY,myX+myWidth/2,myY+myHeight,gauche);

    //rect droite
    if(ps!=0)
        ps->draw_filled_rectangle(myX+myWidth/2,myY,myX+myWidth,myY+myHeight,droite);

    //cadre
    if(ps!=0) {
        ps->draw_rectangle(myX,myY,myX+myWidth,myY+myHeight,BLACK);
        ps->draw_rectangle(myX,myY,myX+myWidth/2,myY+myHeight,BLACK);

    }
    ps=0;

}
//----------------------------------------
void Switcher::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 Switcher::setState(State _state)
{
    if(myIsVisible==false)
        return;

    if(myState==_state)
        return;

    myState=_state;

    this->draw();
}
//-----------------------------------------
void Switcher::changeState(GraphicMessage* msg)
{
    TouchEvent ev=msg->event;

    if(myIsVisible==false)
        return;

    if(ev==EVENT_PRESS && myState==SWITCHER_STATE_OFF) {
        this->setState(SWITCHER_STATE_ON);
        return;
    }
    //
    if(ev==EVENT_PRESS && myState==SWITCHER_STATE_ON) {
        this->setState(SWITCHER_STATE_OFF);
        return;
    }
    //
    if(ev==EVENT_MOVE || ev==EVENT_RELEASE)
        return;
}