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: Digit3Led.cpp
- Revision:
- 1:a74e42cf52b2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Digit3Led.cpp Sun Apr 05 13:54:48 2015 +0000 @@ -0,0 +1,163 @@ +#include "Digit3Led.h" + +Digit3Led::Digit3Led(Screen* mScreen,UINT16 _x,UINT16 _y,UINT8 _resolution): + Widget(mScreen,0,_x,_y,108,52,YELLOW) +{ + myColorBkg=YELLOW; + myColorSeg=RED; + myValue=0.0; + myResolution=_resolution; + + myDigitLedCentaine= new DigitLed(mScreen,_x,_y,false); + myDigitLedDizaine=new DigitLed(mScreen,_x+36,_y,false); + myDigitLedUnite= new DigitLed(mScreen,_x+36+36,_y,false); + + + myType= OBJ_DIGITAL_3_LED; + myState=DIGIT_LED_STATE_ON; + + myScreen->addWidget((Widget*) this); +} +//------------------------------------------ +Digit3Led::~Digit3Led(void) +{ + delete(myDigitLedCentaine); + myDigitLedCentaine=0; + delete(myDigitLedDizaine); + myDigitLedDizaine=0; + delete(myDigitLedUnite); + myDigitLedUnite=0; +} +//------------------------------------------ +void Digit3Led::draw(void) +{ + if(myIsVisible==false) + return; + + myDigitLedCentaine->draw(); + myDigitLedDizaine->draw(); + myDigitLedUnite->draw(); + +} +//------------------------------------------ +void Digit3Led::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 Digit3Led::setValue(float _value) +{ + if(myIsVisible==false) + return; + // + if(myValue==_value) + return; + // + myValue=_value; + UINT16 temp=0; + + char centaine=0; + char dizaine=0; + char unite=0; + + //the Pt? + switch(myResolution) { + case 1: //xxx + temp=(UINT16)_value; + myDigitLedCentaine->setPtVisible(false); + myDigitLedDizaine->setPtVisible(false); + myDigitLedUnite->setPtVisible(false); + break; + // + case 10: //xx.x + temp=(UINT16)(_value*10); + myDigitLedCentaine->setPtVisible(false); + myDigitLedDizaine->setPtVisible(true); + myDigitLedUnite->setPtVisible(false); + break; + // + case 100: //x.xx + temp=(UINT16)(_value*100); + myDigitLedCentaine->setPtVisible(true); + myDigitLedDizaine->setPtVisible(false); + myDigitLedUnite->setPtVisible(false); + break; + + default: + break; + } + // + if(temp <100) { + centaine=0; + myDigitLedCentaine->setInvisible(true); + } else { + myDigitLedCentaine->setInvisible(false); + centaine=(char)(temp/100); + temp=temp-(centaine*100); + } + // + if(temp <10) { + dizaine=0; + } else { + dizaine=(char)(temp/10); + temp=temp-(dizaine*10); + } + // + unite=(char)temp; + + myDigitLedCentaine->setValue(centaine); + myDigitLedDizaine->setValue(dizaine); + myDigitLedUnite->setValue(unite); + + this->draw(); +} +//------------------------------------------ +void Digit3Led::setColorBkg(Color _colorBkg) +{ + if(myColorBkg==_colorBkg) + return; + + myColorBkg=_colorBkg; + myDigitLedCentaine->setColorBkg(_colorBkg); + myDigitLedDizaine->setColorBkg(_colorBkg); + myDigitLedUnite->setColorBkg(_colorBkg); + + this->draw(); +} +//------------------------------------------ +void Digit3Led::setColorSeg(Color _colorSeg) +{ + if(myColorSeg==_colorSeg) + return; + + myColorSeg=_colorSeg; + myDigitLedCentaine->setColorSeg(_colorSeg); + myDigitLedDizaine->setColorSeg(_colorSeg); + myDigitLedUnite->setColorSeg(_colorSeg); + + this->draw(); +} \ No newline at end of file