Class virtual button for lcd and ts

Committer:
jlpadiolleau
Date:
Sat Dec 02 11:47:56 2017 +0000
Revision:
0:055a9eb7d5eb
Correction du TP4 d'info1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jlpadiolleau 0:055a9eb7d5eb 1 #include "buttons.h"
jlpadiolleau 0:055a9eb7d5eb 2
jlpadiolleau 0:055a9eb7d5eb 3 button::button(uint16_t x, uint16_t y, uint16_t w, uint16_t h,uint32_t colorOn,uint32_t colorOff)
jlpadiolleau 0:055a9eb7d5eb 4 {
jlpadiolleau 0:055a9eb7d5eb 5
jlpadiolleau 0:055a9eb7d5eb 6 m_colorOn=colorOn;
jlpadiolleau 0:055a9eb7d5eb 7 m_colorOff=colorOff;
jlpadiolleau 0:055a9eb7d5eb 8 m_x=x;
jlpadiolleau 0:055a9eb7d5eb 9 m_y=y;
jlpadiolleau 0:055a9eb7d5eb 10 m_w=w;
jlpadiolleau 0:055a9eb7d5eb 11 m_h=h;
jlpadiolleau 0:055a9eb7d5eb 12 m_state=false;
jlpadiolleau 0:055a9eb7d5eb 13 m_memoState=false;
jlpadiolleau 0:055a9eb7d5eb 14 draw();
jlpadiolleau 0:055a9eb7d5eb 15 BSP_TS_Init(480,272);
jlpadiolleau 0:055a9eb7d5eb 16 m_touchRead.attach(this,&button::readState,0.2);
jlpadiolleau 0:055a9eb7d5eb 17
jlpadiolleau 0:055a9eb7d5eb 18 }
jlpadiolleau 0:055a9eb7d5eb 19
jlpadiolleau 0:055a9eb7d5eb 20 /* Changement d'état du bouton */
jlpadiolleau 0:055a9eb7d5eb 21 void button::draw(void)
jlpadiolleau 0:055a9eb7d5eb 22 {
jlpadiolleau 0:055a9eb7d5eb 23 uint32_t oldColor;
jlpadiolleau 0:055a9eb7d5eb 24 oldColor=BSP_LCD_GetTextColor();
jlpadiolleau 0:055a9eb7d5eb 25 if (m_state==true) BSP_LCD_SetTextColor(m_colorOn);
jlpadiolleau 0:055a9eb7d5eb 26 else BSP_LCD_SetTextColor(m_colorOff);
jlpadiolleau 0:055a9eb7d5eb 27 BSP_LCD_FillRect(m_x,m_y,m_w,m_h);
jlpadiolleau 0:055a9eb7d5eb 28 BSP_LCD_SetTextColor(oldColor);
jlpadiolleau 0:055a9eb7d5eb 29
jlpadiolleau 0:055a9eb7d5eb 30 }
jlpadiolleau 0:055a9eb7d5eb 31
jlpadiolleau 0:055a9eb7d5eb 32 /* Lecture touche dans la zone du bouton */
jlpadiolleau 0:055a9eb7d5eb 33 void button::readState(void)
jlpadiolleau 0:055a9eb7d5eb 34 {
jlpadiolleau 0:055a9eb7d5eb 35 uint16_t Xpos,Ypos;
jlpadiolleau 0:055a9eb7d5eb 36 TS_StateTypeDef tsState; // Déclaration d'une structure liée au TouchScreen
jlpadiolleau 0:055a9eb7d5eb 37 BSP_TS_GetState(&tsState);
jlpadiolleau 0:055a9eb7d5eb 38 if (tsState.touchDetected)
jlpadiolleau 0:055a9eb7d5eb 39 {
jlpadiolleau 0:055a9eb7d5eb 40 Xpos=tsState.touchX[0]; // Lecture de la position
jlpadiolleau 0:055a9eb7d5eb 41 Ypos=tsState.touchY[0];
jlpadiolleau 0:055a9eb7d5eb 42 if(( Xpos > m_x) && (Xpos < m_x+m_w) && (Ypos > m_y) && (Ypos < m_y+m_h)) m_state=true;
jlpadiolleau 0:055a9eb7d5eb 43 else m_state=false;
jlpadiolleau 0:055a9eb7d5eb 44
jlpadiolleau 0:055a9eb7d5eb 45 }
jlpadiolleau 0:055a9eb7d5eb 46 else m_state=false;
jlpadiolleau 0:055a9eb7d5eb 47 if (m_state!=m_memoState)
jlpadiolleau 0:055a9eb7d5eb 48 {
jlpadiolleau 0:055a9eb7d5eb 49 draw();
jlpadiolleau 0:055a9eb7d5eb 50 m_memoState=m_state;
jlpadiolleau 0:055a9eb7d5eb 51 }
jlpadiolleau 0:055a9eb7d5eb 52
jlpadiolleau 0:055a9eb7d5eb 53 }
jlpadiolleau 0:055a9eb7d5eb 54 void button::readState(void){}