Interfaçage NeoPixel Ring 12, LPRO MECSE, Arnaud A.
Diff: view1.cpp
- Revision:
- 1:9bcbc2be6d52
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/view1.cpp Mon Jun 22 21:56:03 2020 +0000 @@ -0,0 +1,451 @@ +#include "view1.h" + +View1::View1(int width, int height) : m_width(width), m_height(height){} + +View1::~View1() //Destructeur de bouton +{ + for (Button * button : m_buttonList) { + delete button; + } + m_buttonList.clear(); +} + + +void View1::contain(int x, int y) +{ + if(screenReleased){ + screenReleased=false; + for (Button * button : m_buttonList) { + if (button->contain(x,y)) { + updatePlusMinus(button); + updateLEDS(button); + updateSetNewColorAndCancel(button); + updateViewChanged(button); + } + } + } +} + + +void View1::draw() +{ + BSP_LCD_Clear(m_bgColor); //Enlève l'affichage du début + for (Button * button : m_buttonList) { + button->draw(); + } + drawText(); +} + + +void View1::initView(){ + for(int y=0; y<12; y++){ + strcpy(RGBmap[y], "000000"); + } + m_bgColor = LCD_COLOR_BLACK; + //LEDS + led0->setText(""); + led1->setText(""); + led2->setText(""); + led3->setText(""); + led4->setText(""); + led5->setText(""); + led6->setText(""); + led7->setText(""); + led8->setText(""); + led9->setText(""); + led10->setText(""); + led11->setText(""); + //RGB TextView + redTextview->setText("000"); + greenTextview->setText("000"); + blueTextview->setText("000"); + //RGB + and - + plusRED->setText("+1"); + minusRED->setText("-1"); + plusGREEN->setText("+1"); + minusGREEN->setText("-1"); + plusBLUE->setText("+1"); + minusBLUE->setText("-1"); + plus10RED->setText("+10"); + minus10RED->setText("-10"); + plus10GREEN->setText("+10"); + minus10GREEN->setText("-10"); + plus10BLUE->setText("+10"); + minus10BLUE->setText("-10"); + //SET NEW COLOR + setNewColor->setText("SET NEW COLOR"); + cancel->setText("CANCEL"); + //Animations tab + animations->setText("Animations", LCD_COLOR_WHITE); + hideTop->setText(""); + hideRight->setText(""); + //LEDs tab + leds->setText("LEDS", LCD_COLOR_BLACK); + //LEDS buttons + m_buttonList.push_front(led0); + m_buttonList.push_front(led1); + m_buttonList.push_front(led2); + m_buttonList.push_front(led3); + m_buttonList.push_front(led4); + m_buttonList.push_front(led5); + m_buttonList.push_front(led6); + m_buttonList.push_front(led7); + m_buttonList.push_front(led8); + m_buttonList.push_front(led9); + m_buttonList.push_front(led10); + m_buttonList.push_front(led11); + //RGB TextView + m_buttonList.push_front(redTextview); + m_buttonList.push_front(greenTextview); + m_buttonList.push_front(blueTextview); + //RGB + and - + m_buttonList.push_front(plusRED); + m_buttonList.push_front(minusRED); + m_buttonList.push_front(plusGREEN); + m_buttonList.push_front(minusGREEN); + m_buttonList.push_front(plusBLUE); + m_buttonList.push_front(minusBLUE); + m_buttonList.push_front(plus10RED); + m_buttonList.push_front(minus10RED); + m_buttonList.push_front(plus10GREEN); + m_buttonList.push_front(minus10GREEN); + m_buttonList.push_front(plus10BLUE); + m_buttonList.push_front(minus10BLUE); + //SET NEW COLOR + m_buttonList.push_front(setNewColor); + m_buttonList.push_front(cancel); + //Animations tab + m_buttonList.push_front(hideRight); + m_buttonList.push_front(hideTop); + m_buttonList.push_front(animations); + //LEDs tab + m_buttonList.push_front(leds); +} + +void View1::drawText(){ + //(uint32_t)0xFFFFFFFF + BSP_LCD_SetTextColor(LCD_COLOR_RED); + BSP_LCD_SetBackColor(LCD_COLOR_BLACK); + BSP_LCD_DisplayStringAt(90,10,(uint8_t *)"Red", LEFT_MODE); + BSP_LCD_SetTextColor(LCD_COLOR_GREEN); + BSP_LCD_DisplayStringAt(90,100,(uint8_t *)"Green", LEFT_MODE); + BSP_LCD_SetTextColor(LCD_COLOR_BLUE); + BSP_LCD_DisplayStringAt(90,190,(uint8_t *)"Blue", LEFT_MODE); +} + +void View1::updateLCD(){ + setNewColorEnabled = false; + viewChanged = false; + BSP_TS_GetState(&TS_State); + if (TS_State.touchDetected) { //Detecte si l'écran tactile est touché + cleared = false; + for (idx = 0; idx < TS_State.touchDetected; idx++) { + x = TS_State.touchX[idx]; + y = TS_State.touchY[idx]; + contain(x, y); + + } + } else { + screenReleased=true; + if (!cleared) { + draw(); + cleared = true; + } + } + +} + +bool View1::updatePlusMinus(Button* button){ + if(button == plusRED){ + RGB[0]= std::atoi((const char*)redTextview->getText()); + RGB[0]++; + sprintf(str, "%d", RGB[0]); + redTextview->setText(str); + } else if(button == minusRED){ + RGB[0]= std::atoi((const char*)redTextview->getText()); + RGB[0]--; + sprintf(str, "%d", RGB[0]); + redTextview->setText(str); + } else if(button == plus10RED){ + RGB[0]= std::atoi((const char*)redTextview->getText()); + RGB[0]+=10; + sprintf(str, "%d", RGB[0]); + redTextview->setText(str); + } else if(button == minus10RED){ + RGB[0]= std::atoi((const char*)redTextview->getText()); + RGB[0]-=10; + sprintf(str, "%d", RGB[0]); + redTextview->setText(str); + } else if(button == plusGREEN){ + RGB[1]= std::atoi((const char*)greenTextview->getText()); + RGB[1]++; + sprintf(str, "%d", RGB[1]); + greenTextview->setText(str); + } else if(button == minusGREEN){ + RGB[1]= std::atoi((const char*)greenTextview->getText()); + RGB[1]--; + sprintf(str, "%d", RGB[1]); + greenTextview->setText(str); + } else if(button == plus10GREEN){ + RGB[1]= std::atoi((const char*)greenTextview->getText()); + RGB[1]+=10; + sprintf(str, "%d", RGB[1]); + greenTextview->setText(str); + } else if(button == minus10GREEN){ + RGB[1]= std::atoi((const char*)greenTextview->getText()); + RGB[1]-=10; + sprintf(str, "%d", RGB[1]); + greenTextview->setText(str); + }else if(button == plusBLUE){ + RGB[2]= std::atoi((const char*)blueTextview->getText()); + RGB[2]++; + sprintf(str, "%d", RGB[2]); + blueTextview->setText(str); + } else if(button == minusBLUE){ + RGB[2]= std::atoi((const char*)blueTextview->getText()); + RGB[2]--; + sprintf(str, "%d", RGB[2]); + blueTextview->setText(str); + } else if(button == plus10BLUE){ + RGB[2]= std::atoi((const char*)blueTextview->getText()); + RGB[2]+=10; + sprintf(str, "%d", RGB[2]); + blueTextview->setText(str); + } else if(button == minus10BLUE){ + RGB[2]= std::atoi((const char*)blueTextview->getText()); + RGB[2]-=10; + sprintf(str, "%d", RGB[2]); + blueTextview->setText(str); + } else + return false; + + return true; +} + +bool View1::updateLEDS(Button* button){ + if(button == led0) + if(!ledSelected[0]){ + ledSelected[0]=true; + button->setBorderWidth(3); + } + else{ + ledSelected[0]=false; + button->setBorderWidth(1); + } + else if(button == led1) + if(!ledSelected[1]){ + ledSelected[1]=true; + button->setBorderWidth(3); + } + else{ + ledSelected[1]=false; + button->setBorderWidth(1); + } + else if(button == led2) + if(!ledSelected[2]){ + ledSelected[2]=true; + button->setBorderWidth(3); + } + else{ + ledSelected[2]=false; + button->setBorderWidth(1); + } + else if(button == led3) + if(!ledSelected[3]){ + ledSelected[3]=true; + button->setBorderWidth(3); + } + else{ + ledSelected[3]=false; + button->setBorderWidth(1); + } + else if(button == led4) + if(!ledSelected[4]){ + ledSelected[4]=true; + button->setBorderWidth(3); + } + else{ + ledSelected[4]=false; + button->setBorderWidth(1); + } + else if(button == led5) + if(!ledSelected[5]){ + ledSelected[5]=true; + button->setBorderWidth(3); + } + else{ + ledSelected[5]=false; + button->setBorderWidth(1); + } + else if(button == led6) + if(!ledSelected[6]){ + ledSelected[6]=true; + button->setBorderWidth(3); + } + else{ + ledSelected[6]=false; + button->setBorderWidth(3); + } + else if(button == led7) + if(!ledSelected[7]){ + ledSelected[7]=true; + button->setBorderWidth(3); + } + else{ + ledSelected[7]=false; + button->setBorderWidth(1); + } + else if(button == led8) + if(!ledSelected[8]){ + ledSelected[8]=true; + button->setBorderWidth(3); + } + else{ + ledSelected[8]=false; + button->setBorderWidth(1); + } + else if(button == led9) + if(!ledSelected[9]){ + ledSelected[9]=true; + button->setBorderWidth(3); + } + else{ + ledSelected[9]=false; + button->setBorderWidth(1); + } + else if(button == led10) + if(!ledSelected[10]){ + ledSelected[10]=true; + button->setBorderWidth(3); + } + else{ + ledSelected[10]=false; + button->setBorderWidth(1); + } + else if(button == led11) + if(!ledSelected[11]){ + ledSelected[11]=true; + button->setBorderWidth(3); + } + else{ + ledSelected[11]=false; + button->setBorderWidth(1); + } + else + return false; + + return true; +} + +bool View1::updateSetNewColorAndCancel(Button* button){ + int i=0; + uint32_t RGBcolor=0xFF000000; + if(button == cancel){ + led0->setBorderWidth(1); + led1->setBorderWidth(1); + led2->setBorderWidth(1); + led3->setBorderWidth(1); + led4->setBorderWidth(1); + led5->setBorderWidth(1); + led6->setBorderWidth(1); + led7->setBorderWidth(1); + led8->setBorderWidth(1); + led9->setBorderWidth(1); + led10->setBorderWidth(1); + led11->setBorderWidth(1); + + }else if(button == setNewColor){ + setNewColorEnabled = true; + RGBcolor+=RGB[2]+(RGB[1]<<8)+(RGB[0]<<16); + led0->setBorderWidth(1); + led1->setBorderWidth(1); + led2->setBorderWidth(1); + led3->setBorderWidth(1); + led4->setBorderWidth(1); + led5->setBorderWidth(1); + led6->setBorderWidth(1); + led7->setBorderWidth(1); + led8->setBorderWidth(1); + led9->setBorderWidth(1); + led10->setBorderWidth(1); + led11->setBorderWidth(1); + if(ledSelected[0]){ + led0->setBackgroundColor(RGBcolor); + sprintf(str, "%06x", RGBcolor & 0x000000ff); + strcpy(RGBmap[0], str); + }if(ledSelected[1]){ + led1->setBackgroundColor(RGBcolor); + sprintf(str, "%06x", RGBcolor & 0x00ffffff); + strcpy(RGBmap[1], str); + }if(ledSelected[2]){ + led2->setBackgroundColor(RGBcolor); + sprintf(str, "%06x", RGBcolor & 0x00ffffff); + strcpy(RGBmap[2], str); + }if(ledSelected[3]){ + led3->setBackgroundColor(RGBcolor); + sprintf(str, "%06x", RGBcolor & 0x00ffffff); + strcpy(RGBmap[3], str); + }if(ledSelected[4]){ + led4->setBackgroundColor(RGBcolor); + sprintf(str, "%06x", RGBcolor & 0x00ffffff); + strcpy(RGBmap[4], str); + }if(ledSelected[5]){ + led5->setBackgroundColor(RGBcolor); + sprintf(str, "%06x", RGBcolor & 0x00ffffff); + strcpy(RGBmap[5], str); + }if(ledSelected[6]){ + led6->setBackgroundColor(RGBcolor); + sprintf(str, "%06x", RGBcolor & 0x00ffffff); + strcpy(RGBmap[6], str); + }if(ledSelected[7]){ + led7->setBackgroundColor(RGBcolor); + sprintf(str, "%06x", RGBcolor & 0x00ffffff); + strcpy(RGBmap[7], str); + }if(ledSelected[8]){ + led8->setBackgroundColor(RGBcolor); + sprintf(str, "%06x", RGBcolor & 0x00ffffff); + strcpy(RGBmap[8], str); + }if(ledSelected[9]){ + led9->setBackgroundColor(RGBcolor); + sprintf(str, "%06x", RGBcolor & 0x00ffffff); + strcpy(RGBmap[9], str); + }if(ledSelected[10]){ + led10->setBackgroundColor(RGBcolor); + sprintf(str, "%06x", RGBcolor & 0x00ffffff); + strcpy(RGBmap[10], str); + }if(ledSelected[11]){ + led11->setBackgroundColor(RGBcolor); + sprintf(str, "%06x", RGBcolor & 0x00ffffff); + strcpy(RGBmap[11], str); + } + }else + return false; + + for(i=0; i<12; i++) + ledSelected[i]=false; + return true; +} + +void View1::updateViewChanged(Button* button){ + if(button == animations){ + viewChanged=true; + } +} + +bool View1::getViewChanged(){ + return viewChanged; +} + +void View1::setViewChanged(bool viewChanged){ + this->viewChanged = viewChanged; +} + +void View1::getRGBmap(char RGBmap[12][7]){ + for(int i=0; i<12; i++) + for(int y=0; y<6; y++) + RGBmap[i][y] = this->RGBmap[i][y]; +} + +bool View1::getSetNewColorEnabled(){ + return setNewColorEnabled; +} \ No newline at end of file