void Cool_Display::DispInfo_4Digit(int Size, uint8_t Message[], uint16_t Data) { setDigitBright(0x00); setDigitBright(0x0f); DigitDisplay(Size, Message); DigitInfo(SensorInfo[Data]); }
void Cool_Display::ButtonAction(int PushCounter) {//OK// //Si le bouton est actionne par une pression courte, le defilement // des differentes informations est active. //Si le bouton est actionne par une pression prolongee, la camera // est activee et declanche la prise d'une photo ainsi que son // enregistrement sur la carte micro-SD //Si le bouton n'est pas active, l'heure est affichee (4-Digit) // ainsi que le niveau d'eau restant (LedBar). if(PushCounter == 0) {//Affichage de l'heure et du niveau d'eau: BarSecondDisplay(); setDigitBright(0x0f); if((SensorInfo[0] >= 25)) DigitWriteData(FailMessage); else DigitInfo(100*SensorInfo[0]+SensorInfo[1]); } else if(PushCounter <= PushDispPic) {//Affichage du defilement des donnees: PushCounter = 0; LedBarLightSet(0); //Temperature Interieure: DispInfo_4Digit(MessageSize[0], TempInt, 5); BarQualityControl(4); //Humidite Inteurieure: DispInfo_4Digit(MessageSize[1], HumInt, 7); BarQualityControl(7); //Luminosite Interieure: DispInfo_4Digit(MessageSize[2], LumInt, 3); BarQualityControl(3); //Moisture: DispInfo_4Digit(MessageSize[3], Moisture, 9); BarQualityControl(9); /* DigitInfo(SensorInfo[10]); BarQualityControl(10); DigitInfo(SensorInfo[11]); BarQualityControl(11); setDigitBright(0x00); */ //Temperature Exterieure: /* DispInfo_4Digit(MessageSize[4], TempExt, 6); BarQualityControl(6); */ //Humidite Exterieure: /* DispInfo_4Digit(MessageSize[5], HumExt, 8); BarQualityControl(8); */ //Luminosite Exterieure: /* DispInfo_4Digit(MessageSize[6], LumExt, 4); BarQualityControl(4); */ //Niveau d'eau: /* DispInfo_4Digit(MessageSize[7], WatLev, 12); BarQualityControl(12); */ } else if(PushCounter >= PushDispPic) {//Prise de Photo: setDigitBright(0x0f); DigitDisplay(MessageSize[9],Photo); DigitWriteData(WaitMessage); // -> Fonction de prise de photo. BarTakePhoto(); PushCounter = 0; } }
bool TimeTextCtrl::Layout() { unsigned int i, j; int x, pos; wxMemoryDC memDC; if (mBackgroundBitmap) { delete mBackgroundBitmap; mBackgroundBitmap = NULL; } // Placeholder bitmap so the memDC has something to reference mBackgroundBitmap = new wxBitmap(1, 1); memDC.SelectObject(*mBackgroundBitmap); mDigits.Clear(); mBorderLeft = 1; mBorderTop = 1; mBorderRight = 1; mBorderBottom = 1; int fontSize = 4; wxCoord strW, strH; wxString exampleText = wxT("0"); // Keep making the font bigger until it's too big, then subtract one. memDC.SetFont(wxFont(fontSize, wxFIXED, wxNORMAL, wxNORMAL)); memDC.GetTextExtent(exampleText, &strW, &strH); while(strW <= mDigitBoxW && strH <= mDigitBoxH) { fontSize++; memDC.SetFont(wxFont(fontSize, wxFIXED, wxNORMAL, wxNORMAL)); memDC.GetTextExtent(exampleText, &strW, &strH); } fontSize--; if (mDigitFont) delete mDigitFont; mDigitFont = new wxFont(fontSize, wxFIXED, wxNORMAL, wxNORMAL); memDC.SetFont(*mDigitFont); memDC.GetTextExtent(exampleText, &strW, &strH); mDigitW = strW; mDigitH = strH; // The label font should be a little smaller fontSize--; if (mLabelFont) delete mLabelFont; mLabelFont = new wxFont(fontSize, wxFIXED, wxNORMAL, wxNORMAL); // Figure out the x-position of each field and label in the box x = mBorderLeft; pos = 0; memDC.SetFont(*mLabelFont); memDC.GetTextExtent(mPrefix, &strW, &strH); x += strW; pos += mPrefix.Length(); for(i=0; i<mFields.GetCount(); i++) { mFields[i].fieldX = x; for(j=0; j<(unsigned int)mFields[i].digits; j++) { mDigits.Add(DigitInfo(i, j, pos, wxRect(x, mBorderTop, mDigitBoxW, mDigitBoxH))); x += mDigitBoxW; pos++; } mFields[i].labelX = x; memDC.GetTextExtent(mFields[i].label, &strW, &strH); pos += mFields[i].label.Length(); x += strW; mFields[i].fieldW = x; } mWidth = x + mBorderRight; mHeight = mDigitBoxH + mBorderTop + mBorderBottom; // Draw the background bitmap - it contains black boxes where // all of the digits go and all of the other text wxBrush Brush; delete mBackgroundBitmap; // Delete placeholder mBackgroundBitmap = new wxBitmap(mWidth + mButtonWidth, mHeight); memDC.SelectObject(*mBackgroundBitmap); memDC.SetBrush(*wxLIGHT_GREY_BRUSH); memDC.SetPen(*wxTRANSPARENT_PEN); memDC.DrawRectangle(0, 0, mWidth + mButtonWidth, mHeight); int numberBottom = mBorderTop + (mDigitBoxH - mDigitH)/2 + mDigitH; memDC.GetTextExtent(wxT("0"), &strW, &strH); int labelTop = numberBottom - strH; memDC.SetTextForeground(*wxBLACK); memDC.SetTextBackground(*wxLIGHT_GREY); memDC.DrawText(mPrefix, mBorderLeft, labelTop); theTheme.SetBrushColour( Brush, clrTimeBack ); memDC.SetBrush(Brush); memDC.SetBrush(*wxLIGHT_GREY_BRUSH); for(i=0; i<mDigits.GetCount(); i++) memDC.DrawRectangle(mDigits[i].digitBox); memDC.SetBrush( wxNullBrush ); for(i=0; i<mFields.GetCount(); i++) memDC.DrawText(mFields[i].label, mFields[i].labelX, labelTop); if (mMenuEnabled) { wxRect r(mWidth, 0, mButtonWidth - 1, mHeight - 1); AColor::Bevel(memDC, true, r); memDC.SetBrush(*wxBLACK_BRUSH); memDC.SetPen(*wxBLACK_PEN); AColor::Arrow(memDC, mWidth + 1, (mHeight / 2) - 2, mButtonWidth - 2); } return true; }