From b64b18c1a2c0ed32776ccf2fbf69ea903d4af12d Mon Sep 17 00:00:00 2001 From: Thomas Zorroche Date: Thu, 14 Jan 2021 22:10:52 +0100 Subject: [PATCH] [Lens Distortion] subdivisions slider --- meshroom/ui/qml/Viewer/FloatImage.qml | 5 ++- .../ui/qml/Viewer/LensDistortionToolbar.qml | 43 +++++++++++++++++++ meshroom/ui/qml/Viewer/Viewer2D.qml | 1 + 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/meshroom/ui/qml/Viewer/FloatImage.qml b/meshroom/ui/qml/Viewer/FloatImage.qml index a96afa2b..dbc1297b 100644 --- a/meshroom/ui/qml/Viewer/FloatImage.qml +++ b/meshroom/ui/qml/Viewer/FloatImage.qml @@ -36,7 +36,7 @@ AliceVision.FloatImageViewer { // rename into distortionView property bool distortion: false property bool isGridDisplayed : false; - + property int subdivisions: 2 onDistortionChanged: { console.warn("distortion"); @@ -47,6 +47,9 @@ AliceVision.FloatImageViewer { root.displayGrid() } + onSubdivisionsChanged: { + root.updateSubdivisions(subdivisions) + } channelMode: { switch(channelModeString) diff --git a/meshroom/ui/qml/Viewer/LensDistortionToolbar.qml b/meshroom/ui/qml/Viewer/LensDistortionToolbar.qml index 0e63689b..a9b1140f 100644 --- a/meshroom/ui/qml/Viewer/LensDistortionToolbar.qml +++ b/meshroom/ui/qml/Viewer/LensDistortionToolbar.qml @@ -12,9 +12,11 @@ FloatingPane { radius: 0 property int opacityDefaultValue: 100 + property int subdivisionsDefaultValue: 100 property real slidersPowerValue: 4 property int opacityValue: Math.pow(opacityCtrl.value, 1) + property int subdivisionsValue: Math.pow(subdivisionsCtrl.value, 1) property variant colorRGBA: null property bool displayGrid: displayGridButton.checked @@ -104,6 +106,47 @@ FloatingPane { stepSize: 1 } } + + // Grid subdivisions slider + RowLayout { + spacing: 5 + + ToolButton { + text: "Subdivisions" + + ToolTip.visible: ToolTip.text && hovered + ToolTip.delay: 100 + ToolTip.text: "Reset Subdivisions" + + onClicked: { + subdivisionsCtrl.value = subdivisionsDefaultValue; + } + } + TextField { + id: subdivisionsLabel + + ToolTip.visible: ToolTip.text && hovered + ToolTip.delay: 100 + ToolTip.text: "subdivisions" + + text: subdivisionsValue.toFixed(1) + Layout.preferredWidth: textMetrics_opacityValue.width + selectByMouse: true + validator: doubleValidator + onAccepted: { + subdivisionsCtrl.value = Number(subdivisionsLabel.text) + } + } + Slider { + id: subdivisionsCtrl + Layout.fillWidth: false + from: 2 + to: 10 + value: subdivisionsDefaultValue + stepSize: 1 + } + } + //Fill rectangle to have a better UI Rectangle { color: root.palette.window diff --git a/meshroom/ui/qml/Viewer/Viewer2D.qml b/meshroom/ui/qml/Viewer/Viewer2D.qml index 9ffe7a7a..1f9f8aac 100644 --- a/meshroom/ui/qml/Viewer/Viewer2D.qml +++ b/meshroom/ui/qml/Viewer/Viewer2D.qml @@ -233,6 +233,7 @@ FocusScope { 'gridOpacity' : Qt.binding(function(){ return lensDistortionImageToolbar.opacityValue;}), 'gridColor' : Qt.binding(function(){ return lensDistortionImageToolbar.color;}), 'distortion' : Qt.binding(function(){ return displayLensDistortionViewer.checked;}), + 'subdivisions' : Qt.binding(function(){ return lensDistortionImageToolbar.subdivisionsValue;}), }) } else { // Force the unload (instead of using Component.onCompleted to load it once and for all) is necessary since Qt 5.14