split_image_view.cc (2391B)
1 // Copyright (c) the JPEG XL Project Authors. All rights reserved. 2 // 3 // Use of this source code is governed by a BSD-style 4 // license that can be found in the LICENSE file. 5 6 #include "tools/comparison_viewer/split_image_view.h" 7 8 #include <utility> 9 10 #include <QLabel> 11 12 #include "tools/comparison_viewer/split_image_renderer.h" 13 14 namespace jpegxl { 15 namespace tools { 16 17 SplitImageView::SplitImageView(QWidget* const parent) : QWidget(parent) { 18 ui_.setupUi(this); 19 20 ui_.splitImageRenderer->setRenderingSettings(settings_.renderingSettings()); 21 22 connect(ui_.middleWidthSlider, &QSlider::valueChanged, 23 [this](const int value) { 24 ui_.middleWidthDisplayLabel->setText(tr("%L1%").arg(value)); 25 }); 26 connect(ui_.middleWidthSlider, &QSlider::valueChanged, ui_.splitImageRenderer, 27 &SplitImageRenderer::setMiddleWidthPercent); 28 29 connect(ui_.zoomLevelSlider, &QSlider::valueChanged, [this](const int value) { 30 if (value >= 0) { 31 ui_.zoomLevelDisplayLabel->setText(tr("×%L1").arg(1 << value)); 32 ui_.splitImageRenderer->setZoomLevel(1 << value); 33 } else { 34 ui_.zoomLevelDisplayLabel->setText(tr("×1/%L1").arg(1 << -value)); 35 ui_.splitImageRenderer->setZoomLevel(1. / (1 << -value)); 36 } 37 }); 38 39 connect(ui_.splitImageRenderer, 40 &SplitImageRenderer::zoomLevelIncreaseRequested, [this]() { 41 ui_.zoomLevelSlider->triggerAction( 42 QAbstractSlider::SliderSingleStepAdd); 43 }); 44 connect(ui_.splitImageRenderer, 45 &SplitImageRenderer::zoomLevelDecreaseRequested, [this]() { 46 ui_.zoomLevelSlider->triggerAction( 47 QAbstractSlider::SliderSingleStepSub); 48 }); 49 50 connect(ui_.splitImageRenderer, &SplitImageRenderer::renderingModeChanged, 51 this, &SplitImageView::renderingModeChanged); 52 } 53 54 void SplitImageView::setLeftImage(QImage image) { 55 ui_.splitImageRenderer->setLeftImage(std::move(image)); 56 } 57 58 void SplitImageView::setRightImage(QImage image) { 59 ui_.splitImageRenderer->setRightImage(std::move(image)); 60 } 61 62 void SplitImageView::setMiddleImage(QImage image) { 63 ui_.splitImageRenderer->setMiddleImage(std::move(image)); 64 } 65 66 void SplitImageView::on_settingsButton_clicked() { 67 if (settings_.exec()) { 68 ui_.splitImageRenderer->setRenderingSettings(settings_.renderingSettings()); 69 } 70 } 71 72 } // namespace tools 73 } // namespace jpegxl