@@ -50,6 +50,8 @@ QgsMapSaveDialog::QgsMapSaveDialog( QWidget *parent, QgsMapCanvas *mapCanvas, co
50
50
mDrawDecorations ->setText ( tr ( " Draw active decorations: %1" ).arg ( !activeDecorations.isEmpty () ? activeDecorations : tr ( " none" ) ) );
51
51
52
52
connect ( mResolutionSpinBox , static_cast < void ( QSpinBox::* )( int ) > ( &QSpinBox::valueChanged ), this , &QgsMapSaveDialog::updateDpi );
53
+ connect ( mOutputWidthSpinBox , static_cast < void ( QSpinBox::* )( int ) > ( &QSpinBox::valueChanged ), this , &QgsMapSaveDialog::updateOutputWidth );
54
+ connect ( mOutputHeightSpinBox , static_cast < void ( QSpinBox::* )( int ) > ( &QSpinBox::valueChanged ), this , &QgsMapSaveDialog::updateOutputHeight );
53
55
connect ( mExtentGroupBox , &QgsExtentGroupBox::extentChanged, this , &QgsMapSaveDialog::updateExtent );
54
56
connect ( mScaleWidget , &QgsScaleWidget::scaleChanged, this , &QgsMapSaveDialog::updateScale );
55
57
@@ -64,6 +66,32 @@ void QgsMapSaveDialog::updateDpi( int dpi )
64
66
updateOutputSize ();
65
67
}
66
68
69
+ void QgsMapSaveDialog::updateOutputWidth ( int width )
70
+ {
71
+ double scale = ( double )width / mSize .width ();
72
+ double adjustment = ( ( mExtent .width () * scale ) - mExtent .width () ) / 2 ;
73
+
74
+ mExtent .setXMinimum ( mExtent .xMinimum () - adjustment );
75
+ mExtent .setXMaximum ( mExtent .xMaximum () + adjustment );
76
+
77
+ whileBlocking ( mExtentGroupBox )->setOutputExtentFromUser ( mExtent , mExtentGroupBox ->currentCrs () );
78
+
79
+ mSize .setWidth ( width );
80
+ }
81
+
82
+ void QgsMapSaveDialog::updateOutputHeight ( int height )
83
+ {
84
+ double scale = ( double )height / mSize .height ();
85
+ double adjustment = ( ( mExtent .height () * scale ) - mExtent .height () ) / 2 ;
86
+
87
+ mExtent .setYMinimum ( mExtent .yMinimum () - adjustment );
88
+ mExtent .setYMaximum ( mExtent .yMaximum () + adjustment );
89
+
90
+ whileBlocking ( mExtentGroupBox )->setOutputExtentFromUser ( mExtent , mExtentGroupBox ->currentCrs () );
91
+
92
+ mSize .setHeight ( height );
93
+ }
94
+
67
95
void QgsMapSaveDialog::updateExtent ( const QgsRectangle &extent )
68
96
{
69
97
mSize .setWidth ( mSize .width () * extent.width () / mExtent .width () );
@@ -87,7 +115,8 @@ void QgsMapSaveDialog::updateScale( double scale )
87
115
88
116
void QgsMapSaveDialog::updateOutputSize ()
89
117
{
90
- mOutputSize ->setText ( tr ( " Output size: %1 x %2 pixels" ).arg ( mSize .width () ).arg ( mSize .height () ) );
118
+ whileBlocking ( mOutputWidthSpinBox )->setValue ( mSize .width () );
119
+ whileBlocking ( mOutputHeightSpinBox )->setValue ( mSize .height () );
91
120
}
92
121
93
122
QgsRectangle QgsMapSaveDialog::extent () const
@@ -114,3 +143,8 @@ bool QgsMapSaveDialog::drawDecorations() const
114
143
{
115
144
return mDrawDecorations ->isChecked ();
116
145
}
146
+
147
+ bool QgsMapSaveDialog::saveWorldFile () const
148
+ {
149
+ return mSaveWorldFile ->isChecked ();
150
+ }
0 commit comments