Add resample options to raster style dock

This commit is contained in:
Nathan 2016-06-03 20:32:54 +10:00
parent a6294cfe51
commit 6b52f7ea0e
6 changed files with 182 additions and 74 deletions

View File

@ -1,11 +1,11 @@
class QgsRendererRasterPropertiesWidget : QWidget class QgsRendererRasterPropertiesWidget : QgsMapStylePanel
{ {
%TypeHeaderCode %TypeHeaderCode
#include <qgsrendererrasterpropertieswidget.h> #include <qgsrendererrasterpropertieswidget.h>
%End %End
public: public:
QgsRendererRasterPropertiesWidget( QgsMapCanvas* canvas, QWidget* parent ); QgsRendererRasterPropertiesWidget( QgsMapLayer* layer, QgsMapCanvas* canvas, QWidget* parent );
~QgsRendererRasterPropertiesWidget(); ~QgsRendererRasterPropertiesWidget();
/** Sets the map canvas associated with the dialog. This allows the widget to retrieve the current /** Sets the map canvas associated with the dialog. This allows the widget to retrieve the current

View File

@ -176,11 +176,6 @@ void QgsMapStylingWidget::apply()
undoName = QString( "Style Change - %1" ).arg( m->visibleName() ); undoName = QString( "Style Change - %1" ).arg( m->visibleName() );
styleWasChanged = true; styleWasChanged = true;
} }
else if ( QgsRendererRasterPropertiesWidget* widget = qobject_cast<QgsRendererRasterPropertiesWidget*>( current ) )
{
widget->apply();
styleWasChanged = true;
}
else if ( QgsRasterTransparencyWidget* widget = qobject_cast<QgsRasterTransparencyWidget*>( current ) ) else if ( QgsRasterTransparencyWidget* widget = qobject_cast<QgsRasterTransparencyWidget*>( current ) )
{ {
widget->apply(); widget->apply();
@ -297,8 +292,7 @@ void QgsMapStylingWidget::updateCurrentWidgetLayer()
switch ( row ) switch ( row )
{ {
case 0: // Style case 0: // Style
mRasterStyleWidget = new QgsRendererRasterPropertiesWidget( mMapCanvas, mWidgetArea ); mRasterStyleWidget = new QgsRendererRasterPropertiesWidget( rlayer, mMapCanvas, mWidgetArea );
mRasterStyleWidget->syncToLayer( rlayer );
connect( mRasterStyleWidget, SIGNAL( widgetChanged() ), this, SLOT( autoApply() ) ); connect( mRasterStyleWidget, SIGNAL( widgetChanged() ), this, SLOT( autoApply() ) );
mWidgetArea->setWidget( mRasterStyleWidget ); mWidgetArea->setWidget( mRasterStyleWidget );
@ -317,7 +311,7 @@ void QgsMapStylingWidget::updateCurrentWidgetLayer()
mRasterStyleWidget->deleteLater(); mRasterStyleWidget->deleteLater();
delete mRasterStyleWidget; delete mRasterStyleWidget;
} }
mRasterStyleWidget = new QgsRendererRasterPropertiesWidget( mMapCanvas, mWidgetArea ); mRasterStyleWidget = new QgsRendererRasterPropertiesWidget( rlayer, mMapCanvas, mWidgetArea );
mRasterStyleWidget->syncToLayer( rlayer ); mRasterStyleWidget->syncToLayer( rlayer );
connect( mRasterStyleWidget, SIGNAL( widgetChanged() ), this, SLOT( autoApply() ) ); connect( mRasterStyleWidget, SIGNAL( widgetChanged() ), this, SLOT( autoApply() ) );

View File

@ -24,6 +24,9 @@
#include "qgsmultibandcolorrendererwidget.h" #include "qgsmultibandcolorrendererwidget.h"
#include "qgspalettedrendererwidget.h" #include "qgspalettedrendererwidget.h"
#include "qgshillshaderendererwidget.h" #include "qgshillshaderendererwidget.h"
#include "qgsrasterresamplefilter.h"
#include "qgsbilinearrasterresampler.h"
#include "qgscubicrasterresampler.h"
static void _initRendererWidgetFunctions() static void _initRendererWidgetFunctions()
@ -43,16 +46,26 @@ static void _initRendererWidgetFunctions()
QgsRendererRasterPropertiesWidget::QgsRendererRasterPropertiesWidget( QgsMapCanvas* canvas, QWidget *parent ) QgsRendererRasterPropertiesWidget::QgsRendererRasterPropertiesWidget( QgsMapLayer *layer, QgsMapCanvas* canvas, QWidget *parent )
: QWidget( parent ) : QgsMapStylePanel( layer, canvas, parent )
, mRasterLayer( nullptr )
, mMapCanvas( canvas )
, mRendererWidget( nullptr ) , mRendererWidget( nullptr )
{ {
mRasterLayer = qobject_cast<QgsRasterLayer*>( layer );
if ( !mRasterLayer )
return;
setupUi( this ); setupUi( this );
_initRendererWidgetFunctions(); _initRendererWidgetFunctions();
mZoomedInResamplingComboBox->insertItem( 0, tr( "Nearest neighbour" ) );
mZoomedInResamplingComboBox->insertItem( 1, tr( "Bilinear" ) );
mZoomedInResamplingComboBox->insertItem( 2, tr( "Cubic" ) );
mZoomedOutResamplingComboBox->insertItem( 0, tr( "Nearest neighbour" ) );
mZoomedOutResamplingComboBox->insertItem( 1, tr( "Average" ) );
syncToLayer( mRasterLayer );
connect( cboRenderers, SIGNAL( currentIndexChanged( int ) ), this, SLOT( rendererChanged() ) ); connect( cboRenderers, SIGNAL( currentIndexChanged( int ) ), this, SLOT( rendererChanged() ) );
connect( mSliderBrightness, SIGNAL( valueChanged( int ) ), mBrightnessSpinBox, SLOT( setValue( int ) ) ); connect( mSliderBrightness, SIGNAL( valueChanged( int ) ), mBrightnessSpinBox, SLOT( setValue( int ) ) );
@ -88,6 +101,11 @@ QgsRendererRasterPropertiesWidget::QgsRendererRasterPropertiesWidget( QgsMapCanv
// enable or disable colorize colorbutton with colorize checkbox // enable or disable colorize colorbutton with colorize checkbox
connect( mColorizeCheck, SIGNAL( toggled( bool ) ), this, SLOT( toggleColorizeControls( bool ) ) ); connect( mColorizeCheck, SIGNAL( toggled( bool ) ), this, SLOT( toggleColorizeControls( bool ) ) );
connect( mZoomedInResamplingComboBox, SIGNAL( currentIndexChanged( int ) ), this, SIGNAL( widgetChanged() ) );
connect( mZoomedOutResamplingComboBox, SIGNAL( currentIndexChanged( int ) ), this, SIGNAL( widgetChanged() ) );
connect( mMaximumOversamplingSpinBox, SIGNAL( valueChanged( double ) ), this, SIGNAL( widgetChanged() ) );
} }
QgsRendererRasterPropertiesWidget::~QgsRendererRasterPropertiesWidget() QgsRendererRasterPropertiesWidget::~QgsRendererRasterPropertiesWidget()
@ -129,6 +147,35 @@ void QgsRendererRasterPropertiesWidget::apply()
hueSaturationFilter->setColorizeStrength( sliderColorizeStrength->value() ); hueSaturationFilter->setColorizeStrength( sliderColorizeStrength->value() );
} }
QgsRasterResampleFilter* resampleFilter = mRasterLayer->resampleFilter();
if ( resampleFilter )
{
QgsRasterResampler *zoomedInResampler = nullptr;
QString zoomedInResamplingMethod = mZoomedInResamplingComboBox->currentText();
if ( zoomedInResamplingMethod == tr( "Bilinear" ) )
{
zoomedInResampler = new QgsBilinearRasterResampler();
}
else if ( zoomedInResamplingMethod == tr( "Cubic" ) )
{
zoomedInResampler = new QgsCubicRasterResampler();
}
resampleFilter->setZoomedInResampler( zoomedInResampler );
//raster resampling
QgsRasterResampler *zoomedOutResampler = nullptr;
QString zoomedOutResamplingMethod = mZoomedOutResamplingComboBox->currentText();
if ( zoomedOutResamplingMethod == tr( "Average" ) )
{
zoomedOutResampler = new QgsBilinearRasterResampler();
}
resampleFilter->setZoomedOutResampler( zoomedOutResampler );
resampleFilter->setMaxOversampling( mMaximumOversamplingSpinBox->value() );
}
mRasterLayer->setBlendMode( mBlendModeComboBox->blendMode() ); mRasterLayer->setBlendMode( mBlendModeComboBox->blendMode() );
} }
@ -189,6 +236,42 @@ void QgsRendererRasterPropertiesWidget::syncToLayer( QgsRasterLayer* layer )
//blend mode //blend mode
mBlendModeComboBox->setBlendMode( mRasterLayer->blendMode() ); mBlendModeComboBox->setBlendMode( mRasterLayer->blendMode() );
const QgsRasterResampleFilter* resampleFilter = mRasterLayer->resampleFilter();
//set combo boxes to current resampling types
if ( resampleFilter )
{
const QgsRasterResampler* zoomedInResampler = resampleFilter->zoomedInResampler();
if ( zoomedInResampler )
{
if ( zoomedInResampler->type() == "bilinear" )
{
mZoomedInResamplingComboBox->setCurrentIndex( 1 );
}
else if ( zoomedInResampler->type() == "cubic" )
{
mZoomedInResamplingComboBox->setCurrentIndex( 2 );
}
}
else
{
mZoomedInResamplingComboBox->setCurrentIndex( 0 );
}
const QgsRasterResampler* zoomedOutResampler = resampleFilter->zoomedOutResampler();
if ( zoomedOutResampler )
{
if ( zoomedOutResampler->type() == "bilinear" ) //bilinear resampler does averaging when zooming out
{
mZoomedOutResamplingComboBox->setCurrentIndex( 1 );
}
}
else
{
mZoomedOutResamplingComboBox->setCurrentIndex( 0 );
}
mMaximumOversamplingSpinBox->setValue( resampleFilter->maxOversampling() );
}
} }
void QgsRendererRasterPropertiesWidget::on_mResetColorRenderingBtn_clicked() void QgsRendererRasterPropertiesWidget::on_mResetColorRenderingBtn_clicked()

View File

@ -20,11 +20,14 @@
#include "ui_qgsrendererrasterpropswidgetbase.h" #include "ui_qgsrendererrasterpropswidgetbase.h"
#include "qgsmapstylepanel.h"
class QgsRasterLayer; class QgsRasterLayer;
class QgsMapCanvas; class QgsMapCanvas;
class QgsRasterRendererWidget; class QgsRasterRendererWidget;
class GUI_EXPORT QgsRendererRasterPropertiesWidget : public QWidget, private Ui::QgsRendererRasterPropsWidgetBase class GUI_EXPORT QgsRendererRasterPropertiesWidget : public QgsMapStylePanel, private Ui::QgsRendererRasterPropsWidgetBase
{ {
Q_OBJECT Q_OBJECT
@ -34,7 +37,7 @@ class GUI_EXPORT QgsRendererRasterPropertiesWidget : public QWidget, private Ui:
* @param canvas The canvas object used to calculate the max and min values from the extent. * @param canvas The canvas object used to calculate the max and min values from the extent.
* @param parent Parent object * @param parent Parent object
*/ */
QgsRendererRasterPropertiesWidget( QgsMapCanvas *canvas, QWidget *parent = 0 ); QgsRendererRasterPropertiesWidget( QgsMapLayer* layer, QgsMapCanvas *canvas, QWidget *parent = 0 );
~QgsRendererRasterPropertiesWidget(); ~QgsRendererRasterPropertiesWidget();
/** Sets the map canvas associated with the dialog. This allows the widget to retrieve the current /** Sets the map canvas associated with the dialog. This allows the widget to retrieve the current
@ -49,14 +52,6 @@ class GUI_EXPORT QgsRendererRasterPropertiesWidget : public QWidget, private Ui:
*/ */
QgsRasterRendererWidget* currentRenderWidget() { return mRendererWidget; } QgsRasterRendererWidget* currentRenderWidget() { return mRendererWidget; }
signals:
/**
* Emitted when something on the widget has changed.
* All widgets will fire this event to notify of an internal change.
*/
void widgetChanged();
public slots: public slots:
//! called when user changes renderer type //! called when user changes renderer type
void rendererChanged(); void rendererChanged();
@ -83,7 +78,6 @@ class GUI_EXPORT QgsRendererRasterPropertiesWidget : public QWidget, private Ui:
void setRendererWidget( const QString& rendererName ); void setRendererWidget( const QString& rendererName );
QgsRasterLayer* mRasterLayer; QgsRasterLayer* mRasterLayer;
QgsMapCanvas* mMapCanvas;
QgsRasterRendererWidget* mRendererWidget; QgsRasterRendererWidget* mRendererWidget;
}; };

View File

@ -209,7 +209,7 @@
</sizepolicy> </sizepolicy>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>1</number>
</property> </property>
<widget class="QWidget" name="mOptsPage_General"> <widget class="QWidget" name="mOptsPage_General">
<layout class="QVBoxLayout" name="verticalLayout_6"> <layout class="QVBoxLayout" name="verticalLayout_6">
@ -238,8 +238,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>617</width> <width>615</width>
<height>541</height> <height>542</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_7"> <layout class="QVBoxLayout" name="verticalLayout_7">
@ -463,8 +463,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>603</width> <width>615</width>
<height>544</height> <height>542</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_10"> <layout class="QVBoxLayout" name="verticalLayout_10">
@ -1094,8 +1094,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>617</width> <width>435</width>
<height>541</height> <height>461</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_5"> <layout class="QVBoxLayout" name="verticalLayout_5">
@ -1510,8 +1510,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>659</width> <width>559</width>
<height>527</height> <height>217</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_12"> <layout class="QVBoxLayout" name="verticalLayout_12">
@ -1574,7 +1574,7 @@
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Ubuntu'; font-size:13pt; font-weight:400; font-style:normal;&quot;&gt; &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Cantarell'; font-size:11pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Cantarell'; font-size:11pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>
</widget> </widget>
@ -1680,8 +1680,8 @@ p, li { white-space: pre-wrap; }
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>617</width> <width>86</width>
<height>541</height> <height>36</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_16"> <layout class="QVBoxLayout" name="verticalLayout_16">
@ -1739,8 +1739,8 @@ p, li { white-space: pre-wrap; }
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>603</width> <width>334</width>
<height>697</height> <height>659</height>
</rect> </rect>
</property> </property>
<layout class="QGridLayout" name="gridLayout_12"> <layout class="QGridLayout" name="gridLayout_12">
@ -2194,6 +2194,17 @@ p, li { white-space: pre-wrap; }
</layout> </layout>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget>
<class>QgsColorButtonV2</class>
<extends>QToolButton</extends>
<header>qgscolorbuttonv2.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>QgsBlendModeComboBox</class>
<extends>QComboBox</extends>
<header>qgsblendmodecombobox.h</header>
</customwidget>
<customwidget> <customwidget>
<class>QgsCollapsibleGroupBox</class> <class>QgsCollapsibleGroupBox</class>
<extends>QGroupBox</extends> <extends>QGroupBox</extends>
@ -2217,17 +2228,6 @@ p, li { white-space: pre-wrap; }
<header>qgslayertreeembeddedconfigwidget.h</header> <header>qgslayertreeembeddedconfigwidget.h</header>
<container>1</container> <container>1</container>
</customwidget> </customwidget>
<customwidget>
<class>QgsColorButtonV2</class>
<extends>QToolButton</extends>
<header>qgscolorbuttonv2.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>QgsBlendModeComboBox</class>
<extends>QComboBox</extends>
<header>qgsblendmodecombobox.h</header>
</customwidget>
</customwidgets> </customwidgets>
<tabstops> <tabstops>
<tabstop>mOptionsListWidget</tabstop> <tabstop>mOptionsListWidget</tabstop>

View File

@ -6,23 +6,14 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>314</width> <width>330</width>
<height>392</height> <height>593</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Form</string> <string>Form</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_2"> <layout class="QGridLayout" name="gridLayout_2">
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<item row="0" column="0"> <item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QHBoxLayout" name="horizontalLayout">
<item> <item>
@ -46,7 +37,16 @@
</sizepolicy> </sizepolicy>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item> <item>
@ -69,14 +69,14 @@
<enum>QFrame::Raised</enum> <enum>QFrame::Raised</enum>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0"> <item row="0" column="0" colspan="2">
<widget class="QLabel" name="mBlendTypeLabel"> <widget class="QLabel" name="mBlendTypeLabel">
<property name="text"> <property name="text">
<string>Blending mode</string> <string>Blending mode</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="0" column="2" colspan="3">
<widget class="QgsBlendModeComboBox" name="mBlendModeComboBox"> <widget class="QgsBlendModeComboBox" name="mBlendModeComboBox">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
@ -86,14 +86,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="1" column="0" colspan="2">
<widget class="QLabel" name="label_2"> <widget class="QLabel" name="label_2">
<property name="text"> <property name="text">
<string>Brightness</string> <string>Brightness</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="1" column="2" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_11"> <layout class="QHBoxLayout" name="horizontalLayout_11">
<item> <item>
<widget class="QSlider" name="mSliderBrightness"> <widget class="QSlider" name="mSliderBrightness">
@ -132,14 +132,14 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="2" column="0"> <item row="2" column="0" colspan="2">
<widget class="QLabel" name="labelSaturation"> <widget class="QLabel" name="labelSaturation">
<property name="text"> <property name="text">
<string>Saturation</string> <string>Saturation</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="2" column="2" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_10"> <layout class="QHBoxLayout" name="horizontalLayout_10">
<item> <item>
<widget class="QSlider" name="sliderSaturation"> <widget class="QSlider" name="sliderSaturation">
@ -184,14 +184,14 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="3" column="0"> <item row="3" column="0" colspan="2">
<widget class="QLabel" name="label_5"> <widget class="QLabel" name="label_5">
<property name="text"> <property name="text">
<string>Contrast</string> <string>Contrast</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="1"> <item row="3" column="2" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_12"> <layout class="QHBoxLayout" name="horizontalLayout_12">
<item> <item>
<widget class="QSlider" name="mSliderContrast"> <widget class="QSlider" name="mSliderContrast">
@ -227,14 +227,14 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="4" column="0"> <item row="4" column="0" colspan="2">
<widget class="QLabel" name="labelGrayscale"> <widget class="QLabel" name="labelGrayscale">
<property name="text"> <property name="text">
<string>Grayscale</string> <string>Grayscale</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="1"> <item row="4" column="2" colspan="3">
<widget class="QComboBox" name="comboGrayscale"> <widget class="QComboBox" name="comboGrayscale">
<item> <item>
<property name="text"> <property name="text">
@ -265,7 +265,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="1"> <item row="5" column="2" colspan="3">
<layout class="QFormLayout" name="formLayout_2"> <layout class="QFormLayout" name="formLayout_2">
<item row="0" column="0" colspan="2"> <item row="0" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_8"> <layout class="QHBoxLayout" name="horizontalLayout_8">
@ -339,7 +339,7 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="6" column="1"> <item row="6" column="2" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_13"> <layout class="QHBoxLayout" name="horizontalLayout_13">
<item> <item>
<spacer name="horizontalSpacer_3"> <spacer name="horizontalSpacer_3">
@ -373,6 +373,43 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="7" column="0" colspan="5">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Resampling</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="mZoomedInResamplingLabel">
<property name="text">
<string>Zoomed in</string>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLabel" name="mZoomedOutResamplingLabel">
<property name="text">
<string>Zoomed out</string>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="mMaximumOversamplingLabel">
<property name="text">
<string>Oversampling</string>
</property>
</widget>
</item>
<item row="8" column="2" colspan="3">
<widget class="QComboBox" name="mZoomedInResamplingComboBox"/>
</item>
<item row="9" column="2" colspan="3">
<widget class="QComboBox" name="mZoomedOutResamplingComboBox"/>
</item>
<item row="10" column="2" colspan="3">
<widget class="QDoubleSpinBox" name="mMaximumOversamplingSpinBox"/>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>