Funções Solidtec

Committer:
marcusncunha
Date:
Fri Dec 08 19:15:28 2017 +0000
Revision:
0:73f074c39876
Child:
1:392e0e10ccf7
Solidtec

Who changed what in which revision?

UserRevisionLine numberNew 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 0:73f074c39876 43 void desenhaCaixaMensagem(const unsigned long *PICTURE, dadosImagem imagem, uint32_t corDeBordaCaixa, uint32_t corDeFundoCaixa, dadosRetanguloBase *baseMensagem){
marcusncunha 0:73f074c39876 44 int xDaImagem = baseMensagem->x + (baseMensagem->largura - imagem.largura) / 2;
marcusncunha 0:73f074c39876 45 int yDaImagem = baseMensagem->y + (baseMensagem->altura - imagem.altura) / 2;
marcusncunha 0:73f074c39876 46 _lcd.SetTextColor(corDeFundoCaixa);
marcusncunha 0:73f074c39876 47 _lcd.FillRect(baseMensagem->x, baseMensagem->y, baseMensagem->largura, baseMensagem->altura);
marcusncunha 0:73f074c39876 48 desenharImagemKey(PICTURE, imagem, corDeFundoCaixa, xDaImagem, yDaImagem);
marcusncunha 0:73f074c39876 49 _lcd.SetTextColor(corDeBordaCaixa);
marcusncunha 0:73f074c39876 50 _lcd.DrawRect(baseMensagem->x, baseMensagem->y, baseMensagem->largura, baseMensagem->altura);
marcusncunha 0:73f074c39876 51 }
marcusncunha 0:73f074c39876 52
marcusncunha 0:73f074c39876 53 void iniciarBotaoArea(botao *botaoObjeto, TS_StateTypeDef *toqueTela){
marcusncunha 0:73f074c39876 54 bool isDentroBotaoX = 0;
marcusncunha 0:73f074c39876 55 bool isDentroBotaoY = 0;
marcusncunha 0:73f074c39876 56
marcusncunha 0:73f074c39876 57 uint16_t cliqueX = toqueTela->touchX[0];
marcusncunha 0:73f074c39876 58 uint16_t cliqueY = toqueTela->touchY[0];
marcusncunha 0:73f074c39876 59
marcusncunha 0:73f074c39876 60 //Testar se foi na área do botão em x e marca o flag
marcusncunha 0:73f074c39876 61 if((cliqueX > botaoObjeto->retanguloObjeto.x) && (cliqueX < ( botaoObjeto->retanguloObjeto.x + botaoObjeto->retanguloObjeto.largura))){
marcusncunha 0:73f074c39876 62 isDentroBotaoX = 1;
marcusncunha 0:73f074c39876 63 }
marcusncunha 0:73f074c39876 64
marcusncunha 0:73f074c39876 65 //Testar se foi na área do botão em y e marca o flag
marcusncunha 0:73f074c39876 66 if((cliqueY > botaoObjeto->retanguloObjeto.y) && (cliqueY < ( botaoObjeto->retanguloObjeto.y + botaoObjeto->retanguloObjeto.altura))){
marcusncunha 0:73f074c39876 67 isDentroBotaoY = 1;
marcusncunha 0:73f074c39876 68 }
marcusncunha 0:73f074c39876 69
marcusncunha 0:73f074c39876 70 //Testa se está dentro da área do botão XY
marcusncunha 0:73f074c39876 71 if(isDentroBotaoX && isDentroBotaoY){
marcusncunha 0:73f074c39876 72 //Se ele não estava pressionado
marcusncunha 0:73f074c39876 73 if(!(botaoObjeto->isPressed)){
marcusncunha 0:73f074c39876 74 botaoObjeto->depressTime.start();
marcusncunha 0:73f074c39876 75 botaoObjeto->isPressed = 1;
marcusncunha 0:73f074c39876 76 }
marcusncunha 0:73f074c39876 77 }else{
marcusncunha 0:73f074c39876 78 //Se ele estava pressionado
marcusncunha 0:73f074c39876 79 if((botaoObjeto->isPressed)){
marcusncunha 0:73f074c39876 80 botaoObjeto->depressTime.stop();
marcusncunha 0:73f074c39876 81 botaoObjeto->isPressed = 0;
marcusncunha 0:73f074c39876 82 if(botaoObjeto->depressTime.read() > TEMPO_PRESSIONADO_BOTAO){
marcusncunha 0:73f074c39876 83 botaoObjeto->updateFlag = 1;
marcusncunha 0:73f074c39876 84 }
marcusncunha 0:73f074c39876 85 }
marcusncunha 0:73f074c39876 86 }
marcusncunha 0:73f074c39876 87 }
marcusncunha 0:73f074c39876 88
marcusncunha 0:73f074c39876 89 void iniciarBotaoComImagem(const unsigned long *PICTURE, dadosImagem imagem, uint32_t corSemClick, uint32_t corComClick, botao *botaoObjeto, TS_StateTypeDef *toqueTela){
marcusncunha 0:73f074c39876 90 bool isDentroBotaoX = 0;
marcusncunha 0:73f074c39876 91 bool isDentroBotaoY = 0;
marcusncunha 0:73f074c39876 92
marcusncunha 0:73f074c39876 93 uint16_t cliqueX = toqueTela->touchX[0];
marcusncunha 0:73f074c39876 94 uint16_t cliqueY = toqueTela->touchY[0];
marcusncunha 0:73f074c39876 95
marcusncunha 0:73f074c39876 96 //Testar se foi na área do botão em x e marca o flag
marcusncunha 0:73f074c39876 97 if((cliqueX > botaoObjeto->retanguloObjeto.x) && (cliqueX < ( botaoObjeto->retanguloObjeto.x + botaoObjeto->retanguloObjeto.largura))){
marcusncunha 0:73f074c39876 98 isDentroBotaoX = 1;
marcusncunha 0:73f074c39876 99 }
marcusncunha 0:73f074c39876 100
marcusncunha 0:73f074c39876 101 //Testar se foi na área do botão em y e marca o flag
marcusncunha 0:73f074c39876 102 if((cliqueY > botaoObjeto->retanguloObjeto.y) && (cliqueY < ( botaoObjeto->retanguloObjeto.y + botaoObjeto->retanguloObjeto.altura))){
marcusncunha 0:73f074c39876 103 isDentroBotaoY = 1;
marcusncunha 0:73f074c39876 104 }
marcusncunha 0:73f074c39876 105
marcusncunha 0:73f074c39876 106 //Testa se está dentro da área do botão XY
marcusncunha 0:73f074c39876 107 if(isDentroBotaoX && isDentroBotaoY){
marcusncunha 0:73f074c39876 108 //Se ele não estava pressionado
marcusncunha 0:73f074c39876 109 if(!(botaoObjeto->isPressed)){
marcusncunha 0:73f074c39876 110 botaoObjeto->depressTime.start();
marcusncunha 0:73f074c39876 111 botaoObjeto->isPressed = 1;
marcusncunha 0:73f074c39876 112 desenhaBotaoComImagem (PICTURE, imagem, corComClick, botaoObjeto);
marcusncunha 0:73f074c39876 113 }
marcusncunha 0:73f074c39876 114 }else{
marcusncunha 0:73f074c39876 115 //Se ele estava pressionado
marcusncunha 0:73f074c39876 116 if((botaoObjeto->isPressed)){
marcusncunha 0:73f074c39876 117 botaoObjeto->depressTime.stop();
marcusncunha 0:73f074c39876 118 botaoObjeto->isPressed = 0;
marcusncunha 0:73f074c39876 119 if(botaoObjeto->depressTime.read() > TEMPO_PRESSIONADO_BOTAO){
marcusncunha 0:73f074c39876 120 botaoObjeto->updateFlag = 1;
marcusncunha 0:73f074c39876 121 }
marcusncunha 0:73f074c39876 122 desenhaBotaoComImagem (PICTURE, imagem, corSemClick, botaoObjeto);
marcusncunha 0:73f074c39876 123 }
marcusncunha 0:73f074c39876 124 }
marcusncunha 0:73f074c39876 125 }
marcusncunha 0:73f074c39876 126
marcusncunha 0:73f074c39876 127 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 128 bool isDentroBotaoX = 0;
marcusncunha 0:73f074c39876 129 bool isDentroBotaoY = 0;
marcusncunha 0:73f074c39876 130
marcusncunha 0:73f074c39876 131 uint16_t cliqueX = toqueTela->touchX[0];
marcusncunha 0:73f074c39876 132 uint16_t cliqueY = toqueTela->touchY[0];
marcusncunha 0:73f074c39876 133
marcusncunha 0:73f074c39876 134 //Testar se foi na área do botão em x e marca o flag
marcusncunha 0:73f074c39876 135 if((cliqueX > botaoObjeto->retanguloObjeto.x) && (cliqueX < ( botaoObjeto->retanguloObjeto.x + botaoObjeto->retanguloObjeto.largura))){
marcusncunha 0:73f074c39876 136 isDentroBotaoX = 1;
marcusncunha 0:73f074c39876 137 }
marcusncunha 0:73f074c39876 138
marcusncunha 0:73f074c39876 139 //Testar se foi na área do botão em y e marca o flag
marcusncunha 0:73f074c39876 140 if((cliqueY > botaoObjeto->retanguloObjeto.y) && (cliqueY < ( botaoObjeto->retanguloObjeto.y + botaoObjeto->retanguloObjeto.altura))){
marcusncunha 0:73f074c39876 141 isDentroBotaoY = 1;
marcusncunha 0:73f074c39876 142 }
marcusncunha 0:73f074c39876 143
marcusncunha 0:73f074c39876 144 //Testa se está dentro da área do botão XY
marcusncunha 0:73f074c39876 145 if(isDentroBotaoX && isDentroBotaoY){
marcusncunha 0:73f074c39876 146 //Se ele não estava pressionado
marcusncunha 0:73f074c39876 147 if(!(botaoObjeto->isPressed)){
marcusncunha 0:73f074c39876 148 botaoObjeto->depressTime.start();
marcusncunha 0:73f074c39876 149 botaoObjeto->isPressed = 1;
marcusncunha 0:73f074c39876 150 desenhaBotaoComImagem (PICTURECLK, imagemClk, corComClick, botaoObjeto);
marcusncunha 0:73f074c39876 151 }
marcusncunha 0:73f074c39876 152 }else{
marcusncunha 0:73f074c39876 153 //Se ele estava pressionado
marcusncunha 0:73f074c39876 154 if((botaoObjeto->isPressed)){
marcusncunha 0:73f074c39876 155 botaoObjeto->depressTime.stop();
marcusncunha 0:73f074c39876 156 botaoObjeto->isPressed = 0;
marcusncunha 0:73f074c39876 157 if(botaoObjeto->depressTime.read() > TEMPO_PRESSIONADO_BOTAO){
marcusncunha 0:73f074c39876 158 botaoObjeto->updateFlag = 1;
marcusncunha 0:73f074c39876 159 }
marcusncunha 0:73f074c39876 160 desenhaBotaoComImagem (PICTURE, imagem, corSemClick, botaoObjeto);
marcusncunha 0:73f074c39876 161 }
marcusncunha 0:73f074c39876 162 }
marcusncunha 0:73f074c39876 163 }
marcusncunha 0:73f074c39876 164
marcusncunha 0:73f074c39876 165 void escreverInteiroTelaDireita(int variavel, int x, int y){
marcusncunha 0:73f074c39876 166 char txtTemporario[50];
marcusncunha 0:73f074c39876 167 sprintf(txtTemporario, "%d", variavel);
marcusncunha 0:73f074c39876 168 _lcd.DisplayStringAt(x, y, (uint8_t *)&txtTemporario, RIGHT_MODE);
marcusncunha 0:73f074c39876 169 }
marcusncunha 0:73f074c39876 170
marcusncunha 0:73f074c39876 171 void escreverInteiroTelaEsquerda(int variavel, int x, int y){
marcusncunha 0:73f074c39876 172 char txtTemporario[50];
marcusncunha 0:73f074c39876 173 sprintf(txtTemporario, "%d", variavel);
marcusncunha 0:73f074c39876 174 _lcd.DisplayStringAt(x, y, (uint8_t *)&txtTemporario, LEFT_MODE);
marcusncunha 0:73f074c39876 175 }
marcusncunha 0:73f074c39876 176
marcusncunha 0:73f074c39876 177 void escreverDoubleTelaDireita(double variavel, int x, int y){
marcusncunha 0:73f074c39876 178 char txtTemporario[50];
marcusncunha 0:73f074c39876 179 sprintf(txtTemporario, "%.2f", variavel);
marcusncunha 0:73f074c39876 180 _lcd.DisplayStringAt(x, y, (uint8_t *)&txtTemporario, RIGHT_MODE);
marcusncunha 0:73f074c39876 181 }
marcusncunha 0:73f074c39876 182
marcusncunha 0:73f074c39876 183 void escreverDoubleTelaEsquerda(double variavel, int x, int y){
marcusncunha 0:73f074c39876 184 char txtTemporario[50];
marcusncunha 0:73f074c39876 185 sprintf(txtTemporario, "%.2f", variavel);
marcusncunha 0:73f074c39876 186 _lcd.DisplayStringAt(x, y, (uint8_t *)&txtTemporario, LEFT_MODE);
marcusncunha 0:73f074c39876 187 }
marcusncunha 0:73f074c39876 188
marcusncunha 0:73f074c39876 189