QGIS API Documentation
3.16.0-Hannover (43b64b13f3)
|
Go to the documentation of this file.
34 , mMinimalPreviewInterval( 250 )
39 void QgsRasterLayerRendererFeedback::onNewData()
41 if ( !renderPartialOutput() )
46 if ( mLastPreview.isValid() && mLastPreview.msecsTo( QTime::currentTime() ) < mMinimalPreviewInterval )
51 QgsDebugMsgLevel( QStringLiteral(
"new raster preview! %1" ).arg( mLastPreview.msecsTo( QTime::currentTime() ) ), 3 );
59 drawer.draw( mR->renderContext()->painter(), mR->mRasterViewPort, &mR->renderContext()->mapToPixel(), &feedback );
60 QgsDebugMsgLevel( QStringLiteral(
"total raster preview time: %1 ms" ).arg( t.elapsed() ), 3 );
61 mLastPreview = QTime::currentTime();
68 , mProviderCapabilities( static_cast<
QgsRasterDataProvider::Capability>( layer->dataProvider()->capabilities() ) )
69 , mFeedback( new QgsRasterLayerRendererFeedback( this ) )
79 static_cast<int>( mapToPixel.
mapWidth() / 2.0 ),
80 static_cast<int>( mapToPixel.
mapHeight() / 2.0 )
90 QgsDebugMsgLevel( QStringLiteral(
"coordinateTransform set -> project extents." ), 4 );
91 if ( rendererContext.
extent().
xMinimum() == std::numeric_limits<double>::lowest() &&
92 rendererContext.
extent().
yMinimum() == std::numeric_limits<double>::lowest() &&
93 rendererContext.
extent().
xMaximum() == std::numeric_limits<double>::max() &&
94 rendererContext.
extent().
yMaximum() == std::numeric_limits<double>::max() )
101 myProjectedViewExtent = rendererContext.
extent();
133 myProjectedViewExtent = rendererContext.
extent();
134 myProjectedLayerExtent = layer->
extent();
139 if ( myRasterExtent.
isEmpty() )
141 QgsDebugMsgLevel( QStringLiteral(
"draw request outside view extent." ), 2 );
239 switch ( temporalProperties->
mode() )
267 delete mRasterViewPort;
274 if ( !mRasterViewPort || (
renderContext()->testFlag( QgsRenderContext::Flag::RenderPreviewJob ) &&
275 !( mProviderCapabilities &
276 QgsRasterInterface::Capability::Prefetch ) ) )
289 if ( !mClippingRegions.empty() )
291 bool needsPainterClipPath =
false;
293 if ( needsPainterClipPath )
298 bool restoreOldResamplingStage =
false;
310 restoreOldResamplingStage =
true;
321 if ( restoreOldResamplingStage )
326 const QStringList
errors = mFeedback->errors();
327 for (
const QString &error :
errors )
332 QgsDebugMsgLevel( QStringLiteral(
"total raster draw time (ms): %1" ).arg( time.elapsed(), 5 ), 4 );
static QList< QgsMapClippingRegion > collectClippingRegionsForLayer(const QgsRenderContext &context, const QgsMapLayer *layer)
Collects the list of map clipping regions from a context which apply to a map layer.
QgsPointXY mBottomRightPoint
Coordinate (in output device coordinate system) of bottom right corner of the part of the raster that...
QgsCoordinateReferenceSystem crs
bool testFlag(Flag flag) const
Check whether a particular flag is enabled.
const QgsMapToPixel & mapToPixel() const
Returns the context's map to pixel transform, which transforms between map coordinates and device coo...
double mapUnitsPerPixel() const
Returns current map units per pixel.
bool ignoreExtents() const
If the ignoreExtent flag is set, the layer will also render outside the bounding box reported by the ...
@ Render3DMap
Render is for a 3D map.
void setIntervalHandlingMethod(IntervalHandlingMethod method)
Sets the desired method to use when resolving a temporal interval to matching layers or bands in the ...
#define QgsDebugMsgLevel(str, level)
QStringList errors() const
Returns list of errors (problems) that happened during the rendering.
QgsCoordinateReferenceSystem mSrcCRS
Source coordinate system.
@ ProviderHintCanPerformProviderResampling
Provider can perform resampling (to be opposed to post rendering resampling) (since QGIS 3....
double yMinimum() const SIP_HOLDGIL
Returns the y minimum value (bottom side of rectangle).
void statusChanged(const QString &status)
Emit a signal with status (e.g. to be caught by QgisApp and display a msg on status bar)
Base class for processing modules.
void setY(double y) SIP_HOLDGIL
Sets the y value of the point.
const QgsDateTimeRange & temporalRange() const
Returns the datetime range for the object.
Contains information about the context of a rendering operation.
QgsRenderContext * renderContext()
Returns the render context associated with the renderer.
void setMinimal() SIP_HOLDGIL
Set a rectangle so that min corner is at max and max corner is at min.
QgsPointXY mTopLeftPoint
Coordinate (in output device coordinate system) of top left corner of the part of the raster that is ...
This class provides details of the viewable area that a raster will be rendered into.
double scaleFactor() const
Returns the scaling factor for the render to convert painter units to physical sizes.
@ ModeTemporalRangeFromDataProvider
Mode when raster layer delegates temporal range handling to the dataprovider.
QgsPointXY toMapCoordinates(int x, int y) const
Transform device coordinates to map (world) coordinates.
QgsRectangle intersect(const QgsRectangle &rect) const
Returns the intersection with the given rectangle.
const QgsRectangle & extent() const
When rendering a map layer, calling this method returns the "clipping" extent for the layer (in the l...
void setX(double x) SIP_HOLDGIL
Sets the x value of the point.
A rectangle specified with double values.
Implementation of map layer temporal properties for raster layers.
QgsRasterDataProvider * provider() const
Base class for utility classes that encapsulate information necessary for rendering of map layers.
QgsRasterProjector implements approximate projection support for it calculates grid of points in sour...
double xMaximum() const SIP_HOLDGIL
Returns the x maximum value (right side of rectangle).
~QgsRasterLayerRenderer() override
@ ModeFixedTemporalRange
Mode when temporal properties have fixed start and end datetimes.
QgsCoordinateTransform coordinateTransform() const
Returns the current coordinate transform for the context.
QgsFeedback * feedback() const override
Access to feedback object of the layer renderer (may be nullptr)
Custom exception class for Coordinate Reference System related exceptions.
int width() const
Returns the width of the (unclipped) raster.
void draw(QPainter *p, QgsRasterViewPort *viewPort, const QgsMapToPixel *qgsMapToPixel, QgsRasterBlockFeedback *feedback=nullptr)
Draws raster data.
bool isActive() const
Returns true if the temporal property is active.
QgsRasterRenderer * renderer() const
Raster renderer pipe that applies colors to a raster.
virtual QgsRasterDataProvider::ProviderCapabilities providerCapabilities() const
Returns flags containing the supported capabilities of the data provider.
QgsCoordinateTransformContext mTransformContext
Coordinate transform context.
static QPainterPath calculatePainterClipRegion(const QList< QgsMapClippingRegion > ®ions, const QgsRenderContext &context, QgsMapLayerType layerType, bool &shouldClip)
Returns a QPainterPath representing the intersection of clipping regions from context which should be...
QgsRasterDataProviderTemporalCapabilities * temporalCapabilities() override
Returns the provider's temporal capabilities.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
int mapHeight() const
Returns current map height in pixels.
double mapRotation() const
Returns current map rotation in degrees (clockwise)
int height() const
Returns the height of the (unclipped) raster.
virtual QgsRectangle extent() const
Returns the extent of the layer.
QgsMapLayerTemporalProperties * temporalProperties() override
Returns the layer's temporal properties.
void setDpi(int dpi)
Sets the output device resolution.
The drawing pipe for raster layers.
QgsRasterDataProvider * dataProvider() override
Returns the source data provider.
Q_DECL_DEPRECATED void setCrs(const QgsCoordinateReferenceSystem &srcCRS, const QgsCoordinateReferenceSystem &destCRS, int srcDatumTransform=-1, int destDatumTransform=-1)
Sets the source and destination CRS.
TemporalMode mode() const
Returns the temporal properties mode.
double xMinimum() const SIP_HOLDGIL
Returns the x minimum value (left side of rectangle).
Represents a raster layer.
Scoped object for saving and restoring a QPainter object's state.
void setRenderPartialOutput(bool enable)
Set whether our painter is drawing to a temporary image used just by this layer.
Iterator for sequentially processing raster cells.
QgsRasterDataProviderTemporalCapabilities::IntervalHandlingMethod intervalHandlingMethod() const
Returns the desired method to use when resolving a temporal interval to matching layers or bands in t...
This class represents a coordinate reference system (CRS).
QgsPointXY transform(const QgsPointXY &p) const
Transform the point from map (world) coordinates to device coordinates.
QString toString(int precision=16) const
Returns a string representation of form xmin,ymin : xmax,ymax Coordinates will be truncated to the sp...
A class to represent a 2D point.
bool render() override
Do the rendering (based on data stored in the class)
@ RenderPartialOutput
Whether to make extra effort to update map image with partially rendered layers (better for interacti...
QgsRasterInterface * last() const
qgssize mHeight
Height, number of rows to be rendered.
double yMaximum() const SIP_HOLDGIL
Returns the y maximum value (top side of rectangle).
Implementation of threaded rendering for raster layers.
ResamplingStage resamplingStage() const
Returns which stage of the pipe should apply resampling.
void setResamplingStage(ResamplingStage stage)
Select which stage of the pipe should apply resampling.
qgssize mWidth
Width, number of columns to be rendered.
Perform transforms between map coordinates and device coordinates.
int mapWidth() const
Returns current map width in pixels The information is only known if setRotation was used.
QgsRasterPipe * pipe()
Returns the raster pipe.
QgsCoordinateTransformContext transformContext() const
Returns the context's coordinate transform context, which stores various information regarding which ...
void set(const QgsPointXY &p1, const QgsPointXY &p2)
Sets the rectangle from two QgsPoints.
Feedback object tailored for raster block reading.
void statusChanged(const QString &) const
Emit a message to be displayed on status bar, usually used by network providers (WMS,...
void refreshRendererIfNeeded(QgsRasterRenderer *rasterRenderer, const QgsRectangle &extent)
Refresh renderer with new extent, if needed.
static void logMessage(const QString &message, const QString &tag=QString(), Qgis::MessageLevel level=Qgis::Warning, bool notifyUser=true)
Adds a message to the log instance (and creates it if necessary).
void setPreviewOnly(bool preview)
set flag whether the block request is for preview purposes only
QgsRasterProjector * projector() const
QPainter * painter()
Returns the destination QPainter for the render operation.
QgsCoordinateReferenceSystem mDestCRS
Target coordinate system.
ResamplingStage
Stage at which resampling occurs.
bool isEmpty() const
Returns true if the rectangle is empty.
@ RenderPreviewJob
Render is a 'canvas preview' render, and shortcuts should be taken to ensure fast rendering.
void setMapRotation(double degrees, double cx, double cy)
Set map rotation in degrees (clockwise)
QgsRectangle mDrawnExtent
Intersection of current map extent and layer extent.
Base class for raster data providers.
@ Provider
Resampling occurs in Provider.
Flags flags() const
Returns combination of flags used for rendering.
QgsRasterLayerRenderer(QgsRasterLayer *layer, QgsRenderContext &rendererContext)
unsigned long long qgssize
Qgssize is used instead of size_t, because size_t is stdlib type, unknown by SIP, and it would be har...