QGIS API Documentation  2.0.1-Dufour
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Types | Public Slots | Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions | List of all members
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]

Public Types

enum  OutputUnits { Millimeters, Pixels }
 Output units for pen width and point marker width/height. More...
enum  BlendMode {
  BlendNormal, BlendLighten, BlendScreen, BlendDodge,
  BlendAddition, BlendDarken, BlendMultiply, BlendBurn,
  BlendOverlay, BlendSoftLight, BlendHardLight, BlendDifference,
  BlendSubtract
}
 Blending modes enum defining the available composition modes that can be used when rendering a layer. More...

Public Slots

void onDrawingProgress (int current, int total)
 called by signal from layer current being drawn

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
 Scale denominator.
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.
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 bounding box from layer's CRS to output CRS
QgsRectangle outputExtentToLayerExtent (QgsMapLayer *theLayer, QgsRectangle extent)
 transform bounding box from output CRS to layer's CRS
QgsPoint layerToMapCoordinates (QgsMapLayer *theLayer, QgsPoint point)
 transform point coordinates from layer's CRS to output CRS
QgsRectangle layerToMapCoordinates (QgsMapLayer *theLayer, QgsRectangle rect)
 transform rectangle from layer's CRS to output CRS
QgsPoint mapToLayerCoordinates (QgsMapLayer *theLayer, QgsPoint point)
 transform point coordinates from output CRS to layer's CRS
QgsRectangle mapToLayerCoordinates (QgsMapLayer *theLayer, QgsRectangle rect)
 transform rectangle from output CRS to layer's CRS
void setProjectionsEnabled (bool enabled)
 sets whether to use projections for this layer set
bool hasCrsTransformEnabled () const
 returns true if projections are enabled for this layer set
void setDestinationCrs (const QgsCoordinateReferenceSystem &crs)
 sets destination coordinate reference system
const
QgsCoordinateReferenceSystem
destinationCrs () const
 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.

Static Public Member Functions

static QPainter::CompositionMode getCompositionMode (const QgsMapRenderer::BlendMode blendMode)
 Returns a QPainter::CompositionMode corresponding to a BlendMode Added in 1.9.
static QgsMapRenderer::BlendMode getBlendModeEnum (const QPainter::CompositionMode blendMode)
 Returns a BlendMode corresponding to a QPainter::CompositionMode Added in 1.9.

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.

Protected Attributes

double mMapUnitsPerPixel
 map units per pixel
double mScale
 Map scale denominator at its current zoom 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

const QgsCoordinateTransformtr (QgsMapLayer *layer)

Detailed Description

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

Definition at line 119 of file qgsmaprenderer.h.

Member Enumeration Documentation

Blending modes enum defining the available composition modes that can be used when rendering a layer.

Enumerator:
BlendNormal 
BlendLighten 
BlendScreen 
BlendDodge 
BlendAddition 
BlendDarken 
BlendMultiply 
BlendBurn 
BlendOverlay 
BlendSoftLight 
BlendHardLight 
BlendDifference 
BlendSubtract 

Definition at line 136 of file qgsmaprenderer.h.

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

Enumerator:
Millimeters 
Pixels 

Definition at line 126 of file qgsmaprenderer.h.

Constructor & Destructor Documentation

QgsMapRenderer::QgsMapRenderer ( )
QgsMapRenderer::~QgsMapRenderer ( )

destructor

Definition at line 64 of file qgsmaprenderer.cpp.

References mDestCRS, mDistArea, mLabelingEngine, and mScaleCalculator.

Member Function Documentation

void QgsMapRenderer::adjustExtentToSize ( )
protected
const QgsMapToPixel* QgsMapRenderer::coordinateTransform ( )
inline
const QgsCoordinateReferenceSystem & QgsMapRenderer::destinationCrs ( ) const
void QgsMapRenderer::destinationSrsChanged ( )
signal

Referenced by setDestinationCrs().

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 188 of file qgsmaprenderer.h.

Referenced by QgsMapOverviewCanvas::QgsMapOverviewCanvas().

QgsRectangle QgsMapRenderer::extent ( ) const
QgsRectangle QgsMapRenderer::fullExtent ( )

returns current extent of layer set

Definition at line 1019 of file qgsmaprenderer.cpp.

References mFullExtent, and updateFullExtent().

Referenced by QgsMapCanvas::fullExtent(), and QgsMapOverviewCanvas::updateFullExtent().

QgsMapRenderer::BlendMode QgsMapRenderer::getBlendModeEnum ( const QPainter::CompositionMode  blendMode)
static
QPainter::CompositionMode QgsMapRenderer::getCompositionMode ( const QgsMapRenderer::BlendMode  blendMode)
static
bool QgsMapRenderer::hasCrsTransformEnabled ( ) const
void QgsMapRenderer::hasCrsTransformEnabled ( bool  flag)
signal
int QgsMapRenderer::height ( ) const
inline

Definition at line 179 of file qgsmaprenderer.h.

QgsLabelingEngineInterface* QgsMapRenderer::labelingEngine ( )
inline

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

Note
Added in QGIS v1.4

Definition at line 278 of file qgsmaprenderer.h.

Referenced by QgsComposerMap::containsAdvancedEffects(), and QgsComposerMap::draw().

QgsRectangle QgsMapRenderer::layerExtentToOutputExtent ( QgsMapLayer theLayer,
QgsRectangle  extent 
)

transform bounding box from layer's CRS to output CRS

See Also
layerToMapCoordinates( QgsMapLayer* theLayer, QgsRectangle rect ) if you want to transform a rectangle
Returns
a bounding box (aligned rectangle) containing the transformed extent

Definition at line 829 of file qgsmaprenderer.cpp.

References extent(), hasCrsTransformEnabled(), QgsMessageLog::logMessage(), QgsDebugMsg, QgsRectangle::toString(), tr(), QgsCoordinateTransform::transformBoundingBox(), and QgsException::what().

Referenced by QgsMapCanvas::panToSelected(), updateFullExtent(), and QgsMapCanvas::zoomToSelected().

QStringList & QgsMapRenderer::layerSet ( )
QgsPoint QgsMapRenderer::layerToMapCoordinates ( QgsMapLayer theLayer,
QgsPoint  point 
)
QgsRectangle QgsMapRenderer::layerToMapCoordinates ( QgsMapLayer theLayer,
QgsRectangle  rect 
)

transform rectangle from layer's CRS to output CRS

See Also
layerExtentToOutputExtent() if you want to transform a bounding box
Returns
the transformed rectangle

Definition at line 893 of file qgsmaprenderer.cpp.

References QgsCoordinateTransform::ForwardTransform, hasCrsTransformEnabled(), QgsMessageLog::logMessage(), tr(), QgsCoordinateTransform::transform(), and QgsException::what().

QgsPoint QgsMapRenderer::mapToLayerCoordinates ( QgsMapLayer theLayer,
QgsPoint  point 
)
QgsRectangle QgsMapRenderer::mapToLayerCoordinates ( QgsMapLayer theLayer,
QgsRectangle  rect 
)

transform rectangle from output CRS to layer's CRS

See Also
outputExtentToLayerExtent() if you want to transform a bounding box
Returns
the transformed rectangle

Definition at line 933 of file qgsmaprenderer.cpp.

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

QGis::UnitType QgsMapRenderer::mapUnits ( ) const
void QgsMapRenderer::mapUnitsChanged ( )
signal

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 712 of file qgsmaprenderer.cpp.

References updateMap().

Referenced by render().

double QgsMapRenderer::outputDpi ( )

accessor for output dpi

Definition at line 138 of file qgsmaprenderer.cpp.

References QgsScaleCalculator::dpi(), and mScaleCalculator.

Referenced by QgsMapCanvasItem::setRenderContextVariables().

QgsRectangle QgsMapRenderer::outputExtentToLayerExtent ( QgsMapLayer theLayer,
QgsRectangle  extent 
)

transform bounding box from output CRS to layer's CRS

See Also
mapToLayerCoordinates( QgsMapLayer* theLayer,QgsRectangle rect ) if you want to transform a rectangle
Returns
a bounding box (aligned rectangle) containing the transformed extent

Definition at line 851 of file qgsmaprenderer.cpp.

References extent(), hasCrsTransformEnabled(), QgsMessageLog::logMessage(), QgsDebugMsg, QgsCoordinateTransform::ReverseTransform, QgsRectangle::toString(), tr(), QgsCoordinateTransform::transformBoundingBox(), and QgsException::what().

QSize QgsMapRenderer::outputSize ( )

accessor for output size

Definition at line 143 of file qgsmaprenderer.cpp.

References mSize.

QSizeF QgsMapRenderer::outputSizeF ( )

Definition at line 148 of file qgsmaprenderer.cpp.

References mSize.

OutputUnits QgsMapRenderer::outputUnits ( ) const
inline

Definition at line 253 of file qgsmaprenderer.h.

Referenced by QgsMapCanvasItem::setRenderContextVariables().

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 219 of file qgsmaprenderer.cpp.

References QgsCoordinateReferenceSystem::authid(), QgsMapLayer::blendMode(), QgsMapLayer::cacheImage(), QgsMapLayerRegistry::clearAllLayerCaches(), QgsMapLayer::crs(), QgsScaleCalculator::dpi(), QgsMapLayer::draw(), drawError(), drawingProgress(), QgsLabelingEngineInterface::drawLabeling(), QgsMapLayer::drawLabels(), QgsLabelingEngineInterface::exit(), QgsMapLayer::extent(), QgsVectorLayer::featureBlendMode(), hasCrsTransformEnabled(), QgsMapLayer::hasScaleBasedVisibility(), QgsLabelingEngineInterface::init(), QgsCoordinateTransformCache::instance(), QgsMapLayerRegistry::instance(), QgsProject::instance(), QgsVectorLayer::isEditable(), QgsRectangle::isEmpty(), QgsRectangle::isFinite(), QgsRenderContext::labelingEngine(), QgsVectorLayer::layerTransparency(), QgsMapLayerRegistry::mapLayer(), QgsRenderContext::mapToPixel(), QgsMapToPixel::mapUnitsPerPixel(), QgsMapLayer::maximumScale(), mDestCRS, mDrawing, mExtent, Millimeters, QgsMapLayer::minimumScale(), mLabelingEngine, mLastExtent, mLayerSet, mOutputUnits, mOverview, mRenderContext, mRenderMutex, mScale, mScaleCalculator, mSize, QgsMapLayer::name(), onDrawingProgress(), QgsRenderContext::painter(), QgsDebugMsg, QgsMapLayer::RasterLayer, QgsRenderContext::rasterScaleFactor(), rasterScaleFactor, QgsProject::readNumEntry(), 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(), QgsRenderContext::setSelectionColor(), QgsMapToPixel::setYMaximum(), splitLayersExtent(), QgsRectangle::toString(), QgsCoordinateTransformCache::transform(), QgsMapLayer::type(), QgsRenderContext::useAdvancedEffects(), QgsMapLayer::VectorLayer, and QgsLabelingEngineInterface::willUseLayer().

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

QgsRenderContext* QgsMapRenderer::rendererContext ( )
inline
double QgsMapRenderer::scale ( ) const
inline
void QgsMapRenderer::setDestinationCrs ( const QgsCoordinateReferenceSystem crs)
bool QgsMapRenderer::setExtent ( const QgsRectangle extent)
void QgsMapRenderer::setLabelingEngine ( QgsLabelingEngineInterface iface)

Set labeling engine.

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

Definition at line 1176 of file qgsmaprenderer.cpp.

References mLabelingEngine.

Referenced by QgsComposerMap::draw().

void QgsMapRenderer::setLayerSet ( const QStringList &  layers)

change current layer set

Definition at line 1025 of file qgsmaprenderer.cpp.

References mLayerSet, QgsDebugMsg, and updateFullExtent().

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

void QgsMapRenderer::setMapUnits ( QGis::UnitType  u)
void QgsMapRenderer::setOutputSize ( QSize  size,
int  dpi 
)
void QgsMapRenderer::setOutputSize ( QSizeF  size,
double  dpi 
)
void QgsMapRenderer::setOutputUnits ( OutputUnits  u)
inline

Definition at line 251 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 175 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 775 of file qgsmaprenderer.cpp.

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

Referenced by render().

const QgsCoordinateTransform * QgsMapRenderer::tr ( QgsMapLayer layer)
private
void QgsMapRenderer::updateFullExtent ( )
void QgsMapRenderer::updateMap ( )
signal

Referenced by onDrawingProgress().

void QgsMapRenderer::updateScale ( )

Recalculate the map scale.

Definition at line 77 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 178 of file qgsmaprenderer.h.

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

Member Data Documentation

QgsCoordinateReferenceSystem* QgsMapRenderer::mDestCRS
protected

destination spatial reference system of the projection

Definition at line 356 of file qgsmaprenderer.h.

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

QgsDistanceArea* QgsMapRenderer::mDistArea
protected

tool for measuring

Definition at line 365 of file qgsmaprenderer.h.

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

bool QgsMapRenderer::mDrawing = false
staticprotected

indicates drawing in progress

Definition at line 326 of file qgsmaprenderer.h.

Referenced by QgsMapRenderer(), and render().

QgsRectangle QgsMapRenderer::mExtent
protected

current extent to be drawn

Definition at line 338 of file qgsmaprenderer.h.

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

QgsRectangle QgsMapRenderer::mFullExtent
protected

full extent of the layer set

Definition at line 362 of file qgsmaprenderer.h.

Referenced by fullExtent(), and updateFullExtent().

QgsLabelingEngineInterface* QgsMapRenderer::mLabelingEngine
protected

Labeling engine (NULL by default)

Definition at line 374 of file qgsmaprenderer.h.

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

QgsRectangle QgsMapRenderer::mLastExtent
protected

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 345 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 359 of file qgsmaprenderer.h.

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

double QgsMapRenderer::mMapUnitsPerPixel
protected

map units per pixel

Definition at line 329 of file qgsmaprenderer.h.

Referenced by adjustExtentToSize().

OutputUnits QgsMapRenderer::mOutputUnits
protected

Output units.

Definition at line 371 of file qgsmaprenderer.h.

Referenced by QgsMapRenderer(), and render().

bool QgsMapRenderer::mOverview
protected

indicates whether it's map image for overview

Definition at line 348 of file qgsmaprenderer.h.

Referenced by QgsMapRenderer(), and render().

bool QgsMapRenderer::mProjectionsEnabled
protected

detemines whether on the fly projection support is enabled

Definition at line 353 of file qgsmaprenderer.h.

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

QgsRenderContext QgsMapRenderer::mRenderContext
protected

Encapsulates context of rendering.

Definition at line 368 of file qgsmaprenderer.h.

Referenced by adjustExtentToSize(), and render().

QMutex QgsMapRenderer::mRenderMutex
protected

Locks rendering loop for concurrent draws.

Definition at line 377 of file qgsmaprenderer.h.

Referenced by render().

double QgsMapRenderer::mScale
protected

Map scale denominator at its current zoom level.

Definition at line 332 of file qgsmaprenderer.h.

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

QgsScaleCalculator* QgsMapRenderer::mScaleCalculator
protected

scale calculator

Definition at line 335 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: