Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
rework mesh streamlines renderer (#51426)
* rework mesh stream lines renderer

* fix indentation, cpp check and  other cleaning

* fix clang-tidy

* minors fixes (arrowing and other)

* adapt control image for tests
  • Loading branch information
vcloarec committed Jan 26, 2023
1 parent e74c797 commit cd67676
Show file tree
Hide file tree
Showing 12 changed files with 511 additions and 278 deletions.
2 changes: 2 additions & 0 deletions python/core/auto_generated/mesh/qgsmeshtracerenderer.sip.in
Expand Up @@ -14,6 +14,7 @@




class QgsMeshVectorTraceAnimationGenerator
{
%Docstring(signature="appended")
Expand Down Expand Up @@ -90,6 +91,7 @@ Sets the minimum tail length
Sets the visual persistence of the tail
%End


};

/************************************************************************
Expand Down
8 changes: 7 additions & 1 deletion src/core/mesh/qgsmeshlayerrenderer.cpp
Expand Up @@ -236,6 +236,7 @@ void QgsMeshLayerRenderer::copyVectorDatasetValues( QgsMeshLayer *layer )
mVectorDatasetMagMaximum = cache->mVectorDatasetMagMaximum;
mVectorDatasetGroupMagMinimum = cache->mVectorDatasetMagMinimum;
mVectorDatasetGroupMagMaximum = cache->mVectorDatasetMagMaximum;
mVectorActiveFaceFlagValues = cache->mVectorActiveFaceFlagValues;
mVectorDataType = cache->mVectorDataType;
return;
}
Expand Down Expand Up @@ -269,6 +270,9 @@ void QgsMeshLayerRenderer::copyVectorDatasetValues( QgsMeshLayer *layer )
else
mVectorDatasetValuesMag = QVector<double>( count, std::numeric_limits<double>::quiet_NaN() );

// populate face active flag
mVectorActiveFaceFlagValues = layer->areFacesActive( datasetIndex, 0, mNativeMesh.faces.count() );

const QgsMeshDatasetMetadata datasetMetadata = layer->datasetMetadata( datasetIndex );
mVectorDatasetMagMinimum = datasetMetadata.minimum();
mVectorDatasetMagMaximum = datasetMetadata.maximum();
Expand All @@ -284,6 +288,7 @@ void QgsMeshLayerRenderer::copyVectorDatasetValues( QgsMeshLayer *layer )
cache->mVectorDatasetMagMaximum = mVectorDatasetMagMaximum;
cache->mVectorDatasetGroupMagMinimum = mVectorDatasetMagMinimum;
cache->mVectorDatasetGroupMagMaximum = mVectorDatasetMagMaximum;
cache->mVectorActiveFaceFlagValues = mVectorActiveFaceFlagValues;
cache->mVectorDataType = mVectorDataType;
cache->mVectorAveragingMethod.reset( mRendererSettings.averagingMethod() ? mRendererSettings.averagingMethod()->clone() : nullptr );
}
Expand Down Expand Up @@ -585,14 +590,15 @@ void QgsMeshLayerRenderer::renderVectorDataset()
std::unique_ptr<QgsMeshVectorRenderer> renderer( QgsMeshVectorRenderer::makeVectorRenderer(
mTriangularMesh,
mVectorDatasetValues,
mScalarActiveFaceFlagValues,
mVectorActiveFaceFlagValues,
mVectorDatasetValuesMag,
mVectorDatasetMagMaximum,
mVectorDatasetMagMinimum,
mVectorDataType,
mRendererSettings.vectorSettings( groupIndex ),
*renderContext(),
mLayerExtent,
mFeedback.get(),
mOutputSize ) );

if ( renderer )
Expand Down
2 changes: 2 additions & 0 deletions src/core/mesh/qgsmeshlayerrenderer.h
Expand Up @@ -69,6 +69,7 @@ struct CORE_NO_EXPORT QgsMeshLayerRendererCache
// vector dataset
QgsMeshDatasetIndex mActiveVectorDatasetIndex;
QgsMeshDataBlock mVectorDatasetValues;
QgsMeshDataBlock mVectorActiveFaceFlagValues;
QVector<double> mVectorDatasetValuesMag;
double mVectorDatasetMagMinimum = std::numeric_limits<double>::quiet_NaN();
double mVectorDatasetMagMaximum = std::numeric_limits<double>::quiet_NaN();
Expand Down Expand Up @@ -138,6 +139,7 @@ class QgsMeshLayerRenderer : public QgsMapLayerRenderer

// copy of the vector dataset
QgsMeshDataBlock mVectorDatasetValues;
QgsMeshDataBlock mVectorActiveFaceFlagValues;
QVector<double> mVectorDatasetValuesMag;
double mVectorDatasetMagMinimum = std::numeric_limits<double>::quiet_NaN();
double mVectorDatasetMagMaximum = std::numeric_limits<double>::quiet_NaN();
Expand Down

0 comments on commit cd67676

Please sign in to comment.