mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-01 00:46:20 -05:00
fix for different vector rendering types
This commit is contained in:
parent
b0bd629336
commit
20a205d881
@ -74,7 +74,7 @@ QgsMeshVectorRenderer::QgsMeshVectorRenderer( const QgsTriangularMesh &m,
|
||||
// we need to expand out the extent so that it includes
|
||||
// arrows which start or end up outside of the
|
||||
// actual visible extent
|
||||
double extension = context.convertToMapUnits( mMaxMag, QgsUnitTypes::RenderPixels );
|
||||
double extension = context.convertToMapUnits( calcExtentBufferSize(), QgsUnitTypes::RenderPixels );
|
||||
mBufferedExtent.setXMinimum( mBufferedExtent.xMinimum() - extension );
|
||||
mBufferedExtent.setXMaximum( mBufferedExtent.xMaximum() + extension );
|
||||
mBufferedExtent.setYMinimum( mBufferedExtent.yMinimum() - extension );
|
||||
@ -200,6 +200,39 @@ bool QgsMeshVectorRenderer::calcVectorLineEnd(
|
||||
return false; //success
|
||||
}
|
||||
|
||||
double QgsMeshVectorRenderer::calcExtentBufferSize() const
|
||||
{
|
||||
double buffer;
|
||||
switch ( mCfg.shaftLengthMethod() )
|
||||
{
|
||||
case QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax:
|
||||
{
|
||||
buffer = mContext.convertToPainterUnits( mCfg.maxShaftLength(),
|
||||
QgsUnitTypes::RenderUnit::RenderMillimeters );
|
||||
break;
|
||||
}
|
||||
case QgsMeshRendererVectorSettings::ArrowScalingMethod::Scaled:
|
||||
{
|
||||
buffer = mCfg.scaleFactor() * mMaxMag;
|
||||
break;
|
||||
}
|
||||
case QgsMeshRendererVectorSettings::ArrowScalingMethod::Fixed:
|
||||
{
|
||||
buffer = mContext.convertToPainterUnits( mCfg.fixedShaftLength(),
|
||||
QgsUnitTypes::RenderUnit::RenderMillimeters );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( mCfg.filterMax() >= 0 && buffer > mCfg.filterMax() )
|
||||
buffer = mCfg.filterMax();
|
||||
|
||||
if ( buffer < 0.0 )
|
||||
buffer = 0.0;
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
void QgsMeshVectorRenderer::drawVectorDataOnVertices( const QList<int> &trianglesInExtent )
|
||||
{
|
||||
|
@ -83,6 +83,13 @@ class QgsMeshVectorRenderer
|
||||
double magnitude //in
|
||||
);
|
||||
|
||||
/**
|
||||
* Calculates the buffer size
|
||||
* needed to draw arrows which have
|
||||
* start or end point outside the
|
||||
* visible canvas extent (in pixels)
|
||||
*/
|
||||
double calcExtentBufferSize() const;
|
||||
|
||||
const QgsTriangularMesh &mTriangularMesh;
|
||||
const QVector<double> &mDatasetValuesX;
|
||||
@ -94,13 +101,6 @@ class QgsMeshVectorRenderer
|
||||
const QgsMeshRendererVectorSettings &mCfg;
|
||||
bool mDataOnVertices = true;
|
||||
QSize mOutputSize;
|
||||
|
||||
/**
|
||||
* Canvas extent buffered by vector maximum magnitude
|
||||
* Needed to draw arrows which have
|
||||
* start or end point outside the
|
||||
* visible canvas extent
|
||||
*/
|
||||
QgsRectangle mBufferedExtent;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user