Ejemplo n.º 1
0
QImage colouriseImage(const QString& imagePath, std::function<QRgb(int)> function)
{
    QImage originalImage(imagePath);

    QImage colourisedImage = originalImage.convertToFormat(QImage::Format_ARGB32);

    for (int y = 0; y < originalImage.width(); ++y)
    {
        for (int x = 0; x < originalImage.height(); ++x)
        {
            QRgb oldColour = originalImage.pixel(x, y);

            QRgb newColour = function(qGray(oldColour));

            // Preserve transparency
            newColour = qRgba(
                qRed(newColour),
                qGreen(newColour),
                qBlue(newColour),
                qAlpha(oldColour)
            );

            colourisedImage.setPixel(x, y, newColour);
        }
    }

    return colourisedImage;
}
Ejemplo n.º 2
0
void colorChooser::processMouseMove(QMouseEvent* event) {

  clickedDock_->
    updateColorSwatch(::colorFromScaledImageCoords(event->x(), event->y(),
                                                   imageLabel_->width(),
                                                   imageLabel_->height(),
                                                   originalImage()));
}
Ejemplo n.º 3
0
TEST(Image, RoundTrip)
{
    nyra::Image originalImage(
            nyra::Constants::APP_PATH + "../data/unittests/lena.png");
    const std::string writePathname(
            nyra::Constants::APP_PATH + "../data/unittests/image_test.png");
    originalImage.write(writePathname);
    nyra::Image readBack(writePathname);
    EXPECT_EQ(originalImage, readBack);
}
Ejemplo n.º 4
0
void RestorationTool::prepareFinal()
{
    ImageIface iface(0, 0);
    uchar* data = iface.getOriginalImage();
    DImg originalImage(iface.originalWidth(), iface.originalHeight(),
                       iface.originalSixteenBit(), iface.originalHasAlpha(), data);

    setFilter(new GreycstorationFilter(&originalImage,
                                       d->settingsWidget->settings(), GreycstorationFilter::Restore,
                                       0, 0, QImage(), this));

    delete [] data;
}
TEST(SimpleArrayImageTest, internalDataIsntSharedWithCopy) {
    SimpleArrayImage<DummyType> originalImage(7, 6);

    originalImage = [] (unsigned int, unsigned int) -> DummyType {
        return DummyType{3};
    };

    SimpleArrayImage<DummyType> copyOfImage(originalImage);

    originalImage.setPixel(0, 1, DummyType{7});

    assertThat(copyOfImage).isNotEqualTo(originalImage);
}
Ejemplo n.º 6
0
void ut_tileloading::testCenterTilePriority()
{
    QFile testFile("/usr/share/libquill-tests/images/image_16x4.jpg");
    QImage originalImage("/usr/share/libquill-tests/images/image_16x4.png");

    Quill::setDefaultTileSize(QSize(2, 2));

    QuillFile *file =
        new QuillFile(testFile.fileName());
    file->setViewPort(QRect(0, 0, 6, 4));
    file->setDisplayLevel(1);

    Quill::releaseAndWait();
    Quill::releaseAndWait();

    QCOMPARE(file->allImageLevels().count(), 2);
    QCOMPARE(file->allImageLevels().at(1).area(), QRect(2, 0, 2, 2));

    // Immediate surroundings

    Quill::releaseAndWait();
    Quill::releaseAndWait();
    Quill::releaseAndWait();

    QCOMPARE(file->allImageLevels().count(), 5);
    QCOMPARE(file->allImageLevels().at(1).size(), QSize(2, 2));
    QCOMPARE(file->allImageLevels().at(2).size(), QSize(2, 2));
    QCOMPARE(file->allImageLevels().at(3).size(), QSize(2, 2));
    QCOMPARE(file->allImageLevels().at(4).size(), QSize(2, 2));
    QCOMPARE(file->allImageLevels().at(1).area(), QRect(0, 0, 2, 2));
    QCOMPARE(file->allImageLevels().at(2).area(), QRect(2, 0, 2, 2));
    QCOMPARE(file->allImageLevels().at(3).area(), QRect(0, 2, 2, 2));
    QCOMPARE(file->allImageLevels().at(4).area(), QRect(2, 2, 2, 2));

    // Whole image

    Quill::releaseAndWait();
    Quill::releaseAndWait();

    QCOMPARE(file->allImageLevels().count(), 7);
    QCOMPARE(file->allImageLevels().at(1).area(), QRect(0, 0, 2, 2));
    QCOMPARE(file->allImageLevels().at(2).area(), QRect(2, 0, 2, 2));
    QCOMPARE(file->allImageLevels().at(3).area(), QRect(4, 0, 2, 2));
    QCOMPARE(file->allImageLevels().at(4).area(), QRect(0, 2, 2, 2));
    QCOMPARE(file->allImageLevels().at(5).area(), QRect(2, 2, 2, 2));
    QCOMPARE(file->allImageLevels().at(6).area(), QRect(4, 2, 2, 2));

    delete file;
}
Ejemplo n.º 7
0
void ImageConverter::preview()
{

    QLabel l;
    l.setPixmap(QPixmap::fromImage(originalImage()));
    l.show();

    qApp->exec();

    l.setPixmap(QPixmap::fromImage(resultImage()));
    l.show();

    qApp->exec();

}
Ejemplo n.º 8
0
void colorChooser::zoomToImage() {

  // scroll area size _without scrollbars_
  const QSize scrollSize = imageScroll_->maximumViewportSize();
  const QSize imageSize = originalImage().size();
  const int newHeight =
    qCeil(imageSize.height()
          * static_cast<qreal>(scrollSize.width())/imageSize.width());
  if (newHeight <= scrollSize.height()) {
    imageLabel_->setImageWidth(scrollSize.width());
  }
  else {
    imageLabel_->setImageHeight(scrollSize.height());
  }
}
Ejemplo n.º 9
0
void colorChooser::processColorAdd(QMouseEvent* event) {

  const QRgb color = ::colorFromScaledImageCoords(event->x(), event->y(),
                                                  imageLabel_->width(),
                                                  imageLabel_->height(),
                                                  originalImage());
  // addedColor may be a DMC version of color
  bool added = false;
  const triC addedColor = processMode_.addColor(color, &added);
  if (added) {
    clickedDock_->addToList(addedColor);
  }
  else {
    // the color already exists
    clickedDock_->moveTo(addedColor);
  }
}
Ejemplo n.º 10
0
void colorChooser::zoomToHeight() {

  // scroll area size _without scrollbars_
  const QSize scrollSize = imageScroll_->maximumViewportSize();
  const QSize imageSize = originalImage().size();
  // if you call width directly on the actual scrollbar widget before
  // it's been made visible you get a goofy response
  const int scrollBarWidth =
    style()->pixelMetric(QStyle::PM_ScrollBarExtent);
  const int newHeight =
    ::computeMaxZoomHeight(scrollSize, imageSize, scrollBarWidth);

  if (newHeight != -1) {
    imageLabel_->setImageHeight(newHeight);
  }
  else {
    imageLabel_->setImageWidth(scrollSize.width());
  }
}
Ejemplo n.º 11
0
void QtJP2OpenJPEGTest::lossless()
{
  QImage originalImage("/tmp/filecolor.jpg");

  QByteArray convertedArray;
  QBuffer buffer(&convertedArray);
  buffer.open(QIODevice::WriteOnly);
  originalImage.save(&buffer, "jp2", 100);
  buffer.close();

  QImage convertedImage;
  convertedImage.loadFromData(convertedArray);

  QCOMPARE(originalImage.size(), convertedImage.size());
  for (int i = 0; i < originalImage.height(); ++i)
    for (int j = 0; j < originalImage.width(); ++j)
    {
      QRgb original = originalImage.pixel(j, i);
      QRgb converted = convertedImage.pixel(j, i);
      QCOMPARE(qRed(original), qRed(converted));
      QCOMPARE(qGreen(original), qGreen(converted));
      QCOMPARE(qBlue(original), qBlue(converted));
    }
}
Ejemplo n.º 12
0
void patternWindow::saveSlot() {

  patternPrinter printer(curImage_, originalImage());
  printer.save(usePdfViewer_, pdfViewerPath_);
}
Ejemplo n.º 13
0
void colorChooser::originalSize() {

  imageLabel_->setImageWidth(originalImage().width());
}
Ejemplo n.º 14
0
void ut_tileloading::testMultiOperation()
{
    QTemporaryFile tempFile;
    tempFile.open();

    // The original file may be write protected and edits are disabled for
    // such files so we need to make a copy
    QImage originalImage("/usr/share/libquill-tests/images/image_16x4.png");
    originalImage.save(tempFile.fileName(), "jpg");
    Quill::setDefaultTileSize(QSize(2, 2));

    QuillFile *file =
        new QuillFile(tempFile.fileName(), Strings::jpg);

    file->setViewPort(QRect(-8, -2, 16, 4));
    file->setDisplayLevel(1);

    QuillImageFilter *filter =
        QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast);
    filter->setOption(QuillImageFilter::Brightness,
                      QVariant(20));

    QImage referenceImage = filter->apply(originalImage);

    file->runFilter(filter);
    Quill::releaseAndWait(); // preview load
    Quill::releaseAndWait(); // preview filter

    QCOMPARE(file->allImageLevels().count(), 1);

    QuillImage previewImage = file->allImageLevels().at(0);

    QCOMPARE(previewImage.size(), QSize(4, 1));
    QCOMPARE(previewImage.fullImageSize(), QSize(16, 4));

    Quill::releaseAndWait();
    QCOMPARE(file->allImageLevels().count(), 1);

    Quill::releaseAndWait();
    QCOMPARE(file->allImageLevels().count(), 2);
    QuillImage fragment = file->allImageLevels().at(1);

    QCOMPARE(fragment.size(), QSize(2, 2));
    QCOMPARE(fragment.fullImageSize(), QSize(16, 4));
    QCOMPARE(fragment.area(), QRect(0, 0, 2, 2));

    Quill::releaseAndWait();
    QCOMPARE(file->allImageLevels().count(), 2);

    Quill::releaseAndWait();
    QCOMPARE(file->allImageLevels().count(), 3);
    fragment = file->allImageLevels().at(2);

    QCOMPARE(fragment.size(), QSize(2, 2));
    QCOMPARE(fragment.fullImageSize(), QSize(16, 4));
    QCOMPARE(fragment.area(), QRect(2, 0, 2, 2));
    test_utils::analyze((QImage)fragment, referenceImage.copy(2, 0, 2, 2),13);

    Quill::releaseAndWait();
    QCOMPARE(file->allImageLevels().count(), 3);

    Quill::releaseAndWait();
    QCOMPARE(file->allImageLevels().count(), 4);
    fragment = file->allImageLevels().at(3);

    QCOMPARE(fragment.size(), QSize(2, 2));
    QCOMPARE(fragment.fullImageSize(), QSize(16, 4));
    QCOMPARE(fragment.area(), QRect(4, 0, 2, 2));
    test_utils::analyze((QImage)fragment, referenceImage.copy(4, 0, 2, 2),13);

    Quill::releaseAndWait();
    QCOMPARE(file->allImageLevels().count(), 4);

    Quill::releaseAndWait();
    QCOMPARE(file->allImageLevels().count(), 5);
    fragment = file->allImageLevels().at(4);

    QCOMPARE(fragment.size(), QSize(2, 2));
    QCOMPARE(fragment.fullImageSize(), QSize(16, 4));
    QCOMPARE(fragment.area(), QRect(6, 0, 2, 2));
    test_utils::analyze((QImage)fragment, referenceImage.copy(6, 0, 2, 2),13);

    delete file;
}
Ejemplo n.º 15
0
void imageCompareBase::originalSizeHelper(const leftRightAccessor& lra,
                                          const QSize& ) {

  lra.label()->setImageSize
    (lra.image()->setScaledSize(originalImage().size()));
}
Ejemplo n.º 16
0
Job::Job(int percentage) {
	Magick::Image originalImage("lena.png");

	this->originalImage = originalImage;
	this->percentage = percentage;
}
Ejemplo n.º 17
0
void KisFreeTransformStrategy::paint(QPainter &gc)
{
    gc.save();

    gc.setOpacity(m_d->transaction.basePreviewOpacity());
    gc.setTransform(m_d->paintingTransform, true);
    gc.drawImage(m_d->paintingOffset, originalImage());

    gc.restore();

    // Draw Handles

    qreal d = 1;
    QRectF handleRect =
        KisTransformUtils::handleRect(KisTransformUtils::handleVisualRadius,
                                      m_d->handlesTransform,
                                      m_d->transaction.originalRect(),
                                      &d);

    qreal r = 1;
    QRectF rotationCenterRect =
        KisTransformUtils::handleRect(KisTransformUtils::rotationHandleVisualRadius,
                                      m_d->handlesTransform,
                                      m_d->transaction.originalRect(),
                                      &r);

    QPainterPath handles;

    handles.moveTo(m_d->transaction.originalTopLeft());
    handles.lineTo(m_d->transaction.originalTopRight());
    handles.lineTo(m_d->transaction.originalBottomRight());
    handles.lineTo(m_d->transaction.originalBottomLeft());
    handles.lineTo(m_d->transaction.originalTopLeft());

    handles.addRect(handleRect.translated(m_d->transaction.originalTopLeft()));
    handles.addRect(handleRect.translated(m_d->transaction.originalTopRight()));
    handles.addRect(handleRect.translated(m_d->transaction.originalBottomLeft()));
    handles.addRect(handleRect.translated(m_d->transaction.originalBottomRight()));
    handles.addRect(handleRect.translated(m_d->transaction.originalMiddleLeft()));
    handles.addRect(handleRect.translated(m_d->transaction.originalMiddleRight()));
    handles.addRect(handleRect.translated(m_d->transaction.originalMiddleTop()));
    handles.addRect(handleRect.translated(m_d->transaction.originalMiddleBottom()));

    QPointF rotationCenter = m_d->currentArgs.originalCenter() + m_d->currentArgs.rotationCenterOffset();
    QPointF dx(r + 3, 0);
    QPointF dy(0, r + 3);
    handles.addEllipse(rotationCenterRect.translated(rotationCenter));
    handles.moveTo(rotationCenter - dx);
    handles.lineTo(rotationCenter + dx);
    handles.moveTo(rotationCenter - dy);
    handles.lineTo(rotationCenter + dy);

    gc.save();

    //gc.setTransform(m_d->handlesTransform, true); <-- don't do like this!
    QPainterPath mappedHandles = m_d->handlesTransform.map(handles);

    QPen pen[2];
    pen[0].setWidth(1);
    pen[1].setWidth(2);
    pen[1].setColor(Qt::lightGray);

    for (int i = 1; i >= 0; --i) {
        gc.setPen(pen[i]);
        gc.drawPath(mappedHandles);
    }

    gc.restore();
}
Ejemplo n.º 18
0
MainPage::MainPage(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{   
     ui.setupUi(this);

     this->LoadQSS();

     m_mousePressed = false;

     QObject::connect(ui.toolButtonHardware, SIGNAL(clicked()), this, SLOT(HardwareInforClicked()));
     QObject::connect(ui.toolButtonTempManagement, SIGNAL(clicked()), this, SLOT(TemperatureClicked()));
     QObject::connect(ui.toolButtonTestItem, SIGNAL(clicked()), this, SLOT(TestItemClicked()));

     QObject::connect(ui.pushButtonMin, SIGNAL(clicked()), this, SLOT(MinButtonClicked()));
     QObject::connect(ui.pushButtonClose, SIGNAL(clicked()), this, SLOT(CloseButtonClicked()));
     QObject::connect(ui.pushButtonUpdate, SIGNAL(clicked()), this, SLOT(UpdateButtonClicked()));

     QObject::connect(&m_checkNewTimer, SIGNAL(timeout()), this, SLOT(CheckNewTimerTimeout()));
     QObject::connect(&m_downloadNewTimer, SIGNAL(timeout()), this, SLOT(DownloadNewTimerTimeout()));

     // 隐藏默认窗口边框和标题栏
     this->setWindowFlags(Qt::Window|Qt::FramelessWindowHint|Qt::WindowSystemMenuHint
         |Qt::WindowMinimizeButtonHint|Qt::WindowMaximizeButtonHint);

     this->setWindowIcon(QIcon(":/ControlImage/Main.png"));

     QString title = MAIN_TITLE;
     title += LAppParam::GetAppVersion();
     this->ui.labelTitle->setText(title);

     this->ui.pushButtonUpdate->setVisible(false);

    // 获取当前系统DPI, 当前系统DPI除以设计时DPI值, 则得到UI放大系数
    const float DESIGN_DPI = 96.0f; // 设计时DPI
    QPainter painter(this);
    QPaintDevice* pDevice = painter.device();
    PrintLogW(L"System DPI X: %d, Y: %d", pDevice->logicalDpiX(), pDevice->logicalDpiY());
    float ratioX = pDevice->logicalDpiX()/DESIGN_DPI;
    float ratioY = pDevice->logicalDpiY()/DESIGN_DPI;
    m_uiRatio = ratioX > ratioY ? ratioX : ratioY;
    if (m_uiRatio < 1.0f)
        m_uiRatio = 1.0f;
    PrintLogW(L"UI Ratio: %f", m_uiRatio);

    // 根据比例重新调整主UI大小, 并居中显示
    int width = this->geometry().width() * m_uiRatio;
    int height = this->geometry().height() * m_uiRatio;
    this->setFixedSize(width, height);
    QDesktopWidget* pDesk = QApplication::desktop();
    this->move((pDesk->width() - width) / 2, (pDesk->height() - height) / 2);

    // 显示启动画面
    QPixmap originalImage(".\\Image\\Background\\splash.png");
    QSize imageSize(originalImage.width() * m_uiRatio, originalImage.height() * m_uiRatio);
    QPixmap scaledImage = originalImage.scaled(imageSize, Qt::KeepAspectRatio);
    QFont splashFont("Microsoft YaHei UI", 10);
    m_splashScreen.setFont(splashFont);
    m_splashScreen.setPixmap(scaledImage);
    m_splashScreen.show();
    
    width = ui.stackedWidget->width() * m_uiRatio;
    height = ui.stackedWidget->height() * m_uiRatio;

    m_splashScreen.showMessage(QObject::tr("Creating Hardware Page..."), Qt::AlignLeft | Qt::AlignTop, Qt::red);
    m_pHardwareInforPage = new HardwareInforPage(m_uiRatio);
    m_pHardwareInforPage->SetSplashScreen(&m_splashScreen);
    m_pHardwareInforPage->setFixedSize(width, height);
    m_pHardwareInforPage->InitHardwareInfor();
    ui.stackedWidget->addWidget(m_pHardwareInforPage);
    
    m_splashScreen.showMessage(QObject::tr("Creating Temperature Page..."), Qt::AlignLeft | Qt::AlignTop, Qt::red);
    m_pTempManagementPage = new TempManagementPage();
    m_pTempManagementPage->setFixedSize(width, height);
    ui.stackedWidget->addWidget(m_pTempManagementPage);

    m_splashScreen.showMessage(QObject::tr("Creating Test Item Page..."), Qt::AlignLeft | Qt::AlignTop, Qt::red);
    m_pTestItemPage = new TestItemPage(m_uiRatio);
    m_pTestItemPage->setFixedSize(width, height);
    ui.stackedWidget->addWidget(m_pTestItemPage);


    if (APP_NORMAL == LAppParam::GetStartMode())
        ui.stackedWidget->setCurrentWidget(m_pHardwareInforPage);
    else if (APP_RESTARTAGING == LAppParam::GetStartMode())
        ui.stackedWidget->setCurrentWidget(m_pTestItemPage);
    else
        ui.stackedWidget->setCurrentWidget(m_pTestItemPage);
    
}