Slider class on LCD / Touch screen

Dependents:   TestLCD

Committer:
jlpadiolleau
Date:
Fri Apr 07 11:40:27 2017 +0000
Revision:
0:89d154d0806c
Hi

Who changed what in which revision?

UserRevisionLine numberNew 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 }