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/

Committer:
adelino
Date:
Sun Apr 05 13:54:48 2015 +0000
Revision:
1:a74e42cf52b2
PicasoLib version 2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
adelino 1:a74e42cf52b2 1 #include "Scaler.h"
adelino 1:a74e42cf52b2 2
adelino 1:a74e42cf52b2 3 Scaler::Scaler(Screen* mScreen,UINT16 _id,UINT16 _x,UINT16 _y,UINT16 _width,UINT16 _height,float _valMin,float _valInc,
adelino 1:a74e42cf52b2 4 float _valMax):
adelino 1:a74e42cf52b2 5 Widget(mScreen,_id,_x,_y,_width,_height,WHITE)
adelino 1:a74e42cf52b2 6 {
adelino 1:a74e42cf52b2 7 myValMin=_valMin;
adelino 1:a74e42cf52b2 8 myValInc=_valInc;
adelino 1:a74e42cf52b2 9 myValMax=_valMax;
adelino 1:a74e42cf52b2 10 myValue=0.0;
adelino 1:a74e42cf52b2 11 myColorBkg=WHITE;
adelino 1:a74e42cf52b2 12 myColorCursorUp=BLUE;
adelino 1:a74e42cf52b2 13 myColorCursorDown=BLUE;
adelino 1:a74e42cf52b2 14
adelino 1:a74e42cf52b2 15 myType=OBJ_SCALER;
adelino 1:a74e42cf52b2 16 myState=SCALER_STATE_RELEASED;
adelino 1:a74e42cf52b2 17
adelino 1:a74e42cf52b2 18 myScreen->addWidget((Widget*) this);
adelino 1:a74e42cf52b2 19 }
adelino 1:a74e42cf52b2 20 //-------------------------------------
adelino 1:a74e42cf52b2 21 Scaler::~Scaler(void)
adelino 1:a74e42cf52b2 22 {
adelino 1:a74e42cf52b2 23 }
adelino 1:a74e42cf52b2 24 //-------------------------------------
adelino 1:a74e42cf52b2 25 void Scaler::setColorBkg(Color _color)
adelino 1:a74e42cf52b2 26 {
adelino 1:a74e42cf52b2 27 myColorBkg=_color;
adelino 1:a74e42cf52b2 28 this->draw();
adelino 1:a74e42cf52b2 29 }
adelino 1:a74e42cf52b2 30 //--------------------------------------
adelino 1:a74e42cf52b2 31 void Scaler::setColorCursorUp(Color _color)
adelino 1:a74e42cf52b2 32 {
adelino 1:a74e42cf52b2 33 myColorCursorUp=_color;
adelino 1:a74e42cf52b2 34 this->draw();
adelino 1:a74e42cf52b2 35 }
adelino 1:a74e42cf52b2 36 //-------------------------------------
adelino 1:a74e42cf52b2 37 void Scaler::setColorCursorDown(Color _color)
adelino 1:a74e42cf52b2 38 {
adelino 1:a74e42cf52b2 39 myColorCursorDown=_color;
adelino 1:a74e42cf52b2 40 this->draw();
adelino 1:a74e42cf52b2 41 }
adelino 1:a74e42cf52b2 42 //-------------------------------------
adelino 1:a74e42cf52b2 43 void Scaler::draw(void)
adelino 1:a74e42cf52b2 44 {
adelino 1:a74e42cf52b2 45 if(myIsVisible==false)
adelino 1:a74e42cf52b2 46 return;
adelino 1:a74e42cf52b2 47 //
adelino 1:a74e42cf52b2 48 PicasoSerial* ps=0;
adelino 1:a74e42cf52b2 49 ps=myScreen->getPicasoSerial();
adelino 1:a74e42cf52b2 50
adelino 1:a74e42cf52b2 51 //rect up
adelino 1:a74e42cf52b2 52 if(ps!=0)
adelino 1:a74e42cf52b2 53 ps->draw_filled_rectangle(myX,myY,myX+myWidth,myY+myHeight/2,myColorBkg);
adelino 1:a74e42cf52b2 54
adelino 1:a74e42cf52b2 55 //rect down
adelino 1:a74e42cf52b2 56 if(ps!=0)
adelino 1:a74e42cf52b2 57 ps->draw_filled_rectangle(myX,myY+myHeight/2+3,myX+myWidth,myY+3+myHeight,myColorBkg);
adelino 1:a74e42cf52b2 58
adelino 1:a74e42cf52b2 59 //fleche up
adelino 1:a74e42cf52b2 60 UINT16 x1=myX+myWidth/2;
adelino 1:a74e42cf52b2 61 UINT16 y1=myY;
adelino 1:a74e42cf52b2 62
adelino 1:a74e42cf52b2 63 UINT16 x2=myX+myWidth;
adelino 1:a74e42cf52b2 64 UINT16 y2=myY+myHeight/2;
adelino 1:a74e42cf52b2 65
adelino 1:a74e42cf52b2 66 UINT16 x3=myX;
adelino 1:a74e42cf52b2 67 UINT16 y3=myY+myHeight/2;
adelino 1:a74e42cf52b2 68 if(ps!=0)
adelino 1:a74e42cf52b2 69 ps->draw_filled_triangle(x1,y1,x2,y2,x3,y3, myColorCursorUp);
adelino 1:a74e42cf52b2 70
adelino 1:a74e42cf52b2 71 //fleche down
adelino 1:a74e42cf52b2 72 x1=myX;
adelino 1:a74e42cf52b2 73 y1=myY+3+myHeight/2;
adelino 1:a74e42cf52b2 74
adelino 1:a74e42cf52b2 75 x2=myX+myWidth;
adelino 1:a74e42cf52b2 76 y2=y1;
adelino 1:a74e42cf52b2 77
adelino 1:a74e42cf52b2 78 x3=myX+myWidth/2;
adelino 1:a74e42cf52b2 79 y3=y2+myHeight/2;
adelino 1:a74e42cf52b2 80 if(ps!=0)
adelino 1:a74e42cf52b2 81 ps->draw_filled_triangle(x1,y1,x2,y2,x3,y3, myColorCursorDown);
adelino 1:a74e42cf52b2 82
adelino 1:a74e42cf52b2 83 //cadre
adelino 1:a74e42cf52b2 84 if(ps!=0)
adelino 1:a74e42cf52b2 85 ps->draw_rectangle(myX,myY,myX+myWidth,myY+myHeight+3,BLACK);
adelino 1:a74e42cf52b2 86
adelino 1:a74e42cf52b2 87 ps=0;
adelino 1:a74e42cf52b2 88
adelino 1:a74e42cf52b2 89 }
adelino 1:a74e42cf52b2 90 //-------------------------------------
adelino 1:a74e42cf52b2 91 void Scaler::setInvisible(bool _state)
adelino 1:a74e42cf52b2 92 {
adelino 1:a74e42cf52b2 93 // element devient invisible
adelino 1:a74e42cf52b2 94 if(_state==true) {
adelino 1:a74e42cf52b2 95 if(myIsVisible==false)
adelino 1:a74e42cf52b2 96 return;
adelino 1:a74e42cf52b2 97
adelino 1:a74e42cf52b2 98 myIsVisible=false;
adelino 1:a74e42cf52b2 99
adelino 1:a74e42cf52b2 100 Color c= myScreen->getColorBkg();
adelino 1:a74e42cf52b2 101
adelino 1:a74e42cf52b2 102 PicasoSerial* ps=0;
adelino 1:a74e42cf52b2 103 ps=myScreen->getPicasoSerial();
adelino 1:a74e42cf52b2 104
adelino 1:a74e42cf52b2 105 if(ps!=0) {
adelino 1:a74e42cf52b2 106 ps->draw_filled_rectangle(myX,myY,myX+myWidth,myY+myHeight+3,c);
adelino 1:a74e42cf52b2 107 }
adelino 1:a74e42cf52b2 108 ps=0;
adelino 1:a74e42cf52b2 109 }
adelino 1:a74e42cf52b2 110
adelino 1:a74e42cf52b2 111 // element devient visible
adelino 1:a74e42cf52b2 112 else {
adelino 1:a74e42cf52b2 113 myIsVisible=true;
adelino 1:a74e42cf52b2 114
adelino 1:a74e42cf52b2 115
adelino 1:a74e42cf52b2 116 this->draw();
adelino 1:a74e42cf52b2 117 }
adelino 1:a74e42cf52b2 118 }
adelino 1:a74e42cf52b2 119 //--------------------------------------
adelino 1:a74e42cf52b2 120 float Scaler::getValue(GraphicMessage* msg)
adelino 1:a74e42cf52b2 121 {
adelino 1:a74e42cf52b2 122 if(myIsVisible==false)
adelino 1:a74e42cf52b2 123 return 0.0;
adelino 1:a74e42cf52b2 124
adelino 1:a74e42cf52b2 125 float val=0.0;
adelino 1:a74e42cf52b2 126 //
adelino 1:a74e42cf52b2 127 TouchEvent ev=msg->event;
adelino 1:a74e42cf52b2 128 UINT16 yn=msg->posiY;
adelino 1:a74e42cf52b2 129
adelino 1:a74e42cf52b2 130 UINT16 y0=myY;
adelino 1:a74e42cf52b2 131 UINT16 ybut1=y0+myHeight/2;
adelino 1:a74e42cf52b2 132 UINT16 ybut2=y0+myHeight;
adelino 1:a74e42cf52b2 133 Color couleurUp=myColorCursorUp;
adelino 1:a74e42cf52b2 134 Color couleurDown=myColorCursorDown;
adelino 1:a74e42cf52b2 135
adelino 1:a74e42cf52b2 136 if(ev==EVENT_PRESS && myState==SCALER_STATE_RELEASED) {
adelino 1:a74e42cf52b2 137 //up ?
adelino 1:a74e42cf52b2 138 if(yn >= y0 && yn <= ybut1) {
adelino 1:a74e42cf52b2 139 myState=SCALER_STATE_PRESSED_UP;
adelino 1:a74e42cf52b2 140 setColorCursorUp(WHITE);
adelino 1:a74e42cf52b2 141 wait(0.1);
adelino 1:a74e42cf52b2 142 setColorCursorUp(couleurUp);
adelino 1:a74e42cf52b2 143
adelino 1:a74e42cf52b2 144 val=myValue+myValInc;
adelino 1:a74e42cf52b2 145 if(val >myValMax)
adelino 1:a74e42cf52b2 146 val=myValMax;
adelino 1:a74e42cf52b2 147
adelino 1:a74e42cf52b2 148 myValue=val;
adelino 1:a74e42cf52b2 149 }
adelino 1:a74e42cf52b2 150 //
adelino 1:a74e42cf52b2 151 //down?
adelino 1:a74e42cf52b2 152 if(yn >= ybut1 && yn <= ybut2) {
adelino 1:a74e42cf52b2 153 myState=SCALER_STATE_PRESSED_DOWN;
adelino 1:a74e42cf52b2 154 setColorCursorDown(WHITE);
adelino 1:a74e42cf52b2 155 wait(0.1);
adelino 1:a74e42cf52b2 156 setColorCursorDown(couleurDown);
adelino 1:a74e42cf52b2 157
adelino 1:a74e42cf52b2 158 val=myValue-myValInc;
adelino 1:a74e42cf52b2 159 if(val <myValMin)
adelino 1:a74e42cf52b2 160 val=myValMin;
adelino 1:a74e42cf52b2 161
adelino 1:a74e42cf52b2 162 myValue=val;
adelino 1:a74e42cf52b2 163 }
adelino 1:a74e42cf52b2 164 }
adelino 1:a74e42cf52b2 165 //
adelino 1:a74e42cf52b2 166 if(ev==EVENT_RELEASE || ev==EVENT_MOVE) {
adelino 1:a74e42cf52b2 167 myState=SCALER_STATE_RELEASED;
adelino 1:a74e42cf52b2 168 }
adelino 1:a74e42cf52b2 169
adelino 1:a74e42cf52b2 170 return myValue;
adelino 1:a74e42cf52b2 171 }