void DisplayRenderer::render(RunData *runData, bool realDisplayData)
{
    this->runData = runData;

    QImage im(widget1->getDotSize().width(), widget1->getDotSize().height(), QImage::Format_Mono);
	im.fill(0);
    QPainter p(&im);
    p.setPen(QColor(Qt::white));
    p.setRenderHint(QPainter::TextAntialiasing, false);

	// render display 1
    int ySum=0;
    for(int n=1; n<=3; n++)
	{
        QFont font = settingsDialog->getFont(n);
        font.setStyleStrategy(QFont::NoAntialias);
        p.setFont(font);
        int y = settingsDialog->getFont(n).pointSize();
        ySum+=y;
        p.drawText(0, ySum-settingsDialog->getOffset(n), buildString(settingsDialog->getFormat(n)));
        ySum-=settingsDialog->getOffset(n);
    }
    widget1->setImage(im);
	
	QImage im1(im);		// save a copy of image 1

	// render display 2
    im.fill(0);
    ySum=0;
    for(int n=4; n<=6; n++)
	{
        QFont font = settingsDialog->getFont(n);
        font.setStyleStrategy(QFont::NoAntialias);
        p.setFont(font);
        int y = font.pointSize();
        ySum+=y;
        p.drawText(0, ySum-settingsDialog->getOffset(n), buildString(settingsDialog->getFormat(n)));
        ySum-=settingsDialog->getOffset(n);
    }
    widget2->setImage(im);
	
	if(realDisplayData && settingsDialog->getEnabled())
	{
		sendDisplayData(im1, im);
	}
}
Пример #2
0
void Line6Fbv::updateUI(){

	unsigned long currentMillis = millis();


	// LEDs
	for (int i = 0; i < LINE6FBV_NUM_LED_AND_SWITCH; i++){
		if (mLedAndSwitch[i].setOn){
			mLedAndSwitch[i].setOn = 0;
			mLedAndSwitch[i].isOn = 1;
			mLedAndSwitch[i].flash = 0;
			mSerial->write(0xF0);
			mSerial->write(0x03);
			mSerial->write(0x04);
			mSerial->write(mLedAndSwitch[i].key);
			mSerial->write(0x01);
			//Serial.print("LED On  : ");
			//Serial.println(mLedAndSwitch[i].key, HEX);
		}
		else if (mLedAndSwitch[i].setOff){
			//Serial.print("LED Off  : ");
			//Serial.println(mLedAndSwitch[i].key, HEX);
			mLedAndSwitch[i].setOff = 0;
			mLedAndSwitch[i].isOn = 0;
			mLedAndSwitch[i].flash = 0;
			mSerial->write(0xF0);
			mSerial->write(0x03);
			mSerial->write(0x04);
			mSerial->write(mLedAndSwitch[i].key);
			mSerial->write(0x00);
		}
		else if (mLedAndSwitch[i].flash){
			//Serial.print("LED flash  : ");
			//Serial.println(mLedAndSwitch[i].key, HEX);
			if (currentMillis - mLedAndSwitch[i].lastMillis >= mLedAndSwitch[i].waitTime) {
				mLedAndSwitch[i].lastMillis = currentMillis;
				if (!mLedAndSwitch[i].isOn)
					mLedAndSwitch[i].waitTime = mLedAndSwitch[i].onTime;
				else
					mLedAndSwitch[i].waitTime = mLedAndSwitch[i].offTime;
				mLedAndSwitch[i].isOn = !mLedAndSwitch[i].isOn;
				mSerial->write(0xF0);
				mSerial->write(0x03);
				mSerial->write(0x04);
				mSerial->write(mLedAndSwitch[i].key);
				mSerial->write(mLedAndSwitch[i].isOn);
			}
		}

	}

	// Display
	if (!mDisplay.flash){
		mDisplay.isShown = 1;
		if (mDisplayDataChanged){
			sendDisplayData(mDisplay);
			mDisplayDataChanged = 0;
		}
	}
	else{
		if (currentMillis - mDisplay.lastMillis >= mDisplay.waitTime) {
			mDisplay.lastMillis = currentMillis;
			if (!mDisplay.isShown)
				mDisplay.waitTime = mDisplay.onTime;
			else
				mDisplay.waitTime = mDisplay.offTime;

			mDisplay.isShown = !mDisplay.isShown;

			if (mDisplay.isShown)
				sendDisplayData(mDisplay);
			else
				sendDisplayData(mDisplayEmpty);
		}
	}
}