Image ImageManager::processImage (const BeamImage& beamImage) { const Image& srcImage = beamImage.image(); Image process_src_image = preprocessOriginalImage(srcImage, m_processSettings.cropHeader, m_processSettings.cropFooter, m_processSettings.autoCrop); QImage canvas = createNewCanvas (m_processSettings.newImageSize, m_processSettings.whiteBackground); int liedNrSize = 0; if (m_processSettings.addSongNumber) liedNrSize = 60; QSize target_frame_size = calculateTargetFrameSize( canvas.size(), m_processSettings.borderSize, liedNrSize ); QSize scaled_image_size = calculateScaledImageSize( process_src_image.size(), target_frame_size, m_processSettings.zoom); QImage scaled_image = process_src_image.toQImage().scaled (scaled_image_size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); int x_offset = m_processSettings.borderSize; int y_offset = m_processSettings.borderSize + liedNrSize; QPoint offset ( x_offset + (target_frame_size.width() - scaled_image.size().width()) /2, y_offset + (target_frame_size.height() - scaled_image.size().height()) /2); QPainter painter (&canvas); QFont font ("Arial"); font.setPixelSize(40); painter.setFont(font); if (m_processSettings.addSongNumber) painter.drawText (QRect(10, 10, scaled_image.width(), 40), Qt::AlignHCenter, beamImage.liedNr()); painter.drawImage(offset, scaled_image); Lut lut(8); ImageProcessing::generateLut(0, m_processSettings.brightness, m_processSettings.gamma, 1.0, 1.0, 1.0, lut); Image copy_image (canvas.size(), 4, 8); Image my_canvas = Image::fromQImage(canvas); ImageProcessing::applyLut(&my_canvas, ©_image, lut); return copy_image; }
void RHD2000Editor::handleAsyncUpdate() { if (!impedanceData->valid) return; if (canvas == nullptr) VisualizerEditor::canvas = createNewCanvas(); // update components... canvas->updateImpedance(impedanceData->streams, impedanceData->channels, impedanceData->magnitudes, impedanceData->phases); if (saveImpedances) { CoreServices::RecordNode::createNewrecordingDir(); String path(CoreServices::RecordNode::getRecordingPath().getFullPathName() + File::separatorString + "impedance_measurement.xml"); std::cout << "Saving impedance measurements in " << path << "\n"; File file(path); if (!file.getParentDirectory().exists()) file.getParentDirectory().createDirectory(); XmlDocument doc(file); ScopedPointer<XmlElement> xml = new XmlElement("CHANNEL_IMPEDANCES"); for (int i = 0; i < impedanceData->channels.size(); i++) { XmlElement* chan = new XmlElement("CHANNEL"); chan->setAttribute("name",board->getChannelName(i)); chan->setAttribute("stream", impedanceData->streams[i]); chan->setAttribute("channel_number", impedanceData->channels[i]); chan->setAttribute("magnitude", impedanceData->magnitudes[i]); chan->setAttribute("phase", impedanceData->phases[i]); xml->addChildElement(chan); } xml->writeToFile(file,String::empty); } }
void VisualizerEditor::buttonEvent(Button* button) { int gId = button->getRadioGroupId(); if (gId > 0) { if (canvas != nullptr) { canvas->setParameter(gId-1, button->getName().getFloatValue()); } } else { if (canvas == nullptr) { canvas = createNewCanvas(); canvas->update(); if (isPlaying) canvas->beginAnimation(); } if (button == windowSelector) { if (tabSelector->getToggleState() && windowSelector->getToggleState()) { tabSelector->setToggleState(false, false); getDataViewport()->destroyTab(tabIndex); tabIndex = -1; } if (dataWindow == nullptr) { dataWindow = new DataWindow(windowSelector, tabText); dataWindow->setContentNonOwned(canvas, false); dataWindow->setVisible(true); canvas->refreshState(); } else { dataWindow->setVisible(windowSelector->getToggleState()); if (windowSelector->getToggleState()) { dataWindow->setContentNonOwned(canvas, false); canvas->setBounds(0,0,canvas->getParentWidth(), canvas->getParentHeight()); canvas->refreshState(); } else { dataWindow->setContentNonOwned(0, false); } } } else if (button == tabSelector) { if (tabSelector->getToggleState() && tabIndex < 0) { if (windowSelector->getToggleState()) { dataWindow->setContentNonOwned(0, false); windowSelector->setToggleState(false, false); dataWindow->setVisible(false); } tabIndex = getDataViewport()->addTabToDataViewport(tabText, canvas, this); } else if (!tabSelector->getToggleState() && tabIndex > -1) { getDataViewport()->destroyTab(tabIndex); tabIndex = -1; } } } buttonCallback(button); if (button == drawerButton) { std::cout<<"Drawer button clicked"<<std::endl; windowSelector->setBounds(desiredWidth - 40,7,14,10); tabSelector->setBounds(desiredWidth - 20,7,15,10); } }