Skip to content

Commit

Permalink
Fix rotated canvas scale issue in save as image
Browse files Browse the repository at this point in the history
  • Loading branch information
nirvn committed May 3, 2017
1 parent a2327d3 commit e1b1400
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 14 deletions.
8 changes: 0 additions & 8 deletions src/app/qgisapp.cpp
Expand Up @@ -5804,14 +5804,6 @@ void QgisApp::saveMapAsImage()
QPair< QString, QString> myFileNameAndFilter = QgisGui::getSaveAsImageName( this, tr( "Choose a file name to save the map image as" ) );
if ( myFileNameAndFilter.first != QLatin1String( "" ) )
{
QSize size = mMapCanvas->size();
if ( dlg.extent() != mMapCanvas->extent() )
{
size.setWidth( mMapCanvas->size().width() * dlg.extent().width() / mMapCanvas->extent().width() );
size.setHeight( mMapCanvas->size().height() * dlg.extent().height() / mMapCanvas->extent().height() );
}
size *= dlg.dpi() / qt_defaultDpiX();

QgsMapSettings ms = QgsMapSettings();
ms.setDestinationCrs( QgsProject::instance()->crs() );
ms.setExtent( dlg.extent() );
Expand Down
16 changes: 10 additions & 6 deletions src/app/qgsmapsavedialog.cpp
Expand Up @@ -31,19 +31,23 @@ Q_GUI_EXPORT extern int qt_defaultDpiX();

QgsMapSaveDialog::QgsMapSaveDialog( QWidget *parent, QgsMapCanvas *mapCanvas, const QString &activeDecorations )
: QDialog( parent )
, mExtent( mapCanvas->mapSettings().visibleExtent() )
, mDpi( mapCanvas->mapSettings().outputDpi() )
, mSize( mapCanvas->mapSettings().outputSize() )
{
setupUi( this );

// Use unrotated visible extent to insure output size and scale matches canvas
QgsMapSettings ms = mapCanvas->mapSettings();
ms.setRotation( 0 );
mExtent = ms.visibleExtent();
mDpi = ms.outputDpi();
mSize = ms.outputSize();

mResolutionSpinBox->setValue( qt_defaultDpiX() );

mExtentGroupBox->setOutputCrs( mapCanvas->mapSettings().destinationCrs() );
mExtentGroupBox->setCurrentExtent( mExtent, mapCanvas->mapSettings().destinationCrs() );
mExtentGroupBox->setOutputCrs( ms.destinationCrs() );
mExtentGroupBox->setCurrentExtent( mExtent, ms.destinationCrs() );
mExtentGroupBox->setOutputExtentFromCurrent();

mScaleWidget->setScale( 1 / mapCanvas->mapSettings().scale() );
mScaleWidget->setScale( 1 / ms.scale() );
mScaleWidget->setMapCanvas( mapCanvas );
mScaleWidget->setShowCurrentScaleButton( true );

Expand Down

0 comments on commit e1b1400

Please sign in to comment.