Funções Solidtec
tela.cpp@1:392e0e10ccf7, 2018-11-06 (annotated)
- Committer:
- marcusncunha
- Date:
- Tue Nov 06 16:28:00 2018 +0000
- Revision:
- 1:392e0e10ccf7
- Parent:
- 0:73f074c39876
11_06_2018
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
marcusncunha | 0:73f074c39876 | 1 | #include "tela.h" |
marcusncunha | 0:73f074c39876 | 2 | |
marcusncunha | 0:73f074c39876 | 3 | LCD_DISCO_F746NG _lcd; |
marcusncunha | 0:73f074c39876 | 4 | |
marcusncunha | 0:73f074c39876 | 5 | void desenharImagem(const unsigned long *PICTURE, uint16_t largura, uint16_t altura,uint16_t posX, uint16_t posY){ |
marcusncunha | 0:73f074c39876 | 6 | int i; |
marcusncunha | 0:73f074c39876 | 7 | int j; |
marcusncunha | 0:73f074c39876 | 8 | int contadorImagem = 0; |
marcusncunha | 0:73f074c39876 | 9 | for (i=0; i<altura; i++){ |
marcusncunha | 0:73f074c39876 | 10 | for (j=0; j<largura; j++){ |
marcusncunha | 0:73f074c39876 | 11 | _lcd.DrawPixel(j + posX,i + posY,PICTURE[contadorImagem]); |
marcusncunha | 0:73f074c39876 | 12 | contadorImagem++; |
marcusncunha | 0:73f074c39876 | 13 | } |
marcusncunha | 0:73f074c39876 | 14 | } |
marcusncunha | 0:73f074c39876 | 15 | } |
marcusncunha | 0:73f074c39876 | 16 | |
marcusncunha | 0:73f074c39876 | 17 | void desenharImagemKey(const unsigned long *PICTURE, dadosImagem imagem, uint32_t corDeFundo,uint16_t posX, uint16_t posY){ |
marcusncunha | 0:73f074c39876 | 18 | int i; |
marcusncunha | 0:73f074c39876 | 19 | int j; |
marcusncunha | 0:73f074c39876 | 20 | int contadorKey = 0; |
marcusncunha | 0:73f074c39876 | 21 | for (i=0; i<imagem.altura; i++){ |
marcusncunha | 0:73f074c39876 | 22 | for (j=0; j<imagem.largura; j++){ |
marcusncunha | 0:73f074c39876 | 23 | if (PICTURE[contadorKey] == imagem.corKey){ |
marcusncunha | 0:73f074c39876 | 24 | _lcd.DrawPixel(j + posX,i + posY,corDeFundo); |
marcusncunha | 0:73f074c39876 | 25 | } |
marcusncunha | 0:73f074c39876 | 26 | else |
marcusncunha | 0:73f074c39876 | 27 | { |
marcusncunha | 0:73f074c39876 | 28 | _lcd.DrawPixel(j + posX,i + posY,PICTURE[contadorKey]); |
marcusncunha | 0:73f074c39876 | 29 | } |
marcusncunha | 0:73f074c39876 | 30 | contadorKey++; |
marcusncunha | 0:73f074c39876 | 31 | } |
marcusncunha | 0:73f074c39876 | 32 | } |
marcusncunha | 0:73f074c39876 | 33 | } |
marcusncunha | 0:73f074c39876 | 34 | |
marcusncunha | 0:73f074c39876 | 35 | void desenhaBotaoComImagem (const unsigned long *PICTURE, dadosImagem imagem, uint32_t cor, botao *botaoObjeto){ |
marcusncunha | 0:73f074c39876 | 36 | int xDaImagem = botaoObjeto->retanguloObjeto.x + (botaoObjeto->retanguloObjeto.largura - imagem.largura) / 2; |
marcusncunha | 0:73f074c39876 | 37 | int yDaImagem = botaoObjeto->retanguloObjeto.y + (botaoObjeto->retanguloObjeto.altura - imagem.altura) / 2; |
marcusncunha | 0:73f074c39876 | 38 | _lcd.SetTextColor(cor); |
marcusncunha | 0:73f074c39876 | 39 | _lcd.FillRect(botaoObjeto->retanguloObjeto.x, botaoObjeto->retanguloObjeto.y, botaoObjeto->retanguloObjeto.largura, botaoObjeto->retanguloObjeto.altura); |
marcusncunha | 0:73f074c39876 | 40 | desenharImagemKey(PICTURE, imagem, cor, xDaImagem, yDaImagem); |
marcusncunha | 0:73f074c39876 | 41 | } |
marcusncunha | 0:73f074c39876 | 42 | |
marcusncunha | 1:392e0e10ccf7 | 43 | void desenhaBotao(uint32_t cor, botao *botaoObjeto){ |
marcusncunha | 1:392e0e10ccf7 | 44 | _lcd.SetTextColor(cor); |
marcusncunha | 1:392e0e10ccf7 | 45 | _lcd.FillRect(botaoObjeto->retanguloObjeto.x, botaoObjeto->retanguloObjeto.y, botaoObjeto->retanguloObjeto.largura, botaoObjeto->retanguloObjeto.altura); |
marcusncunha | 1:392e0e10ccf7 | 46 | } |
marcusncunha | 1:392e0e10ccf7 | 47 | |
marcusncunha | 0:73f074c39876 | 48 | void desenhaCaixaMensagem(const unsigned long *PICTURE, dadosImagem imagem, uint32_t corDeBordaCaixa, uint32_t corDeFundoCaixa, dadosRetanguloBase *baseMensagem){ |
marcusncunha | 0:73f074c39876 | 49 | int xDaImagem = baseMensagem->x + (baseMensagem->largura - imagem.largura) / 2; |
marcusncunha | 0:73f074c39876 | 50 | int yDaImagem = baseMensagem->y + (baseMensagem->altura - imagem.altura) / 2; |
marcusncunha | 0:73f074c39876 | 51 | _lcd.SetTextColor(corDeFundoCaixa); |
marcusncunha | 0:73f074c39876 | 52 | _lcd.FillRect(baseMensagem->x, baseMensagem->y, baseMensagem->largura, baseMensagem->altura); |
marcusncunha | 0:73f074c39876 | 53 | desenharImagemKey(PICTURE, imagem, corDeFundoCaixa, xDaImagem, yDaImagem); |
marcusncunha | 0:73f074c39876 | 54 | _lcd.SetTextColor(corDeBordaCaixa); |
marcusncunha | 0:73f074c39876 | 55 | _lcd.DrawRect(baseMensagem->x, baseMensagem->y, baseMensagem->largura, baseMensagem->altura); |
marcusncunha | 0:73f074c39876 | 56 | } |
marcusncunha | 0:73f074c39876 | 57 | |
marcusncunha | 0:73f074c39876 | 58 | void iniciarBotaoArea(botao *botaoObjeto, TS_StateTypeDef *toqueTela){ |
marcusncunha | 0:73f074c39876 | 59 | bool isDentroBotaoX = 0; |
marcusncunha | 0:73f074c39876 | 60 | bool isDentroBotaoY = 0; |
marcusncunha | 0:73f074c39876 | 61 | |
marcusncunha | 0:73f074c39876 | 62 | uint16_t cliqueX = toqueTela->touchX[0]; |
marcusncunha | 0:73f074c39876 | 63 | uint16_t cliqueY = toqueTela->touchY[0]; |
marcusncunha | 0:73f074c39876 | 64 | |
marcusncunha | 0:73f074c39876 | 65 | //Testar se foi na área do botão em x e marca o flag |
marcusncunha | 0:73f074c39876 | 66 | if((cliqueX > botaoObjeto->retanguloObjeto.x) && (cliqueX < ( botaoObjeto->retanguloObjeto.x + botaoObjeto->retanguloObjeto.largura))){ |
marcusncunha | 0:73f074c39876 | 67 | isDentroBotaoX = 1; |
marcusncunha | 0:73f074c39876 | 68 | } |
marcusncunha | 0:73f074c39876 | 69 | |
marcusncunha | 0:73f074c39876 | 70 | //Testar se foi na área do botão em y e marca o flag |
marcusncunha | 0:73f074c39876 | 71 | if((cliqueY > botaoObjeto->retanguloObjeto.y) && (cliqueY < ( botaoObjeto->retanguloObjeto.y + botaoObjeto->retanguloObjeto.altura))){ |
marcusncunha | 0:73f074c39876 | 72 | isDentroBotaoY = 1; |
marcusncunha | 0:73f074c39876 | 73 | } |
marcusncunha | 0:73f074c39876 | 74 | |
marcusncunha | 0:73f074c39876 | 75 | //Testa se está dentro da área do botão XY |
marcusncunha | 0:73f074c39876 | 76 | if(isDentroBotaoX && isDentroBotaoY){ |
marcusncunha | 0:73f074c39876 | 77 | //Se ele não estava pressionado |
marcusncunha | 0:73f074c39876 | 78 | if(!(botaoObjeto->isPressed)){ |
marcusncunha | 0:73f074c39876 | 79 | botaoObjeto->depressTime.start(); |
marcusncunha | 0:73f074c39876 | 80 | botaoObjeto->isPressed = 1; |
marcusncunha | 0:73f074c39876 | 81 | } |
marcusncunha | 0:73f074c39876 | 82 | }else{ |
marcusncunha | 0:73f074c39876 | 83 | //Se ele estava pressionado |
marcusncunha | 0:73f074c39876 | 84 | if((botaoObjeto->isPressed)){ |
marcusncunha | 0:73f074c39876 | 85 | botaoObjeto->depressTime.stop(); |
marcusncunha | 0:73f074c39876 | 86 | botaoObjeto->isPressed = 0; |
marcusncunha | 0:73f074c39876 | 87 | if(botaoObjeto->depressTime.read() > TEMPO_PRESSIONADO_BOTAO){ |
marcusncunha | 0:73f074c39876 | 88 | botaoObjeto->updateFlag = 1; |
marcusncunha | 0:73f074c39876 | 89 | } |
marcusncunha | 0:73f074c39876 | 90 | } |
marcusncunha | 0:73f074c39876 | 91 | } |
marcusncunha | 0:73f074c39876 | 92 | } |
marcusncunha | 0:73f074c39876 | 93 | |
marcusncunha | 0:73f074c39876 | 94 | void iniciarBotaoComImagem(const unsigned long *PICTURE, dadosImagem imagem, uint32_t corSemClick, uint32_t corComClick, botao *botaoObjeto, TS_StateTypeDef *toqueTela){ |
marcusncunha | 0:73f074c39876 | 95 | bool isDentroBotaoX = 0; |
marcusncunha | 0:73f074c39876 | 96 | bool isDentroBotaoY = 0; |
marcusncunha | 0:73f074c39876 | 97 | |
marcusncunha | 0:73f074c39876 | 98 | uint16_t cliqueX = toqueTela->touchX[0]; |
marcusncunha | 0:73f074c39876 | 99 | uint16_t cliqueY = toqueTela->touchY[0]; |
marcusncunha | 0:73f074c39876 | 100 | |
marcusncunha | 0:73f074c39876 | 101 | //Testar se foi na área do botão em x e marca o flag |
marcusncunha | 0:73f074c39876 | 102 | if((cliqueX > botaoObjeto->retanguloObjeto.x) && (cliqueX < ( botaoObjeto->retanguloObjeto.x + botaoObjeto->retanguloObjeto.largura))){ |
marcusncunha | 0:73f074c39876 | 103 | isDentroBotaoX = 1; |
marcusncunha | 0:73f074c39876 | 104 | } |
marcusncunha | 0:73f074c39876 | 105 | |
marcusncunha | 0:73f074c39876 | 106 | //Testar se foi na área do botão em y e marca o flag |
marcusncunha | 0:73f074c39876 | 107 | if((cliqueY > botaoObjeto->retanguloObjeto.y) && (cliqueY < ( botaoObjeto->retanguloObjeto.y + botaoObjeto->retanguloObjeto.altura))){ |
marcusncunha | 0:73f074c39876 | 108 | isDentroBotaoY = 1; |
marcusncunha | 0:73f074c39876 | 109 | } |
marcusncunha | 0:73f074c39876 | 110 | |
marcusncunha | 0:73f074c39876 | 111 | //Testa se está dentro da área do botão XY |
marcusncunha | 0:73f074c39876 | 112 | if(isDentroBotaoX && isDentroBotaoY){ |
marcusncunha | 0:73f074c39876 | 113 | //Se ele não estava pressionado |
marcusncunha | 0:73f074c39876 | 114 | if(!(botaoObjeto->isPressed)){ |
marcusncunha | 0:73f074c39876 | 115 | botaoObjeto->depressTime.start(); |
marcusncunha | 0:73f074c39876 | 116 | botaoObjeto->isPressed = 1; |
marcusncunha | 0:73f074c39876 | 117 | desenhaBotaoComImagem (PICTURE, imagem, corComClick, botaoObjeto); |
marcusncunha | 0:73f074c39876 | 118 | } |
marcusncunha | 0:73f074c39876 | 119 | }else{ |
marcusncunha | 0:73f074c39876 | 120 | //Se ele estava pressionado |
marcusncunha | 0:73f074c39876 | 121 | if((botaoObjeto->isPressed)){ |
marcusncunha | 0:73f074c39876 | 122 | botaoObjeto->depressTime.stop(); |
marcusncunha | 0:73f074c39876 | 123 | botaoObjeto->isPressed = 0; |
marcusncunha | 0:73f074c39876 | 124 | if(botaoObjeto->depressTime.read() > TEMPO_PRESSIONADO_BOTAO){ |
marcusncunha | 0:73f074c39876 | 125 | botaoObjeto->updateFlag = 1; |
marcusncunha | 0:73f074c39876 | 126 | } |
marcusncunha | 0:73f074c39876 | 127 | desenhaBotaoComImagem (PICTURE, imagem, corSemClick, botaoObjeto); |
marcusncunha | 0:73f074c39876 | 128 | } |
marcusncunha | 0:73f074c39876 | 129 | } |
marcusncunha | 0:73f074c39876 | 130 | } |
marcusncunha | 0:73f074c39876 | 131 | |
marcusncunha | 1:392e0e10ccf7 | 132 | void desenhaBotaoComLabel(string label, int tamanhoFonte, uint32_t corSemClickLabel, uint32_t corSemClick, botao *botaoObjeto){ |
marcusncunha | 1:392e0e10ccf7 | 133 | int diferencaX = 0; |
marcusncunha | 1:392e0e10ccf7 | 134 | int diferencaY = 0; |
marcusncunha | 1:392e0e10ccf7 | 135 | switch(tamanhoFonte){ |
marcusncunha | 1:392e0e10ccf7 | 136 | case 16: |
marcusncunha | 1:392e0e10ccf7 | 137 | _lcd.SetFont(&Font16); |
marcusncunha | 1:392e0e10ccf7 | 138 | diferencaX = label.length() * 12; |
marcusncunha | 1:392e0e10ccf7 | 139 | diferencaY = 15; |
marcusncunha | 1:392e0e10ccf7 | 140 | break; |
marcusncunha | 1:392e0e10ccf7 | 141 | case 20: |
marcusncunha | 1:392e0e10ccf7 | 142 | _lcd.SetFont(&Font20); |
marcusncunha | 1:392e0e10ccf7 | 143 | diferencaX = label.length() * 15; |
marcusncunha | 1:392e0e10ccf7 | 144 | diferencaY = 20; |
marcusncunha | 1:392e0e10ccf7 | 145 | break; |
marcusncunha | 1:392e0e10ccf7 | 146 | case 24: |
marcusncunha | 1:392e0e10ccf7 | 147 | _lcd.SetFont(&Font16); |
marcusncunha | 1:392e0e10ccf7 | 148 | diferencaX = label.length() * 18; |
marcusncunha | 1:392e0e10ccf7 | 149 | diferencaY = 25; |
marcusncunha | 1:392e0e10ccf7 | 150 | break; |
marcusncunha | 1:392e0e10ccf7 | 151 | default: |
marcusncunha | 1:392e0e10ccf7 | 152 | _lcd.SetFont(&Font12); |
marcusncunha | 1:392e0e10ccf7 | 153 | diferencaX = label.length() * 7; |
marcusncunha | 1:392e0e10ccf7 | 154 | diferencaY = 10; |
marcusncunha | 1:392e0e10ccf7 | 155 | break; |
marcusncunha | 1:392e0e10ccf7 | 156 | } |
marcusncunha | 1:392e0e10ccf7 | 157 | int xDoLabel = botaoObjeto->retanguloObjeto.x + (botaoObjeto->retanguloObjeto.largura - diferencaX) / 2; |
marcusncunha | 1:392e0e10ccf7 | 158 | int yDoLabel = botaoObjeto->retanguloObjeto.y + (botaoObjeto->retanguloObjeto.altura - diferencaY) / 2; |
marcusncunha | 1:392e0e10ccf7 | 159 | |
marcusncunha | 1:392e0e10ccf7 | 160 | desenhaBotao(corSemClick, botaoObjeto); |
marcusncunha | 1:392e0e10ccf7 | 161 | _lcd.SetTextColor(corSemClickLabel); |
marcusncunha | 1:392e0e10ccf7 | 162 | _lcd.SetBackColor(corSemClick); |
marcusncunha | 1:392e0e10ccf7 | 163 | _lcd.DisplayStringAt(xDoLabel, yDoLabel, (uint8_t *)label.c_str(), LEFT_MODE); |
marcusncunha | 1:392e0e10ccf7 | 164 | } |
marcusncunha | 1:392e0e10ccf7 | 165 | |
marcusncunha | 1:392e0e10ccf7 | 166 | void iniciarBotaoComLabel(string label, int tamanhoFonte, uint32_t corSemClickLabel, uint32_t corComClickLabel, uint32_t corSemClick, uint32_t corComClick, botao *botaoObjeto, TS_StateTypeDef *toqueTela){ |
marcusncunha | 1:392e0e10ccf7 | 167 | bool isDentroBotaoX = 0; |
marcusncunha | 1:392e0e10ccf7 | 168 | bool isDentroBotaoY = 0; |
marcusncunha | 1:392e0e10ccf7 | 169 | int diferencaX = 0; |
marcusncunha | 1:392e0e10ccf7 | 170 | int diferencaY = 0; |
marcusncunha | 1:392e0e10ccf7 | 171 | switch(tamanhoFonte){ |
marcusncunha | 1:392e0e10ccf7 | 172 | case 16: |
marcusncunha | 1:392e0e10ccf7 | 173 | _lcd.SetFont(&Font16); |
marcusncunha | 1:392e0e10ccf7 | 174 | diferencaX = label.length() * 12; |
marcusncunha | 1:392e0e10ccf7 | 175 | diferencaY = 15; |
marcusncunha | 1:392e0e10ccf7 | 176 | break; |
marcusncunha | 1:392e0e10ccf7 | 177 | case 20: |
marcusncunha | 1:392e0e10ccf7 | 178 | _lcd.SetFont(&Font20); |
marcusncunha | 1:392e0e10ccf7 | 179 | diferencaX = label.length() * 15; |
marcusncunha | 1:392e0e10ccf7 | 180 | diferencaY = 20; |
marcusncunha | 1:392e0e10ccf7 | 181 | break; |
marcusncunha | 1:392e0e10ccf7 | 182 | case 24: |
marcusncunha | 1:392e0e10ccf7 | 183 | _lcd.SetFont(&Font16); |
marcusncunha | 1:392e0e10ccf7 | 184 | diferencaX = label.length() * 18; |
marcusncunha | 1:392e0e10ccf7 | 185 | diferencaY = 25; |
marcusncunha | 1:392e0e10ccf7 | 186 | break; |
marcusncunha | 1:392e0e10ccf7 | 187 | default: |
marcusncunha | 1:392e0e10ccf7 | 188 | _lcd.SetFont(&Font12); |
marcusncunha | 1:392e0e10ccf7 | 189 | diferencaX = label.length() * 7; |
marcusncunha | 1:392e0e10ccf7 | 190 | diferencaY = 10; |
marcusncunha | 1:392e0e10ccf7 | 191 | break; |
marcusncunha | 1:392e0e10ccf7 | 192 | } |
marcusncunha | 1:392e0e10ccf7 | 193 | int xDoLabel = botaoObjeto->retanguloObjeto.x + (botaoObjeto->retanguloObjeto.largura - diferencaX) / 2; |
marcusncunha | 1:392e0e10ccf7 | 194 | int yDoLabel = botaoObjeto->retanguloObjeto.y + (botaoObjeto->retanguloObjeto.altura - diferencaY) / 2; |
marcusncunha | 1:392e0e10ccf7 | 195 | uint16_t cliqueX = toqueTela->touchX[0]; |
marcusncunha | 1:392e0e10ccf7 | 196 | uint16_t cliqueY = toqueTela->touchY[0]; |
marcusncunha | 1:392e0e10ccf7 | 197 | |
marcusncunha | 1:392e0e10ccf7 | 198 | //Testar se foi na área do botão em x e marca o flag |
marcusncunha | 1:392e0e10ccf7 | 199 | if((cliqueX > botaoObjeto->retanguloObjeto.x) && (cliqueX < ( botaoObjeto->retanguloObjeto.x + botaoObjeto->retanguloObjeto.largura))){ |
marcusncunha | 1:392e0e10ccf7 | 200 | isDentroBotaoX = 1; |
marcusncunha | 1:392e0e10ccf7 | 201 | } |
marcusncunha | 1:392e0e10ccf7 | 202 | |
marcusncunha | 1:392e0e10ccf7 | 203 | //Testar se foi na área do botão em y e marca o flag |
marcusncunha | 1:392e0e10ccf7 | 204 | if((cliqueY > botaoObjeto->retanguloObjeto.y) && (cliqueY < ( botaoObjeto->retanguloObjeto.y + botaoObjeto->retanguloObjeto.altura))){ |
marcusncunha | 1:392e0e10ccf7 | 205 | isDentroBotaoY = 1; |
marcusncunha | 1:392e0e10ccf7 | 206 | } |
marcusncunha | 1:392e0e10ccf7 | 207 | |
marcusncunha | 1:392e0e10ccf7 | 208 | //Testa se está dentro da área do botão XY |
marcusncunha | 1:392e0e10ccf7 | 209 | if(isDentroBotaoX && isDentroBotaoY){ |
marcusncunha | 1:392e0e10ccf7 | 210 | //Se ele não estava pressionado |
marcusncunha | 1:392e0e10ccf7 | 211 | if(!(botaoObjeto->isPressed)){ |
marcusncunha | 1:392e0e10ccf7 | 212 | botaoObjeto->depressTime.start(); |
marcusncunha | 1:392e0e10ccf7 | 213 | botaoObjeto->isPressed = 1; |
marcusncunha | 1:392e0e10ccf7 | 214 | desenhaBotao(corComClick, botaoObjeto); |
marcusncunha | 1:392e0e10ccf7 | 215 | _lcd.SetTextColor(corComClickLabel); |
marcusncunha | 1:392e0e10ccf7 | 216 | _lcd.SetBackColor(corComClick); |
marcusncunha | 1:392e0e10ccf7 | 217 | _lcd.DisplayStringAt(xDoLabel, yDoLabel, (uint8_t *)label.c_str(), LEFT_MODE); |
marcusncunha | 1:392e0e10ccf7 | 218 | } |
marcusncunha | 1:392e0e10ccf7 | 219 | }else{ |
marcusncunha | 1:392e0e10ccf7 | 220 | //Se ele estava pressionado |
marcusncunha | 1:392e0e10ccf7 | 221 | if((botaoObjeto->isPressed)){ |
marcusncunha | 1:392e0e10ccf7 | 222 | botaoObjeto->depressTime.stop(); |
marcusncunha | 1:392e0e10ccf7 | 223 | botaoObjeto->isPressed = 0; |
marcusncunha | 1:392e0e10ccf7 | 224 | if(botaoObjeto->depressTime.read() > TEMPO_PRESSIONADO_BOTAO){ |
marcusncunha | 1:392e0e10ccf7 | 225 | botaoObjeto->updateFlag = 1; |
marcusncunha | 1:392e0e10ccf7 | 226 | } |
marcusncunha | 1:392e0e10ccf7 | 227 | desenhaBotao(corSemClick, botaoObjeto); |
marcusncunha | 1:392e0e10ccf7 | 228 | _lcd.SetTextColor(corSemClickLabel); |
marcusncunha | 1:392e0e10ccf7 | 229 | _lcd.SetBackColor(corSemClick); |
marcusncunha | 1:392e0e10ccf7 | 230 | _lcd.DisplayStringAt(xDoLabel, yDoLabel, (uint8_t *)label.c_str(), LEFT_MODE); |
marcusncunha | 1:392e0e10ccf7 | 231 | } |
marcusncunha | 1:392e0e10ccf7 | 232 | } |
marcusncunha | 1:392e0e10ccf7 | 233 | } |
marcusncunha | 1:392e0e10ccf7 | 234 | |
marcusncunha | 0:73f074c39876 | 235 | void iniciarBotaoComImagemClick(const unsigned long *PICTURE, const unsigned long *PICTURECLK, dadosImagem imagem, dadosImagem imagemClk,uint32_t corSemClick, uint32_t corComClick, botao *botaoObjeto, TS_StateTypeDef *toqueTela){ |
marcusncunha | 0:73f074c39876 | 236 | bool isDentroBotaoX = 0; |
marcusncunha | 0:73f074c39876 | 237 | bool isDentroBotaoY = 0; |
marcusncunha | 0:73f074c39876 | 238 | |
marcusncunha | 0:73f074c39876 | 239 | uint16_t cliqueX = toqueTela->touchX[0]; |
marcusncunha | 0:73f074c39876 | 240 | uint16_t cliqueY = toqueTela->touchY[0]; |
marcusncunha | 0:73f074c39876 | 241 | |
marcusncunha | 0:73f074c39876 | 242 | //Testar se foi na área do botão em x e marca o flag |
marcusncunha | 0:73f074c39876 | 243 | if((cliqueX > botaoObjeto->retanguloObjeto.x) && (cliqueX < ( botaoObjeto->retanguloObjeto.x + botaoObjeto->retanguloObjeto.largura))){ |
marcusncunha | 0:73f074c39876 | 244 | isDentroBotaoX = 1; |
marcusncunha | 0:73f074c39876 | 245 | } |
marcusncunha | 0:73f074c39876 | 246 | |
marcusncunha | 0:73f074c39876 | 247 | //Testar se foi na área do botão em y e marca o flag |
marcusncunha | 0:73f074c39876 | 248 | if((cliqueY > botaoObjeto->retanguloObjeto.y) && (cliqueY < ( botaoObjeto->retanguloObjeto.y + botaoObjeto->retanguloObjeto.altura))){ |
marcusncunha | 0:73f074c39876 | 249 | isDentroBotaoY = 1; |
marcusncunha | 0:73f074c39876 | 250 | } |
marcusncunha | 0:73f074c39876 | 251 | |
marcusncunha | 0:73f074c39876 | 252 | //Testa se está dentro da área do botão XY |
marcusncunha | 0:73f074c39876 | 253 | if(isDentroBotaoX && isDentroBotaoY){ |
marcusncunha | 0:73f074c39876 | 254 | //Se ele não estava pressionado |
marcusncunha | 0:73f074c39876 | 255 | if(!(botaoObjeto->isPressed)){ |
marcusncunha | 0:73f074c39876 | 256 | botaoObjeto->depressTime.start(); |
marcusncunha | 0:73f074c39876 | 257 | botaoObjeto->isPressed = 1; |
marcusncunha | 0:73f074c39876 | 258 | desenhaBotaoComImagem (PICTURECLK, imagemClk, corComClick, botaoObjeto); |
marcusncunha | 0:73f074c39876 | 259 | } |
marcusncunha | 0:73f074c39876 | 260 | }else{ |
marcusncunha | 0:73f074c39876 | 261 | //Se ele estava pressionado |
marcusncunha | 0:73f074c39876 | 262 | if((botaoObjeto->isPressed)){ |
marcusncunha | 0:73f074c39876 | 263 | botaoObjeto->depressTime.stop(); |
marcusncunha | 0:73f074c39876 | 264 | botaoObjeto->isPressed = 0; |
marcusncunha | 0:73f074c39876 | 265 | if(botaoObjeto->depressTime.read() > TEMPO_PRESSIONADO_BOTAO){ |
marcusncunha | 0:73f074c39876 | 266 | botaoObjeto->updateFlag = 1; |
marcusncunha | 0:73f074c39876 | 267 | } |
marcusncunha | 0:73f074c39876 | 268 | desenhaBotaoComImagem (PICTURE, imagem, corSemClick, botaoObjeto); |
marcusncunha | 0:73f074c39876 | 269 | } |
marcusncunha | 0:73f074c39876 | 270 | } |
marcusncunha | 0:73f074c39876 | 271 | } |
marcusncunha | 0:73f074c39876 | 272 | |
marcusncunha | 0:73f074c39876 | 273 | void escreverInteiroTelaDireita(int variavel, int x, int y){ |
marcusncunha | 0:73f074c39876 | 274 | char txtTemporario[50]; |
marcusncunha | 0:73f074c39876 | 275 | sprintf(txtTemporario, "%d", variavel); |
marcusncunha | 0:73f074c39876 | 276 | _lcd.DisplayStringAt(x, y, (uint8_t *)&txtTemporario, RIGHT_MODE); |
marcusncunha | 0:73f074c39876 | 277 | } |
marcusncunha | 0:73f074c39876 | 278 | |
marcusncunha | 0:73f074c39876 | 279 | void escreverInteiroTelaEsquerda(int variavel, int x, int y){ |
marcusncunha | 0:73f074c39876 | 280 | char txtTemporario[50]; |
marcusncunha | 0:73f074c39876 | 281 | sprintf(txtTemporario, "%d", variavel); |
marcusncunha | 0:73f074c39876 | 282 | _lcd.DisplayStringAt(x, y, (uint8_t *)&txtTemporario, LEFT_MODE); |
marcusncunha | 0:73f074c39876 | 283 | } |
marcusncunha | 0:73f074c39876 | 284 | |
marcusncunha | 0:73f074c39876 | 285 | void escreverDoubleTelaDireita(double variavel, int x, int y){ |
marcusncunha | 0:73f074c39876 | 286 | char txtTemporario[50]; |
marcusncunha | 0:73f074c39876 | 287 | sprintf(txtTemporario, "%.2f", variavel); |
marcusncunha | 0:73f074c39876 | 288 | _lcd.DisplayStringAt(x, y, (uint8_t *)&txtTemporario, RIGHT_MODE); |
marcusncunha | 0:73f074c39876 | 289 | } |
marcusncunha | 0:73f074c39876 | 290 | |
marcusncunha | 0:73f074c39876 | 291 | void escreverDoubleTelaEsquerda(double variavel, int x, int y){ |
marcusncunha | 0:73f074c39876 | 292 | char txtTemporario[50]; |
marcusncunha | 0:73f074c39876 | 293 | sprintf(txtTemporario, "%.2f", variavel); |
marcusncunha | 0:73f074c39876 | 294 | _lcd.DisplayStringAt(x, y, (uint8_t *)&txtTemporario, LEFT_MODE); |
marcusncunha | 0:73f074c39876 | 295 | } |
marcusncunha | 0:73f074c39876 | 296 | |
marcusncunha | 0:73f074c39876 | 297 |