[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