Quantum GIS API Documentation  1.8
Public Types | Public Slots | Signals | Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions | Private Attributes
QgsMapRenderer Class Reference

A non GUI class for rendering a map layer set onto a QPainter. More...

#include <qgsmaprenderer.h>

Collaboration diagram for QgsMapRenderer:
Collaboration graph
[legend]

List of all members.

Public Types

enum  OutputUnits { Millimeters, Pixels }
 Output units for pen width and point marker width/height. More...

Public Slots

void onDrawingProgress (int current, int total)
 called by signal from layer current being drawn
void invalidateCachedLayerCrs ()
 invalidate cached layer CRS
void cachedLayerDestroyed ()
 cached layer was destroyed

Signals

void drawingProgress (int current, int total)
void hasCrsTransformEnabled (bool flag)
void destinationSrsChanged ()
void updateMap ()
void mapUnitsChanged ()
void drawError (QgsMapLayer *)
 emitted when layer's draw() returned false

Public Member Functions

 QgsMapRenderer ()
 constructor
 ~QgsMapRenderer ()
 destructor
void render (QPainter *painter, double *forceWidthScale=0)
 starts rendering @ param forceWidthScale Force a specific scale factor for line widths and marker sizes.
bool setExtent (const QgsRectangle &extent)
 sets extent and checks whether suitable (returns false if not)
QgsRectangle extent () const
 returns current extent
const QgsMapToPixelcoordinateTransform ()
double scale () const
void setScale (double scale)
 Sets scale for scale based visibility.
double mapUnitsPerPixel () const
int width () const
int height () const
void updateScale ()
 Recalculate the map scale.
Q_DECL_DEPRECATED QgsDistanceAreadistanceArea ()
 Return the measuring object.
QGis::UnitType mapUnits () const
void setMapUnits (QGis::UnitType u)
void enableOverviewMode (bool isOverview=true)
 sets whether map image will be for overview
void setOutputSize (QSize size, int dpi)
void setOutputSize (QSizeF size, double dpi)
double outputDpi ()
 accessor for output dpi
QSize outputSize ()
 accessor for output size
QSizeF outputSizeF ()
QgsRectangle layerExtentToOutputExtent (QgsMapLayer *theLayer, QgsRectangle extent)
 transform extent in layer's CRS to extent in output CRS
QgsPoint layerToMapCoordinates (QgsMapLayer *theLayer, QgsPoint point)
 transform coordinates from layer's CRS to output CRS
QgsPoint mapToLayerCoordinates (QgsMapLayer *theLayer, QgsPoint point)
 transform coordinates from output CRS to layer's CRS
QgsRectangle mapToLayerCoordinates (QgsMapLayer *theLayer, QgsRectangle rect)
 transform rect's coordinates from output CRS to layer's CRS
void setProjectionsEnabled (bool enabled)
 sets whether to use projections for this layer set
bool hasCrsTransformEnabled ()
 returns true if projections are enabled for this layer set
Q_DECL_DEPRECATED void setDestinationSrs (const QgsCoordinateReferenceSystem &srs)
 sets destination coordinate reference system
Q_DECL_DEPRECATED const
QgsCoordinateReferenceSystem
destinationSrs ()
 returns CRS of destination coordinate reference system
void setDestinationCrs (const QgsCoordinateReferenceSystem &crs)
 sets destination coordinate reference system
const
QgsCoordinateReferenceSystem
destinationCrs ()
 returns CRS of destination coordinate reference system
void setOutputUnits (OutputUnits u)
OutputUnits outputUnits () const
QgsRectangle fullExtent ()
 returns current extent of layer set
QStringList & layerSet ()
 returns current layer set
void setLayerSet (const QStringList &layers)
 change current layer set
void updateFullExtent ()
 updates extent of the layer set
bool readXML (QDomNode &theNode)
 read settings
bool writeXML (QDomNode &theNode, QDomDocument &theDoc)
 write settings
QgsRenderContextrendererContext ()
 Accessor for render context.
QgsLabelingEngineInterfacelabelingEngine ()
 Labeling engine (NULL if there's no custom engine)
void setLabelingEngine (QgsLabelingEngineInterface *iface)
 Set labeling engine.

Protected Member Functions

void adjustExtentToSize ()
 adjust extent to fit the pixmap size
bool splitLayersExtent (QgsMapLayer *layer, QgsRectangle &extent, QgsRectangle &r2)
 Convenience function to project an extent into the layer source CRS, but also split it into two extents if it crosses the +/- 180 degree line.
QgsOverlayObjectPositionManageroverlayManagerFromSettings ()
 Creates an overlay object position manager subclass according to the current settings.

Protected Attributes

double mMapUnitsPerPixel
 map units per pixel
double mScale
 Map scale at its current zool level.
QgsScaleCalculatormScaleCalculator
 scale calculator
QgsRectangle mExtent
 current extent to be drawn
QgsRectangle mLastExtent
 Last extent to we drew so we know if we can used layer render caching or not.
bool mOverview
 indicates whether it's map image for overview
QSizeF mSize
bool mProjectionsEnabled
 detemines whether on the fly projection support is enabled
QgsCoordinateReferenceSystemmDestCRS
 destination spatial reference system of the projection
QStringList mLayerSet
 stores array of layers to be rendered (identified by string)
QgsRectangle mFullExtent
 full extent of the layer set
QgsDistanceAreamDistArea
 tool for measuring
QgsRenderContext mRenderContext
 Encapsulates context of rendering.
OutputUnits mOutputUnits
 Output units.
QgsLabelingEngineInterfacemLabelingEngine
 Labeling engine (NULL by default)
QMutex mRenderMutex
 Locks rendering loop for concurrent draws.

Static Protected Attributes

static bool mDrawing = false
 indicates drawing in progress

Private Member Functions

QgsCoordinateTransformtr (QgsMapLayer *layer)

Private Attributes

QgsCoordinateTransformmCachedTr
QgsMapLayermCachedTrForLayer

Detailed Description

A non GUI class for rendering a map layer set onto a QPainter.

Definition at line 102 of file qgsmaprenderer.h.


Member Enumeration Documentation

Output units for pen width and point marker width/height.

Enumerator:
Millimeters 
Pixels 

Definition at line 109 of file qgsmaprenderer.h.


Constructor & Destructor Documentation

destructor

Definition at line 67 of file qgsmaprenderer.cpp.

References mCachedTr, mDestCRS, mDistArea, mLabelingEngine, and mScaleCalculator.


Member Function Documentation

void QgsMapRenderer::adjustExtentToSize ( ) [protected]

cached layer was destroyed

Definition at line 1134 of file qgsmaprenderer.cpp.

References mCachedTrForLayer.

Referenced by tr().

Q_DECL_DEPRECATED const QgsCoordinateReferenceSystem& QgsMapRenderer::destinationSrs ( ) [inline]

returns CRS of destination coordinate reference system

Note:
deprecated by qgis 1.7
See also:
destinationCrs

Definition at line 192 of file qgsmaprenderer.h.

Referenced by setDestinationCrs().

Q_DECL_DEPRECATED QgsDistanceArea* QgsMapRenderer::distanceArea ( ) [inline]

Return the measuring object.

Deprecated:

Definition at line 148 of file qgsmaprenderer.h.

void QgsMapRenderer::drawError ( QgsMapLayer ) [signal]

emitted when layer's draw() returned false

Referenced by render().

void QgsMapRenderer::drawingProgress ( int  current,
int  total 
) [signal]

Referenced by render().

void QgsMapRenderer::enableOverviewMode ( bool  isOverview = true) [inline]

sets whether map image will be for overview

Definition at line 153 of file qgsmaprenderer.h.

Referenced by QgsMapOverviewCanvas::QgsMapOverviewCanvas().

returns current extent of layer set

Definition at line 916 of file qgsmaprenderer.cpp.

References mFullExtent, and updateFullExtent().

Referenced by QgsMapCanvas::fullExtent().

void QgsMapRenderer::hasCrsTransformEnabled ( bool  flag) [signal]
int QgsMapRenderer::height ( ) const [inline]

Definition at line 141 of file qgsmaprenderer.h.

invalidate cached layer CRS

Definition at line 1140 of file qgsmaprenderer.cpp.

References mCachedTrForLayer.

Referenced by setDestinationCrs(), and tr().

Labeling engine (NULL if there's no custom engine)

Note:
Added in QGIS v1.4

Definition at line 227 of file qgsmaprenderer.h.

Referenced by QgsComposerMap::draw().

QStringList & QgsMapRenderer::layerSet ( )

transform rect's coordinates from output CRS to layer's CRS

Definition at line 835 of file qgsmaprenderer.cpp.

References hasCrsTransformEnabled(), QgsDebugMsg, QgsCoordinateTransform::ReverseTransform, tr(), QgsCoordinateTransform::transform(), and QgsException::what().

Referenced by setMapUnits().

double QgsMapRenderer::mapUnitsPerPixel ( ) const [inline]
void QgsMapRenderer::onDrawingProgress ( int  current,
int  total 
) [slot]

called by signal from layer current being drawn

Definition at line 652 of file qgsmaprenderer.cpp.

References updateMap().

Referenced by render().

accessor for output dpi

Definition at line 143 of file qgsmaprenderer.cpp.

References QgsScaleCalculator::dpi(), and mScaleCalculator.

Referenced by QgsQuickPrint::printMap(), and QgsMapCanvasItem::setRenderContextVariables().

accessor for output size

Definition at line 148 of file qgsmaprenderer.cpp.

References mSize.

Referenced by QgsQuickPrint::printMap().

Definition at line 153 of file qgsmaprenderer.cpp.

References mSize.

Definition at line 202 of file qgsmaprenderer.h.

Referenced by QgsMapCanvasItem::setRenderContextVariables().

Creates an overlay object position manager subclass according to the current settings.

Note:
this method was added in version 1.1

Definition at line 934 of file qgsmaprenderer.cpp.

References QgsPALObjectPositionManager::setPlacementAlgorithm().

Referenced by render().

bool QgsMapRenderer::readXML ( QDomNode &  theNode)
void QgsMapRenderer::render ( QPainter *  painter,
double *  forceWidthScale = 0 
)

starts rendering @ param forceWidthScale Force a specific scale factor for line widths and marker sizes.

Automatically calculated from output device DPI if 0

Definition at line 220 of file qgsmaprenderer.cpp.

References QgsOverlayObjectPositionManager::addLayer(), QgsMapLayer::cacheImage(), QgsMapLayerRegistry::clearAllLayerCaches(), QgsMapLayer::crs(), QgsScaleCalculator::dpi(), QgsMapLayer::draw(), drawError(), drawingProgress(), QgsLabelingEngineInterface::drawLabeling(), QgsMapLayer::drawLabels(), QgsLabelingEngineInterface::exit(), QgsMapLayer::extent(), QgsOverlayObjectPositionManager::findObjectPositions(), hasCrsTransformEnabled(), QgsMapLayer::hasScaleBasedVisibility(), QgsLabelingEngineInterface::init(), QgsMapLayerRegistry::instance(), QgsVectorLayer::isEditable(), QgsRectangle::isEmpty(), QgsRectangle::isFinite(), QgsRenderContext::labelingEngine(), QgsMapLayerRegistry::mapLayer(), QgsRenderContext::mapToPixel(), QgsScaleCalculator::mapUnits(), QgsMapToPixel::mapUnitsPerPixel(), QgsMapLayer::maximumScale(), mDestCRS, mDrawing, mExtent, Millimeters, QgsMapLayer::minimumScale(), mLabelingEngine, mLastExtent, mLayerSet, mOutputUnits, mOverview, mRenderContext, mRenderMutex, mScale, mScaleCalculator, mSize, QgsMapLayer::name(), onDrawingProgress(), overlayManagerFromSettings(), QgsRenderContext::painter(), QgsDebugMsg, QgsMapLayer::RasterLayer, QgsRenderContext::rasterScaleFactor(), rasterScaleFactor, QgsOverlayObjectPositionManager::removeLayers(), QgsRenderContext::rendererScale(), QgsRenderContext::renderingStopped(), QgsRenderContext::scaleFactor(), QgsMapLayer::setCacheImage(), QgsRenderContext::setCoordinateTransform(), QgsRenderContext::setDrawEditingInformation(), QgsRenderContext::setExtent(), QgsRenderContext::setLabelingEngine(), QgsRenderContext::setMapToPixel(), QgsMapToPixel::setMapUnitsPerPixel(), QgsRenderContext::setPainter(), QgsRenderContext::setRasterScaleFactor(), QgsRenderContext::setRendererScale(), QgsRenderContext::setRenderingStopped(), QgsRenderContext::setScaleFactor(), QgsMapToPixel::setYMaximum(), splitLayersExtent(), QgsRectangle::toString(), QgsMapLayer::type(), QgsMapLayer::VectorLayer, QgsVectorLayer::vectorOverlays(), and QgsLabelingEngineInterface::willUseLayer().

Referenced by QgsComposerMap::draw(), QgsQuickPrint::printMap(), QgsMapOverviewCanvas::refresh(), QgsMapCanvasMap::render(), and QgsMapCanvas::saveAsImage().

Accessor for render context.

Definition at line 223 of file qgsmaprenderer.h.

Referenced by QgsComposerMap::draw(), QgsMapCanvas::paintEvent(), and QgsMapCanvas::setRenderFlag().

double QgsMapRenderer::scale ( ) const [inline]
Q_DECL_DEPRECATED void QgsMapRenderer::setDestinationSrs ( const QgsCoordinateReferenceSystem srs) [inline]

sets destination coordinate reference system

Note:
deprecated by qgis 1.7
See also:
setDestinationCrs

Definition at line 186 of file qgsmaprenderer.h.

bool QgsMapRenderer::setExtent ( const QgsRectangle extent)

Set labeling engine.

Previous engine (if any) is deleted. Takes ownership of the engine. Added in QGIS v1.4

Definition at line 1109 of file qgsmaprenderer.cpp.

References mLabelingEngine.

Referenced by QgsComposerMap::draw().

void QgsMapRenderer::setLayerSet ( const QStringList &  layers)

change current layer set

Definition at line 922 of file qgsmaprenderer.cpp.

References mLayerSet, QgsDebugMsg, and updateFullExtent().

Referenced by QgsComposerMap::draw(), QgsMapOverviewCanvas::setLayerSet(), and QgsMapCanvas::setLayerSet().

void QgsMapRenderer::setOutputSize ( QSize  size,
int  dpi 
)
void QgsMapRenderer::setOutputSize ( QSizeF  size,
double  dpi 
)

Definition at line 200 of file qgsmaprenderer.h.

void QgsMapRenderer::setProjectionsEnabled ( bool  enabled)
void QgsMapRenderer::setScale ( double  scale) [inline]

Sets scale for scale based visibility.

Normally, the scale is calculated automatically. This function is only used to force a preview scale (e.g. for print composer)

Definition at line 137 of file qgsmaprenderer.h.

Referenced by QgsComposerMap::draw().

bool QgsMapRenderer::splitLayersExtent ( QgsMapLayer layer,
QgsRectangle extent,
QgsRectangle r2 
) [protected]

Convenience function to project an extent into the layer source CRS, but also split it into two extents if it crosses the +/- 180 degree line.

Modifies the given extent to be in the source CRS coordinates, and if it was split, returns true, and also sets the contents of the r2 parameter

Definition at line 716 of file qgsmaprenderer.cpp.

References extent(), QgsCoordinateReferenceSystem::geographicFlag(), hasCrsTransformEnabled(), mCachedTr, QgsDebugMsg, QgsCoordinateTransform::ReverseTransform, QgsRectangle::setXMaximum(), QgsRectangle::setXMinimum(), QgsCoordinateTransform::sourceCrs(), tr(), QgsCoordinateTransform::transform(), QgsCoordinateTransform::transformBoundingBox(), QgsPoint::x(), QgsRectangle::xMaximum(), QgsRectangle::xMinimum(), QgsRectangle::yMaximum(), and QgsRectangle::yMinimum().

Referenced by render().

void QgsMapRenderer::updateMap ( ) [signal]

Referenced by onDrawingProgress().

Recalculate the map scale.

Definition at line 82 of file qgsmaprenderer.cpp.

References QgsScaleCalculator::calculate(), mExtent, mScale, mScaleCalculator, and mSize.

Referenced by adjustExtentToSize(), and setMapUnits().

int QgsMapRenderer::width ( ) const [inline]

Definition at line 140 of file qgsmaprenderer.h.

bool QgsMapRenderer::writeXML ( QDomNode &  theNode,
QDomDocument &  theDoc 
)

Member Data Documentation

Definition at line 333 of file qgsmaprenderer.h.

Referenced by QgsMapRenderer(), splitLayersExtent(), tr(), and ~QgsMapRenderer().

destination spatial reference system of the projection

Definition at line 308 of file qgsmaprenderer.h.

Referenced by destinationCrs(), QgsMapRenderer(), render(), setDestinationCrs(), tr(), and ~QgsMapRenderer().

tool for measuring

Definition at line 317 of file qgsmaprenderer.h.

Referenced by QgsMapRenderer(), setDestinationCrs(), setProjectionsEnabled(), and ~QgsMapRenderer().

bool QgsMapRenderer::mDrawing = false [static, protected]

indicates drawing in progress

Definition at line 278 of file qgsmaprenderer.h.

Referenced by QgsMapRenderer(), and render().

current extent to be drawn

Definition at line 290 of file qgsmaprenderer.h.

Referenced by adjustExtentToSize(), extent(), render(), setDestinationCrs(), setExtent(), and updateScale().

full extent of the layer set

Definition at line 314 of file qgsmaprenderer.h.

Referenced by fullExtent(), and updateFullExtent().

Labeling engine (NULL by default)

Definition at line 326 of file qgsmaprenderer.h.

Referenced by QgsMapRenderer(), render(), setLabelingEngine(), and ~QgsMapRenderer().

Last extent to we drew so we know if we can used layer render caching or not.

Note there are no accessors for this as it is intended to internal use only.

Note:
added in QGIS 1.4

Definition at line 297 of file qgsmaprenderer.h.

Referenced by render(), setExtent(), and setProjectionsEnabled().

QStringList QgsMapRenderer::mLayerSet [protected]

stores array of layers to be rendered (identified by string)

Definition at line 311 of file qgsmaprenderer.h.

Referenced by layerSet(), render(), setLayerSet(), and updateFullExtent().

map units per pixel

Definition at line 281 of file qgsmaprenderer.h.

Referenced by adjustExtentToSize().

Output units.

Definition at line 323 of file qgsmaprenderer.h.

Referenced by QgsMapRenderer(), and render().

bool QgsMapRenderer::mOverview [protected]

indicates whether it's map image for overview

Definition at line 300 of file qgsmaprenderer.h.

Referenced by QgsMapRenderer(), and render().

detemines whether on the fly projection support is enabled

Definition at line 305 of file qgsmaprenderer.h.

Referenced by hasCrsTransformEnabled(), QgsMapRenderer(), and setProjectionsEnabled().

Encapsulates context of rendering.

Definition at line 320 of file qgsmaprenderer.h.

Referenced by adjustExtentToSize(), and render().

QMutex QgsMapRenderer::mRenderMutex [protected]

Locks rendering loop for concurrent draws.

Definition at line 329 of file qgsmaprenderer.h.

Referenced by render().

double QgsMapRenderer::mScale [protected]

Map scale at its current zool level.

Definition at line 284 of file qgsmaprenderer.h.

Referenced by adjustExtentToSize(), render(), and updateScale().

scale calculator

Definition at line 287 of file qgsmaprenderer.h.

Referenced by mapUnits(), outputDpi(), QgsMapRenderer(), render(), setMapUnits(), setOutputSize(), updateScale(), and ~QgsMapRenderer().

QSizeF QgsMapRenderer::mSize [protected]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines