Class virtual button for lcd and ts
buttons.cpp@0:055a9eb7d5eb, 2017-12-02 (annotated)
- 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?
User | Revision | Line number | New 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){} |