Slider class on LCD / Touch screen
Slider.cpp@0:89d154d0806c, 2017-04-07 (annotated)
- Committer:
- jlpadiolleau
- Date:
- Fri Apr 07 11:40:27 2017 +0000
- Revision:
- 0:89d154d0806c
Hi
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jlpadiolleau | 0:89d154d0806c | 1 | #include "Slider.h" |
jlpadiolleau | 0:89d154d0806c | 2 | #include <stdio.h> |
jlpadiolleau | 0:89d154d0806c | 3 | |
jlpadiolleau | 0:89d154d0806c | 4 | /* Constructor: define dimensions, positions and colors */ |
jlpadiolleau | 0:89d154d0806c | 5 | Slider::Slider(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint32_t c1, uint32_t c2) |
jlpadiolleau | 0:89d154d0806c | 6 | { |
jlpadiolleau | 0:89d154d0806c | 7 | if(x<(maxWidth-w)) xpos=x; |
jlpadiolleau | 0:89d154d0806c | 8 | else xpos=maxWidth-w; |
jlpadiolleau | 0:89d154d0806c | 9 | if(y<(maxHeight-h)) ypos=y; |
jlpadiolleau | 0:89d154d0806c | 10 | else ypos=maxHeight-h; |
jlpadiolleau | 0:89d154d0806c | 11 | if(w<(maxWidth)) width=w; |
jlpadiolleau | 0:89d154d0806c | 12 | else width=maxWidth; |
jlpadiolleau | 0:89d154d0806c | 13 | if(h<(maxHeight)) height=h; |
jlpadiolleau | 0:89d154d0806c | 14 | else height=maxHeight; |
jlpadiolleau | 0:89d154d0806c | 15 | color1=c1; |
jlpadiolleau | 0:89d154d0806c | 16 | color2=c2; |
jlpadiolleau | 0:89d154d0806c | 17 | value=128; |
jlpadiolleau | 0:89d154d0806c | 18 | } |
jlpadiolleau | 0:89d154d0806c | 19 | |
jlpadiolleau | 0:89d154d0806c | 20 | /* Draw the slider */ |
jlpadiolleau | 0:89d154d0806c | 21 | void Slider::Show() |
jlpadiolleau | 0:89d154d0806c | 22 | { |
jlpadiolleau | 0:89d154d0806c | 23 | char text[10]; |
jlpadiolleau | 0:89d154d0806c | 24 | uint32_t OldTextColor; |
jlpadiolleau | 0:89d154d0806c | 25 | uint32_t OldBackColor; |
jlpadiolleau | 0:89d154d0806c | 26 | sFONT *font; |
jlpadiolleau | 0:89d154d0806c | 27 | |
jlpadiolleau | 0:89d154d0806c | 28 | // Save previous colors and font |
jlpadiolleau | 0:89d154d0806c | 29 | OldTextColor=BSP_LCD_GetTextColor(); |
jlpadiolleau | 0:89d154d0806c | 30 | OldBackColor=BSP_LCD_GetBackColor(); |
jlpadiolleau | 0:89d154d0806c | 31 | font = BSP_LCD_GetFont(); |
jlpadiolleau | 0:89d154d0806c | 32 | |
jlpadiolleau | 0:89d154d0806c | 33 | // Draw Slider |
jlpadiolleau | 0:89d154d0806c | 34 | BSP_LCD_SetTextColor(color2); |
jlpadiolleau | 0:89d154d0806c | 35 | BSP_LCD_FillRect(xpos,ypos,width,(height*(255-value))/255); |
jlpadiolleau | 0:89d154d0806c | 36 | BSP_LCD_SetTextColor(color1); |
jlpadiolleau | 0:89d154d0806c | 37 | BSP_LCD_DrawRect(xpos,ypos,width,(height*(255-value))/255); |
jlpadiolleau | 0:89d154d0806c | 38 | BSP_LCD_FillRect(xpos,ypos+(height*(255-value))/255,width,(height*value)/255); |
jlpadiolleau | 0:89d154d0806c | 39 | |
jlpadiolleau | 0:89d154d0806c | 40 | //Draw text value |
jlpadiolleau | 0:89d154d0806c | 41 | BSP_LCD_SetFont(&Font16); |
jlpadiolleau | 0:89d154d0806c | 42 | BSP_LCD_SetBackColor(color2); |
jlpadiolleau | 0:89d154d0806c | 43 | sprintf(text,"%3d",value); |
jlpadiolleau | 0:89d154d0806c | 44 | BSP_LCD_DisplayStringAt(xpos,ypos+height,(uint8_t*)text,LEFT_MODE); |
jlpadiolleau | 0:89d154d0806c | 45 | |
jlpadiolleau | 0:89d154d0806c | 46 | //Restore colors and fonts |
jlpadiolleau | 0:89d154d0806c | 47 | BSP_LCD_SetTextColor(OldTextColor); |
jlpadiolleau | 0:89d154d0806c | 48 | BSP_LCD_SetBackColor(OldBackColor); |
jlpadiolleau | 0:89d154d0806c | 49 | BSP_LCD_SetFont(font); |
jlpadiolleau | 0:89d154d0806c | 50 | } |
jlpadiolleau | 0:89d154d0806c | 51 | |
jlpadiolleau | 0:89d154d0806c | 52 | /* Move the slider if TouchScreen is in area*/ |
jlpadiolleau | 0:89d154d0806c | 53 | void Slider::Move(uint16_t x, uint16_t y) |
jlpadiolleau | 0:89d154d0806c | 54 | { |
jlpadiolleau | 0:89d154d0806c | 55 | if ((x>=xpos) && (x<=xpos+width) && (y>=ypos) && (y<=ypos+height)) { //(y>=ypos+value*height/100-10) && (y<=ypos+value*height/100+10)) |
jlpadiolleau | 0:89d154d0806c | 56 | value=255-(y-ypos)*255/height; |
jlpadiolleau | 0:89d154d0806c | 57 | Show(); |
jlpadiolleau | 0:89d154d0806c | 58 | } |
jlpadiolleau | 0:89d154d0806c | 59 | } |
jlpadiolleau | 0:89d154d0806c | 60 | |
jlpadiolleau | 0:89d154d0806c | 61 | /* read the slider value */ |
jlpadiolleau | 0:89d154d0806c | 62 | uint16_t Slider::GetValue() |
jlpadiolleau | 0:89d154d0806c | 63 | { |
jlpadiolleau | 0:89d154d0806c | 64 | return value; |
jlpadiolleau | 0:89d154d0806c | 65 | } |
jlpadiolleau | 0:89d154d0806c | 66 | |
jlpadiolleau | 0:89d154d0806c | 67 | /* write the slider value */ |
jlpadiolleau | 0:89d154d0806c | 68 | void Slider::SetValue(uint16_t v) |
jlpadiolleau | 0:89d154d0806c | 69 | { |
jlpadiolleau | 0:89d154d0806c | 70 | if (v<=255) value=v; |
jlpadiolleau | 0:89d154d0806c | 71 | else value=255; |
jlpadiolleau | 0:89d154d0806c | 72 | Show(); |
jlpadiolleau | 0:89d154d0806c | 73 | } |
jlpadiolleau | 0:89d154d0806c | 74 | |
jlpadiolleau | 0:89d154d0806c | 75 | /* Destructor */ |
jlpadiolleau | 0:89d154d0806c | 76 | Slider::~Slider() |
jlpadiolleau | 0:89d154d0806c | 77 | { |
jlpadiolleau | 0:89d154d0806c | 78 | } |