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/
DigitLed.cpp
- Committer:
- adelino
- Date:
- 2015-04-05
- Revision:
- 1:a74e42cf52b2
File content as of revision 1:a74e42cf52b2:
#include "DigitLed.h" DigitLed::DigitLed(Screen* mScreen,UINT16 _x,UINT16 _y,bool _ptVisible): Widget(mScreen,0,_x,_y,36,52,WHITE) { myValue=0; myColorBkg=YELLOW; myColorSeg=RED; myIncX=4; myIncY=4; isPtVisible=_ptVisible; myType=OBJ_DIGIT_LED; myState=DIGIT_LED_STATE_ON; myScreen->addWidget((Widget*) this); } //----------------------------------------- DigitLed::~DigitLed(void) { } //----------------------------------------- void DigitLed::setColorBkg(Color _colorBkg) { if(myColorBkg==_colorBkg) return; myColorBkg=_colorBkg; this->draw(); } //------------------------------------------ void DigitLed::setColorSeg(Color _colorSeg) { if(myColorSeg==_colorSeg) return; myColorSeg=_colorSeg; this->draw(); } //----------------------------------------- void DigitLed::draw(void) { if(myIsVisible==false) return; // PicasoSerial* ps=0; ps=myScreen->getPicasoSerial(); //rec if(ps!=0) { ps->draw_filled_rectangle(myX,myY,myX+myWidth,myY+myHeight,myColorBkg); } if(isPtVisible) draw_seg_pt(ps); // switch(myValue) { case 0: draw_seg_a(ps); draw_seg_b(ps); draw_seg_c(ps); draw_seg_d(ps); draw_seg_e(ps); draw_seg_f(ps); break; // case 1: draw_seg_b(ps); draw_seg_c(ps); break; // case 2: draw_seg_a(ps); draw_seg_b(ps); draw_seg_d(ps); draw_seg_e(ps); draw_seg_g(ps); break; // case 3: draw_seg_a(ps); draw_seg_b(ps); draw_seg_c(ps); draw_seg_d(ps); draw_seg_g(ps); break; // case 4: draw_seg_b(ps); draw_seg_c(ps); draw_seg_f(ps); draw_seg_g(ps); break; // case 5: draw_seg_a(ps); draw_seg_c(ps); draw_seg_d(ps); draw_seg_f(ps); draw_seg_g(ps); break; // case 6: draw_seg_a(ps); draw_seg_c(ps); draw_seg_d(ps); draw_seg_e(ps); draw_seg_f(ps); draw_seg_g(ps); break; // case 7: draw_seg_a(ps); draw_seg_b(ps); draw_seg_c(ps); break; // case 8: draw_seg_a(ps); draw_seg_b(ps); draw_seg_c(ps); draw_seg_d(ps); draw_seg_e(ps); draw_seg_f(ps); draw_seg_g(ps); break; // case 9: draw_seg_a(ps); draw_seg_b(ps); draw_seg_c(ps); draw_seg_d(ps); draw_seg_f(ps); draw_seg_g(ps); break; } ps=0; } //----------------------------------------- void DigitLed::setValue(char _value) { if(myIsVisible==false) return; if(myValue==_value) return; if(_value >9) _value=9; myValue=_value; this->draw(); } //----------------------------------------- void DigitLed::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 DigitLed::setPtVisible(bool _state) { if(isPtVisible==_state) return; isPtVisible=_state; } //----------------------------------------- void DigitLed::draw_seg_a(PicasoSerial* ps) { if(ps!=0) ps->draw_filled_rectangle(myX+myIncX, myY, myX+7*myIncX, myY+myIncY, myColorSeg); } //------------------------------------------ void DigitLed::draw_seg_b(PicasoSerial* ps) { if(ps!=0) ps->draw_filled_rectangle(myX+6*myIncX, myY, myX+7*myIncX, myY+5*myIncY, myColorSeg); } //------------------------------------------- void DigitLed::draw_seg_c(PicasoSerial* ps) { if(ps!=0) ps->draw_filled_rectangle(myX+6*myIncX, myY+8*myIncY, myX+7*myIncX, myY+myHeight, myColorSeg); } //-------------------------------------------- void DigitLed::draw_seg_d(PicasoSerial* ps) { if(ps!=0) ps->draw_filled_rectangle(myX+myIncX, myY+myHeight-myIncY, myX+7*myIncX, myY+myHeight, myColorSeg); } //----------------------------------------- void DigitLed::draw_seg_e(PicasoSerial* ps) { if(ps!=0) ps->draw_filled_rectangle(myX+myIncX, myY+myHeight-5*myIncY, myX+2*myIncX, myY+myHeight, myColorSeg); } //----------------------------------------- void DigitLed::draw_seg_f(PicasoSerial* ps) { if(ps!=0) ps->draw_filled_rectangle(myX+myIncX, myY, myX+2*myIncX, myY+5*myIncY, myColorSeg); } //------------------------------------------ void DigitLed::draw_seg_g(PicasoSerial* ps) { if(ps!=0) ps->draw_filled_rectangle(myX+myIncX, myY+6*myIncY, myX+7*myIncX, myY+7*myIncY, myColorSeg); } //------------------------------------------ void DigitLed::draw_seg_pt(PicasoSerial* ps) { if(ps!=0) ps->draw_filled_rectangle(myX+myWidth-myIncX, myY+myHeight-myIncY, myX+myWidth, myY+myHeight, myColorSeg); }