QGIS API Documentation  master-3f58142
QgsMapRenderer Class Reference

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

#include <qgsmaprenderer.h>

+ Collaboration diagram for QgsMapRenderer:

List of all members.

Public Types

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...
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

Signals

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

Public Member Functions

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

Static Public Member Functions

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

Protected Member Functions

void adjustExtentToSize ()
 adjust extent to fit the pixmap size
QgsOverlayObjectPositionManageroverlayManagerFromSettings ()
 Creates an overlay object position manager subclass according to the current settings.
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

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

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

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

Enumerator:
Millimeters 
Pixels 

Definition at line 127 of file qgsmaprenderer.h.


Constructor & Destructor Documentation

destructor

Definition at line 68 of file qgsmaprenderer.cpp.

References mDestCRS, mDistArea, mLabelingEngine, and mScaleCalculator.


Member Function Documentation

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

Referenced by QgsMapOverviewCanvas::QgsMapOverviewCanvas().

returns current extent of layer set

Definition at line 1032 of file qgsmaprenderer.cpp.

References mFullExtent, and updateFullExtent().

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

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

Definition at line 180 of file qgsmaprenderer.h.

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

Note:
Added in QGIS v1.4

Definition at line 279 of file qgsmaprenderer.h.

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

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 848 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().

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

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

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

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

Referenced by setMapUnits().

void QgsMapRenderer::onDrawingProgress ( int  current,
int  total 
) [slot]

called by signal from layer current being drawn

Definition at line 731 of file qgsmaprenderer.cpp.

References updateMap().

Referenced by render().

accessor for output dpi

Definition at line 142 of file qgsmaprenderer.cpp.

References QgsScaleCalculator::dpi(), and mScaleCalculator.

Referenced by QgsMapCanvasItem::setRenderContextVariables().

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

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

accessor for output size

Definition at line 147 of file qgsmaprenderer.cpp.

References mSize.

Definition at line 152 of file qgsmaprenderer.cpp.

References mSize.

Definition at line 254 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 1050 of file qgsmaprenderer.cpp.

References QgsPALObjectPositionManager::setPlacementAlgorithm().

Referenced by render().

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

References QgsOverlayObjectPositionManager::addLayer(), 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(), QgsOverlayObjectPositionManager::findObjectPositions(), 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(), 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, QgsProject::readNumEntry(), 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(), QgsRenderContext::setSelectionColor(), QgsMapToPixel::setYMaximum(), splitLayersExtent(), QgsRectangle::toString(), QgsCoordinateTransformCache::transform(), QgsMapLayer::type(), QgsRenderContext::useAdvancedEffects(), QgsMapLayer::VectorLayer, QgsVectorLayer::vectorOverlays(), and QgsLabelingEngineInterface::willUseLayer().

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

Set labeling engine.

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

Definition at line 1225 of file qgsmaprenderer.cpp.

References mLabelingEngine.

Referenced by QgsComposerMap::draw().

void QgsMapRenderer::setLayerSet ( const QStringList &  layers)

change current layer set

Definition at line 1038 of file qgsmaprenderer.cpp.

References mLayerSet, QgsDebugMsg, and updateFullExtent().

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

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

Definition at line 252 of file qgsmaprenderer.h.

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 176 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 794 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().

void QgsMapRenderer::updateMap ( ) [signal]

Referenced by onDrawingProgress().

Recalculate the map scale.

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


Member Data Documentation

destination spatial reference system of the projection

Definition at line 361 of file qgsmaprenderer.h.

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

tool for measuring

Definition at line 370 of file qgsmaprenderer.h.

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

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

indicates drawing in progress

Definition at line 331 of file qgsmaprenderer.h.

Referenced by QgsMapRenderer(), and render().

current extent to be drawn

Definition at line 343 of file qgsmaprenderer.h.

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

full extent of the layer set

Definition at line 367 of file qgsmaprenderer.h.

Referenced by fullExtent(), and updateFullExtent().

Labeling engine (NULL by default)

Definition at line 379 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 350 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 364 of file qgsmaprenderer.h.

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

map units per pixel

Definition at line 334 of file qgsmaprenderer.h.

Referenced by adjustExtentToSize().

Output units.

Definition at line 376 of file qgsmaprenderer.h.

Referenced by QgsMapRenderer(), and render().

bool QgsMapRenderer::mOverview [protected]

indicates whether it's map image for overview

Definition at line 353 of file qgsmaprenderer.h.

Referenced by QgsMapRenderer(), and render().

detemines whether on the fly projection support is enabled

Definition at line 358 of file qgsmaprenderer.h.

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

Encapsulates context of rendering.

Definition at line 373 of file qgsmaprenderer.h.

Referenced by adjustExtentToSize(), and render().

QMutex QgsMapRenderer::mRenderMutex [protected]

Locks rendering loop for concurrent draws.

Definition at line 382 of file qgsmaprenderer.h.

Referenced by render().

double QgsMapRenderer::mScale [protected]

Map scale denominator at its current zoom level.

Definition at line 337 of file qgsmaprenderer.h.

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


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