54   QDomElement elem = doc.createElement( QStringLiteral( 
"mesh-settings" ) );
    55   elem.setAttribute( QStringLiteral( 
"enabled" ), mEnabled ? QStringLiteral( 
"1" ) : QStringLiteral( 
"0" ) );
    56   elem.setAttribute( QStringLiteral( 
"line-width" ), mLineWidth );
    63   mEnabled = elem.attribute( QStringLiteral( 
"enabled" ) ).toInt();
    64   mLineWidth = elem.attribute( QStringLiteral( 
"line-width" ) ).toDouble();
    72   return mColorRampShader;
    77   mColorRampShader = shader;
    86   mClassificationMinimum = minimum;
    87   mClassificationMaximum = maximum;
    96   return mDataInterpolationMethod;
   101   mDataInterpolationMethod = dataInterpolationMethod;
   106   QDomElement elem = doc.createElement( QStringLiteral( 
"scalar-settings" ) );
   107   elem.setAttribute( QStringLiteral( 
"min-val" ), mClassificationMinimum );
   108   elem.setAttribute( QStringLiteral( 
"max-val" ), mClassificationMaximum );
   109   elem.setAttribute( QStringLiteral( 
"opacity" ), mOpacity );
   112   switch ( mDataInterpolationMethod )
   115       methodTxt = QStringLiteral( 
"none" );
   117     case NeighbourAverage:
   118       methodTxt = QStringLiteral( 
"neighbour-average" );
   121   elem.setAttribute( QStringLiteral( 
"interpolation-method" ), methodTxt );
   122   QDomElement elemShader = mColorRampShader.writeXml( doc );
   123   elem.appendChild( elemShader );
   129   mClassificationMinimum = elem.attribute( QStringLiteral( 
"min-val" ) ).toDouble();
   130   mClassificationMaximum = elem.attribute( QStringLiteral( 
"max-val" ) ).toDouble();
   131   mOpacity = elem.attribute( QStringLiteral( 
"opacity" ) ).toDouble();
   132   QString methodTxt = elem.attribute( QStringLiteral( 
"interpolation-method" ) );
   133   if ( QStringLiteral( 
"neighbour-average" ) == methodTxt )
   135     mDataInterpolationMethod = DataInterpolationMethod::NeighbourAverage;
   139     mDataInterpolationMethod = DataInterpolationMethod::None;
   141   QDomElement elemShader = elem.firstChildElement( QStringLiteral( 
"colorrampshader" ) );
   142   mColorRampShader.readXml( elemShader );
   164   mColor = vectorColor;
   174   mFilterMin = vectorFilterMin;
   184   mFilterMax = vectorFilterMax;
   189   return mOnUserDefinedGrid;
   194   mOnUserDefinedGrid = enabled;
   199   return mUserGridCellWidth;
   204   mUserGridCellWidth = width;
   209   return mUserGridCellHeight;
   214   mUserGridCellHeight = height;
   219   return mShaftLengthMethod;
   224   mShaftLengthMethod = shaftLengthMethod;
   229   return mMinShaftLength;
   234   mMinShaftLength = minShaftLength;
   239   return mMaxShaftLength;
   244   mMaxShaftLength = maxShaftLength;
   254   mScaleFactor = scaleFactor;
   259   return mFixedShaftLength;
   264   mFixedShaftLength = fixedShaftLength;
   269   return mArrowHeadWidthRatio;
   274   mArrowHeadWidthRatio = vectorHeadWidthRatio;
   279   return mArrowHeadLengthRatio;
   284   mArrowHeadLengthRatio = vectorHeadLengthRatio;
   289   QDomElement elem = doc.createElement( QStringLiteral( 
"vector-arrow-settings" ) );
   290   elem.setAttribute( QStringLiteral( 
"arrow-head-width-ratio" ), mArrowHeadWidthRatio );
   291   elem.setAttribute( QStringLiteral( 
"arrow-head-length-ratio" ), mArrowHeadLengthRatio );
   293   QDomElement elemShaft = doc.createElement( QStringLiteral( 
"shaft-length" ) );
   295   switch ( mShaftLengthMethod )
   298       methodTxt = QStringLiteral( 
"minmax" );
   299       elemShaft.setAttribute( QStringLiteral( 
"min" ), mMinShaftLength );
   300       elemShaft.setAttribute( QStringLiteral( 
"max" ), mMaxShaftLength );
   303       methodTxt = QStringLiteral( 
"scaled" );
   304       elemShaft.setAttribute( QStringLiteral( 
"scale-factor" ), mScaleFactor );
   307       methodTxt = QStringLiteral( 
"fixed" ) ;
   308       elemShaft.setAttribute( QStringLiteral( 
"fixed-length" ), mFixedShaftLength );
   311   elemShaft.setAttribute( QStringLiteral( 
"method" ), methodTxt );
   312   elem.appendChild( elemShaft );
   318   mArrowHeadWidthRatio = elem.attribute( QStringLiteral( 
"arrow-head-width-ratio" ) ).toDouble();
   319   mArrowHeadLengthRatio = elem.attribute( QStringLiteral( 
"arrow-head-length-ratio" ) ).toDouble();
   321   QDomElement elemShaft = elem.firstChildElement( QStringLiteral( 
"shaft-length" ) );
   322   QString methodTxt = elemShaft.attribute( QStringLiteral( 
"method" ) );
   323   if ( QStringLiteral( 
"minmax" ) == methodTxt )
   325     mShaftLengthMethod = MinMax;
   326     mMinShaftLength = elemShaft.attribute( QStringLiteral( 
"min" ) ).toDouble();
   327     mMaxShaftLength = elemShaft.attribute( QStringLiteral( 
"max" ) ).toDouble();
   329   else if ( QStringLiteral( 
"scaled" ) == methodTxt )
   331     mShaftLengthMethod = Scaled;
   332     mScaleFactor = elemShaft.attribute( QStringLiteral( 
"scale-factor" ) ).toDouble();
   336     mShaftLengthMethod = Fixed;
   337     mFixedShaftLength = elemShaft.attribute( QStringLiteral( 
"fixed-length" ) ).toDouble();
   352   return mAveragingMethod.get();
   358     mAveragingMethod.reset( method->
clone() );
   360     mAveragingMethod.reset();
   365   QDomElement elem = doc.createElement( QStringLiteral( 
"mesh-renderer-settings" ) );
   367   QDomElement elemActiveDataset = doc.createElement( QStringLiteral( 
"active-dataset" ) );
   368   if ( mActiveScalarDataset.
isValid() )
   369     elemActiveDataset.setAttribute( QStringLiteral( 
"scalar" ), QStringLiteral( 
"%1,%2" ).arg( mActiveScalarDataset.
group() ).arg( mActiveScalarDataset.
dataset() ) );
   370   if ( mActiveVectorDataset.
isValid() )
   371     elemActiveDataset.setAttribute( QStringLiteral( 
"vector" ), QStringLiteral( 
"%1,%2" ).arg( mActiveVectorDataset.
group() ).arg( mActiveVectorDataset.
dataset() ) );
   372   elem.appendChild( elemActiveDataset );
   374   for ( 
int groupIndex : mRendererScalarSettings.keys() )
   377     QDomElement elemScalar = scalarSettings.
writeXml( doc );
   378     elemScalar.setAttribute( QStringLiteral( 
"group" ), groupIndex );
   379     elem.appendChild( elemScalar );
   382   for ( 
int groupIndex : mRendererVectorSettings.keys() )
   385     QDomElement elemVector = vectorSettings.
writeXml( doc );
   386     elemVector.setAttribute( QStringLiteral( 
"group" ), groupIndex );
   387     elem.appendChild( elemVector );
   390   QDomElement elemNativeMesh = mRendererNativeMeshSettings.
writeXml( doc );
   391   elemNativeMesh.setTagName( QStringLiteral( 
"mesh-settings-native" ) );
   392   elem.appendChild( elemNativeMesh );
   394   QDomElement elemTriangularMesh = mRendererTriangularMeshSettings.
writeXml( doc );
   395   elemTriangularMesh.setTagName( QStringLiteral( 
"mesh-settings-triangular" ) );
   396   elem.appendChild( elemTriangularMesh );
   398   if ( mAveragingMethod )
   400     QDomElement elemAveraging = doc.createElement( QStringLiteral( 
"averaging-3d" ) );
   401     elemAveraging.setAttribute( QStringLiteral( 
"method" ), QStringLiteral( 
"%1" ).arg( mAveragingMethod->method() ) ) ;
   402     QDomElement elemAveragingParams = mAveragingMethod->writeXml( doc );
   403     elemAveraging.appendChild( elemAveragingParams );
   404     elem.appendChild( elemAveraging );
   412   mRendererScalarSettings.clear();
   413   mRendererVectorSettings.clear();
   414   mAveragingMethod.reset();
   416   QDomElement elemActiveDataset = elem.firstChildElement( QStringLiteral( 
"active-dataset" ) );
   417   if ( elemActiveDataset.hasAttribute( QStringLiteral( 
"scalar" ) ) )
   419     QStringList lst = elemActiveDataset.attribute( QStringLiteral( 
"scalar" ) ).split( QChar( 
',' ) );
   420     if ( lst.count() == 2 )
   423   if ( elemActiveDataset.hasAttribute( QStringLiteral( 
"vector" ) ) )
   425     QStringList lst = elemActiveDataset.attribute( QStringLiteral( 
"vector" ) ).split( QChar( 
',' ) );
   426     if ( lst.count() == 2 )
   430   QDomElement elemScalar = elem.firstChildElement( QStringLiteral( 
"scalar-settings" ) );
   431   while ( !elemScalar.isNull() )
   433     int groupIndex = elemScalar.attribute( QStringLiteral( 
"group" ) ).toInt();
   435     scalarSettings.
readXml( elemScalar );
   436     mRendererScalarSettings.insert( groupIndex, scalarSettings );
   438     elemScalar = elemScalar.nextSiblingElement( QStringLiteral( 
"scalar-settings" ) );
   441   QDomElement elemVector = elem.firstChildElement( QStringLiteral( 
"vector-settings" ) );
   442   while ( !elemVector.isNull() )
   444     int groupIndex = elemVector.attribute( QStringLiteral( 
"group" ) ).toInt();
   446     vectorSettings.
readXml( elemVector );
   447     mRendererVectorSettings.insert( groupIndex, vectorSettings );
   449     elemVector = elemVector.nextSiblingElement( QStringLiteral( 
"vector-settings" ) );
   452   QDomElement elemNativeMesh = elem.firstChildElement( QStringLiteral( 
"mesh-settings-native" ) );
   453   mRendererNativeMeshSettings.
readXml( elemNativeMesh );
   455   QDomElement elemTriangularMesh = elem.firstChildElement( QStringLiteral( 
"mesh-settings-triangular" ) );
   456   mRendererTriangularMeshSettings.
readXml( elemTriangularMesh );
   458   QDomElement elemAveraging = elem.firstChildElement( QStringLiteral( 
"averaging-3d" ) );
   459   if ( !elemAveraging.isNull() )
   467   return mSeedingMethod;
   472   mSeedingMethod = seedingMethod;
   477   return mSeedingDensity;
   482   mSeedingDensity = seedingDensity;
   487   QDomElement elem = doc.createElement( QStringLiteral( 
"vector-streamline-settings" ) );
   489   elem.setAttribute( QStringLiteral( 
"seeding-method" ), mSeedingMethod );
   490   elem.setAttribute( QStringLiteral( 
"seeding-density" ), mSeedingDensity );
   499       elem.attribute( QStringLiteral( 
"seeding-method" ) ).toInt() );
   500   mSeedingDensity = elem.attribute( QStringLiteral( 
"seeding-density" ) ).toDouble();
   505   return mDisplayingMethod;
   510   mDisplayingMethod = displayingMethod;
   515   return mArrowsSettings;
   520   mArrowsSettings = arrowSettings;
   525   return mStreamLinesSettings;
   530   mStreamLinesSettings = streamLinesSettings;
   535   QDomElement elem = doc.createElement( QStringLiteral( 
"vector-settings" ) );
   536   elem.setAttribute( QStringLiteral( 
"symbology" ), mDisplayingMethod );
   538   elem.setAttribute( QStringLiteral( 
"line-width" ), mLineWidth );
   540   elem.setAttribute( QStringLiteral( 
"filter-min" ), mFilterMin );
   541   elem.setAttribute( QStringLiteral( 
"filter-max" ), mFilterMax );
   543   elem.setAttribute( QStringLiteral( 
"user-grid-enabled" ), mOnUserDefinedGrid ? QStringLiteral( 
"1" ) : QStringLiteral( 
"0" ) );
   544   elem.setAttribute( QStringLiteral( 
"user-grid-width" ), mUserGridCellWidth );
   545   elem.setAttribute( QStringLiteral( 
"user-grid-height" ), mUserGridCellHeight );
   547   elem.appendChild( mArrowsSettings.writeXml( doc ) );
   548   elem.appendChild( mStreamLinesSettings.writeXml( doc ) );
   549   elem.appendChild( mTracesSettings.writeXml( doc ) );
   557                         elem.attribute( QStringLiteral( 
"symbology" ) ).toInt() );
   559   mLineWidth = elem.attribute( QStringLiteral( 
"line-width" ) ).toDouble();
   561   mFilterMin = elem.attribute( QStringLiteral( 
"filter-min" ) ).toDouble();
   562   mFilterMax = elem.attribute( QStringLiteral( 
"filter-max" ) ).toDouble();
   564   mOnUserDefinedGrid = elem.attribute( QStringLiteral( 
"user-grid-enabled" ) ).toInt(); 
   565   mUserGridCellWidth = elem.attribute( QStringLiteral( 
"user-grid-width" ) ).toInt();
   566   mUserGridCellHeight = elem.attribute( QStringLiteral( 
"user-grid-height" ) ).toInt();
   568   QDomElement elemVector = elem.firstChildElement( QStringLiteral( 
"vector-arrow-settings" ) );
   569   if ( ! elemVector.isNull() )
   570     mArrowsSettings.readXml( elemVector );
   572   QDomElement elemStreamLine = elem.firstChildElement( QStringLiteral( 
"vector-streamline-settings" ) );
   573   if ( ! elemStreamLine.isNull() )
   574     mStreamLinesSettings.readXml( elemStreamLine );
   576   QDomElement elemTraces = elem.firstChildElement( QStringLiteral( 
"vector-traces-settings" ) );
   577   if ( ! elemTraces.isNull() )
   578     mTracesSettings.readXml( elemTraces );
   583   return mTracesSettings;
   588   mTracesSettings = tracesSettings;
   593   mMaximumTailLength = elem.attribute( QStringLiteral( 
"maximum-tail-length" ) ).toInt();
   595                              elem.attribute( QStringLiteral( 
"maximum-tail-length-unit" ) ).toInt() );
   596   mParticlesCount = elem.attribute( QStringLiteral( 
"particles-count" ) ).toInt();
   601   QDomElement elem = doc.createElement( QStringLiteral( 
"vector-traces-settings" ) );
   602   elem.setAttribute( QStringLiteral( 
"maximum-tail-length" ), mMaximumTailLength );
   603   elem.setAttribute( QStringLiteral( 
"maximum-tail-length-unit" ), mMaximumTailLengthUnit );
   604   elem.setAttribute( QStringLiteral( 
"particles-count" ), mParticlesCount );
   611   return mMaximumTailLengthUnit;
   616   mMaximumTailLengthUnit = maximumTailLengthUnit;
   621   return mMaximumTailLength;
   626   mMaximumTailLength = maximumTailLength;
   631   return mParticlesCount;
   636   mParticlesCount = value;
 void setArrowHeadLengthRatio(double arrowHeadLengthRatio)
Sets ratio of the head length of the arrow (range 0-1) 
 
void setClassificationMinimumMaximum(double minimum, double maximum)
Sets min/max values used for creation of the color ramp shader. 
 
void setFilterMax(double filterMax)
Sets filter value for vector magnitudes. 
 
void setScaleFactor(double scaleFactor)
Sets scale factor. 
 
void setLineWidth(double lineWidth)
Sets line width used for rendering (in millimeters) 
 
void setUserGridCellHeight(int height)
Sets height of user grid cell (in pixels) 
 
A ramp shader will color a raster pixel based on a list of values ranges in a ramp. 
 
int dataset() const
Returns a dataset index within group() 
 
void readXml(const QDomElement &elem)
Reads configuration from the given DOM element. 
 
void setArrowHeadWidthRatio(double arrowHeadWidthRatio)
Sets ratio of the head width of the arrow (range 0-1) 
 
void setFilterMin(double filterMin)
Sets filter value for vector magnitudes. 
 
QgsMeshRendererVectorTracesSettings tracesSettings() const
Returns settings for vector rendered with traces. 
 
QDomElement writeXml(QDomDocument &doc) const
Writes configuration to a new DOM element. 
 
void setAveragingMethod(QgsMesh3dAveragingMethod *method)
Sets averaging method for conversion of 3d stacked mesh data to 2d data. 
 
Represents a mesh renderer settings for scalar datasets. 
 
bool isEnabled() const
Returns whether mesh structure rendering is enabled. 
 
void readXml(const QDomElement &elem)
Reads configuration from the given DOM element. 
 
QgsMeshRendererVectorArrowSettings arrowSettings() const
Returns settings for vector rendered with arrows. 
 
DataInterpolationMethod dataInterpolationMethod() const
Returns the type of interpolation to use to convert face defined datasets to values on vertices...
 
~QgsMeshRendererSettings()
Destructor. 
 
double scaleFactor() const
Returns scale factor. 
 
QgsMeshRendererScalarSettings scalarSettings(int groupIndex) const
Returns renderer settings. 
 
int group() const
Returns a group index. 
 
Multi level averaging method specifies limits of vertical layers from the top layer down or reversed...
 
int particlesCount() const
Returns particles count. 
 
void readXml(const QDomElement &elem)
Reads configuration from the given DOM element. 
 
void setOnUserDefinedGrid(bool enabled)
Toggles drawing of vectors on user defined grid. 
 
double maxShaftLength() const
Returns maximum shaft length (in millimeters) 
 
SeedingStartPointsMethod seedingMethod() const
Returns the method used for seeding start points of strealines. 
 
double filterMin() const
Returns filter value for vector magnitudes. 
 
static QString encodeColor(const QColor &color)
 
double arrowHeadWidthRatio() const
Returns ratio of the head width of the arrow (range 0-1) 
 
double opacity() const
Returns opacity. 
 
double lineWidth() const
Returns line width used for rendering (in millimeters) 
 
double maximumTailLength() const
Returns the maximum tail length. 
 
QgsMeshRendererVectorArrowSettings::ArrowScalingMethod shaftLengthMethod() const
Returns method used for drawing arrows. 
 
QDomElement writeXml(QDomDocument &doc) const
Writes configuration to a new DOM element. 
 
void setArrowsSettings(const QgsMeshRendererVectorArrowSettings &arrowSettings)
Sets settings for vector rendered with arrows. 
 
virtual QgsMesh3dAveragingMethod * clone() const =0
Clone the instance. 
 
void readXml(const QDomElement &elem)
Reads configuration from the given DOM element. 
 
Represents a streamline renderer settings for vector datasets. 
 
static QgsMesh3dAveragingMethod * createFromXml(const QDomElement &elem)
Creates the instance from XML by calling readXml of derived classes. 
 
DataInterpolationMethod
Interpolation of value defined on vertices from datasets with data defined on faces. 
 
void setFixedShaftLength(double fixedShaftLength)
Sets fixed length (in millimeters) 
 
void setColorRampShader(const QgsColorRampShader &shader)
Sets color ramp shader function. 
 
void setColor(const QColor &color)
Sets color used for drawing arrows. 
 
void readXml(const QDomElement &elem)
Reads configuration from the given DOM element. 
 
QColor color() const
Returns color used for drawing arrows. 
 
SeedingStartPointsMethod
Method used to define start points that are used to draw streamlines. 
 
void setStreamLinesSettings(const QgsMeshRendererVectorStreamlineSettings &streamLinesSettings)
Sets settings for vector rendered with streamlines. 
 
double filterMax() const
Returns filter value for vector magnitudes. 
 
void setSeedingDensity(double seedingDensity)
Sets the density used for seeding start points. 
 
void setDataInterpolationMethod(const DataInterpolationMethod &dataInterpolationMethod)
Sets data interpolation method. 
 
void setSymbology(const Symbology &symbology)
Sets the displaying method used to render vector datasets. 
 
void setMinShaftLength(double minShaftLength)
Sets mininimum shaft length (in millimeters) 
 
void setEnabled(bool enabled)
Sets whether mesh structure rendering is enabled. 
 
void setSeedingMethod(const SeedingStartPointsMethod &seedingMethod)
Sets the method used for seeding start points of strealines. 
 
QgsColorRampShader colorRampShader() const
Returns color ramp shader function. 
 
Symbology
Defines the symbology of vector rendering. 
 
QgsMeshRendererSettings()
Constructs renderer with default single layer averaging method. 
 
void setParticlesCount(int value)
Sets particles count. 
 
QgsMesh3dAveragingMethod * averagingMethod() const
Returns averaging method for conversion of 3d stacked mesh data to 2d data. 
 
double fixedShaftLength() const
Returns fixed arrow length (in millimeters) 
 
void setLineWidth(double lineWidth)
Sets line width of the arrow in pixels (in millimeters) 
 
QgsMeshRendererVectorSettings vectorSettings(int groupIndex) const
Returns renderer settings. 
 
ArrowScalingMethod
Algorithm how to transform vector magnitude to length of arrow on the device in pixels. 
 
void setOpacity(double opacity)
Sets opacity. 
 
void setMaxShaftLength(double maxShaftLength)
Sets maximum shaft length (in millimeters) 
 
int userGridCellWidth() const
Returns width in pixels of user grid cell. 
 
void setTracesSettings(const QgsMeshRendererVectorTracesSettings &tracesSettings)
Sets settings for vector rendered with traces. 
 
QgsUnitTypes::RenderUnit maximumTailLengthUnit() const
Returns the maximum tail length unit. 
 
QDomElement writeXml(QDomDocument &doc) const
Writes configuration to a new DOM element. 
 
void setMaximumTailLengthUnit(const QgsUnitTypes::RenderUnit &maximumTailLengthUnit)
Sets the maximum tail length unit. 
 
QDomElement writeXml(QDomDocument &doc) const
Writes configuration to a new DOM element. 
 
bool isOnUserDefinedGrid() const
Returns whether vectors are drawn on user-defined grid. 
 
QColor color() const
Returns color used for rendering. 
 
QgsMeshDatasetIndex is index that identifies the dataset group (e.g. 
 
QgsMeshRendererVectorStreamlineSettings streamLinesSettings() const
Returns settings for vector rendered with streamlines. 
 
Abstract class to interpolate 3d stacked mesh data to 2d data. 
 
QDomElement writeXml(QDomDocument &doc) const
Writes configuration to a new DOM element. 
 
int userGridCellHeight() const
Returns height in pixels of user grid cell. 
 
bool isValid() const
Returns whether index is valid, ie at least groups is set. 
 
QDomElement writeXml(QDomDocument &doc) const
Writes configuration to a new DOM element. 
 
double lineWidth() const
Returns line width of the arrow (in millimeters) 
 
void setUserGridCellWidth(int width)
Sets width of user grid cell (in pixels) 
 
void setColor(const QColor &color)
Sets color used for rendering of the mesh. 
 
Represents a trace renderer settings for vector datasets displayed by particle traces. 
 
void readXml(const QDomElement &elem)
Reads configuration from the given DOM element. 
 
void setShaftLengthMethod(ArrowScalingMethod shaftLengthMethod)
Sets method used for drawing arrows. 
 
Represents a mesh renderer settings for vector datasets displayed with arrows. 
 
double seedingDensity() const
Returns the density used for seeding start points. 
 
Symbology symbology() const
Returns the displaying method used to render vector datasets. 
 
double classificationMaximum() const
Returns max value used for creation of the color ramp shader. 
 
void setMaximumTailLength(double maximumTailLength)
Sets the maximums tail length. 
 
QDomElement writeXml(QDomDocument &doc) const
Writes configuration to a new DOM element. 
 
void readXml(const QDomElement &elem)
Reads configuration from the given DOM element. 
 
Represents a streamline renderer settings for vector datasets displayed by streamlines. 
 
RenderUnit
Rendering size units. 
 
static QColor decodeColor(const QString &str)
 
double arrowHeadLengthRatio() const
Returns ratio of the head length of the arrow (range 0-1) 
 
double minShaftLength() const
Returns mininimum shaft length (in millimeters) 
 
double classificationMinimum() const
Returns min value used for creation of the color ramp shader.