[QGIS Commit] r10162 - in trunk/qgis/src: app/composer
core/composer ui
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Fri Feb 13 10:42:57 EST 2009
Author: mhugent
Date: 2009-02-13 10:42:55 -0500 (Fri, 13 Feb 2009)
New Revision: 10162
Modified:
trunk/qgis/src/app/composer/qgscomposer.cpp
trunk/qgis/src/app/composer/qgscompositionwidget.cpp
trunk/qgis/src/app/composer/qgscompositionwidget.h
trunk/qgis/src/core/composer/qgscomposition.cpp
trunk/qgis/src/core/composer/qgscomposition.h
trunk/qgis/src/ui/qgscompositionwidgetbase.ui
Log:
Add the option to print maps as rasters
Modified: trunk/qgis/src/app/composer/qgscomposer.cpp
===================================================================
--- trunk/qgis/src/app/composer/qgscomposer.cpp 2009-02-13 14:14:53 UTC (rev 10161)
+++ trunk/qgis/src/app/composer/qgscomposer.cpp 2009-02-13 15:42:55 UTC (rev 10162)
@@ -460,7 +460,6 @@
printer.setColorMode( QPrinter::Color );
QPrintDialog printDialog( &printer );
-
if ( printDialog.exec() == QDialog::Accepted )
{
//set user-defined resolution
@@ -475,6 +474,24 @@
QApplication::setOverrideCursor( Qt::BusyCursor );
+ if(mComposition->printAsRaster())
+ {
+ //print out via QImage, code copied from on_mActionExportAsImage_activated
+ int width = ( int )( mComposition->printResolution() * mComposition->paperWidth() / 25.4 );
+ int height = ( int )( mComposition-> printResolution() * mComposition->paperHeight() / 25.4 );
+ QImage image( QSize( width, height ), QImage::Format_ARGB32 );
+ image.setDotsPerMeterX( mComposition->printResolution() / 25.4 * 1000 );
+ image.setDotsPerMeterY( mComposition->printResolution() / 25.4 * 1000 );
+ image.fill( 0 );
+ QPainter imagePainter( &image );
+ QRectF sourceArea( 0, 0, mComposition->paperWidth(), mComposition->paperHeight() );
+ QRectF targetArea( 0, 0, width, height );
+ mComposition->render( &imagePainter, targetArea, sourceArea );
+ imagePainter.end();
+ p.drawImage(targetArea, image, targetArea);
+ }
+ else
+ {
#if QT_VERSION < 0x040400
QRectF paperRect( 0, 0, mComposition->paperWidth(), mComposition->paperHeight() );
QRect pageRect = printer.pageRect();
@@ -485,8 +502,8 @@
QRectF paperRectPixel = printer.pageRect( QPrinter::DevicePixel );
mComposition->render( &p, paperRectPixel, paperRectMM );
#endif
+ }
mComposition->setPlotStyle( savedPlotStyle );
-
QApplication::restoreOverrideCursor();
}
}
Modified: trunk/qgis/src/app/composer/qgscompositionwidget.cpp
===================================================================
--- trunk/qgis/src/app/composer/qgscompositionwidget.cpp 2009-02-13 14:14:53 UTC (rev 10161)
+++ trunk/qgis/src/app/composer/qgscompositionwidget.cpp 2009-02-13 15:42:55 UTC (rev 10162)
@@ -44,6 +44,16 @@
//read printout resolution from composition
mResolutionLineEdit->setText( QString::number( mComposition->printResolution() ) );
+ //print as raster
+ if(mComposition->printAsRaster())
+ {
+ mPrintAsRasterCheckBox->setCheckState(Qt::Checked);
+ }
+ else
+ {
+ mPrintAsRasterCheckBox->setCheckState(Qt::Unchecked);
+ }
+
//snap grid
if ( mComposition->snapToGridEnabled() )
{
@@ -367,6 +377,23 @@
}
}
+void QgsCompositionWidget::on_mPrintAsRasterCheckBox_stateChanged(int state)
+{
+ if(!mComposition)
+ {
+ return;
+ }
+
+ if(state == Qt::Checked)
+ {
+ mComposition->setPrintAsRaster(true);
+ }
+ else
+ {
+ mComposition->setPrintAsRaster(false);
+ }
+}
+
void QgsCompositionWidget::on_mSnapToGridCheckBox_stateChanged( int state )
{
if ( mComposition )
Modified: trunk/qgis/src/app/composer/qgscompositionwidget.h
===================================================================
--- trunk/qgis/src/app/composer/qgscompositionwidget.h 2009-02-13 14:14:53 UTC (rev 10161)
+++ trunk/qgis/src/app/composer/qgscompositionwidget.h 2009-02-13 15:42:55 UTC (rev 10162)
@@ -45,6 +45,7 @@
void on_mPaperWidthLineEdit_editingFinished();
void on_mPaperHeightLineEdit_editingFinished();
void on_mResolutionLineEdit_textChanged( const QString& text );
+ void on_mPrintAsRasterCheckBox_stateChanged(int state);
void on_mSnapToGridCheckBox_stateChanged( int state );
void on_mResolutionSpinBox_valueChanged( double d );
Modified: trunk/qgis/src/core/composer/qgscomposition.cpp
===================================================================
--- trunk/qgis/src/core/composer/qgscomposition.cpp 2009-02-13 14:14:53 UTC (rev 10161)
+++ trunk/qgis/src/core/composer/qgscomposition.cpp 2009-02-13 15:42:55 UTC (rev 10162)
@@ -34,11 +34,18 @@
mPaperItem->setZValue( 0 );
mPrintResolution = 300; //hardcoded default
loadGridAppearanceSettings();
+
+ //mPrintAsRaster
+ QSettings s;
+ mPrintAsRaster = s.value("/qgis/composerPrintAsRaster", false).toBool();
}
-QgsComposition::QgsComposition(): QGraphicsScene( 0 ), mMapRenderer( 0 ), mPlotStyle( QgsComposition::Preview ), mPaperItem( 0 ), mSnapToGrid( false ), mSnapGridResolution( 0.0 ), mSnapGridOffsetX( 0.0 ), mSnapGridOffsetY( 0.0 )
+QgsComposition::QgsComposition(): QGraphicsScene( 0 ), mMapRenderer( 0 ), mPlotStyle( QgsComposition::Preview ), mPaperItem( 0 ), mPrintAsRaster(false), mSnapToGrid( false ), mSnapGridResolution( 0.0 ), mSnapGridOffsetX( 0.0 ), mSnapGridOffsetY( 0.0 )
{
- saveGridAppearanceSettings();
+ loadGridAppearanceSettings();
+ //mPrintAsRaster
+ QSettings s;
+ mPrintAsRaster = s.value("/qgis/composerPrintAsRaster", false).toBool();
}
QgsComposition::~QgsComposition()
@@ -697,6 +704,13 @@
saveGridAppearanceSettings();
}
+void QgsComposition::setPrintAsRaster(bool enabled)
+{
+ mPrintAsRaster = enabled;
+ QSettings s;
+ s.setValue("/qgis/composerPrintAsRaster", QVariant(mPrintAsRaster));
+}
+
void QgsComposition::loadGridAppearanceSettings()
{
//read grid style, grid color and pen width from settings
Modified: trunk/qgis/src/core/composer/qgscomposition.h
===================================================================
--- trunk/qgis/src/core/composer/qgscomposition.h 2009-02-13 14:14:53 UTC (rev 10161)
+++ trunk/qgis/src/core/composer/qgscomposition.h 2009-02-13 15:42:55 UTC (rev 10162)
@@ -99,6 +99,9 @@
int printResolution() const {return mPrintResolution;}
void setPrintResolution( int dpi ) {mPrintResolution = dpi;}
+ bool printAsRaster() const {return mPrintAsRaster;}
+ void setPrintAsRaster(bool enabled);
+
/**Returns pointer to map renderer of qgis map canvas*/
QgsMapRenderer* mapRenderer() {return mMapRenderer;}
@@ -162,6 +165,9 @@
/**Dpi for printout*/
int mPrintResolution;
+ /**Flag if map should be printed as a raster (via QImage). False by default*/
+ bool mPrintAsRaster;
+
/**Parameters for snap to grid function*/
bool mSnapToGrid;
double mSnapGridResolution;
Modified: trunk/qgis/src/ui/qgscompositionwidgetbase.ui
===================================================================
--- trunk/qgis/src/ui/qgscompositionwidgetbase.ui 2009-02-13 14:14:53 UTC (rev 10161)
+++ trunk/qgis/src/ui/qgscompositionwidgetbase.ui 2009-02-13 15:42:55 UTC (rev 10162)
@@ -6,7 +6,7 @@
<x>0</x>
<y>0</y>
<width>301</width>
- <height>735</height>
+ <height>761</height>
</rect>
</property>
<property name="sizePolicy" >
@@ -276,6 +276,13 @@
<item row="2" column="1" >
<widget class="QLineEdit" name="mResolutionLineEdit" />
</item>
+ <item row="3" column="0" >
+ <widget class="QCheckBox" name="mPrintAsRasterCheckBox" >
+ <property name="text" >
+ <string>Print as raster</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
<layoutdefault spacing="6" margin="11" />
More information about the QGIS-commit
mailing list