Пример #1
0
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, &copy_image, lut);

    return copy_image;
}
Пример #2
0
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);
    }

}
Пример #3
0
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);

    }

}