QGIS API Documentation  3.12.1-BucureČ™ti (121cc00ff0)
qgsmeshrenderersettings.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmeshrenderersettings.cpp
3  ---------------------------
4  begin : May 2018
5  copyright : (C) 2018 by Peter Petrik
6  email : zilolv at gmail dot com
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
19 #include "qgssymbollayerutils.h"
20 
21 
23 {
24  return mEnabled;
25 }
26 
28 {
29  mEnabled = on;
30 }
31 
33 {
34  return mLineWidth;
35 }
36 
38 {
39  mLineWidth = lineWidth;
40 }
41 
43 {
44  return mColor;
45 }
46 
48 {
49  mColor = color;
50 }
51 
52 QDomElement QgsMeshRendererMeshSettings::writeXml( QDomDocument &doc ) const
53 {
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 );
57  elem.setAttribute( QStringLiteral( "color" ), QgsSymbolLayerUtils::encodeColor( mColor ) );
58  return elem;
59 }
60 
61 void QgsMeshRendererMeshSettings::readXml( const QDomElement &elem )
62 {
63  mEnabled = elem.attribute( QStringLiteral( "enabled" ) ).toInt();
64  mLineWidth = elem.attribute( QStringLiteral( "line-width" ) ).toDouble();
65  mColor = QgsSymbolLayerUtils::decodeColor( elem.attribute( QStringLiteral( "color" ) ) );
66 }
67 
68 // ---------------------------------------------------------------------
69 
71 {
72  return mColorRampShader;
73 }
74 
76 {
77  mColorRampShader = shader;
78 }
79 
80 double QgsMeshRendererScalarSettings::classificationMinimum() const { return mClassificationMinimum; }
81 
82 double QgsMeshRendererScalarSettings::classificationMaximum() const { return mClassificationMaximum; }
83 
85 {
86  mClassificationMinimum = minimum;
87  mClassificationMaximum = maximum;
88 }
89 
90 double QgsMeshRendererScalarSettings::opacity() const { return mOpacity; }
91 
92 void QgsMeshRendererScalarSettings::setOpacity( double opacity ) { mOpacity = opacity; }
93 
95 {
96  return mDataInterpolationMethod;
97 }
98 
100 {
101  mDataInterpolationMethod = dataInterpolationMethod;
102 }
103 
104 QDomElement QgsMeshRendererScalarSettings::writeXml( QDomDocument &doc ) const
105 {
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 );
110 
111  QString methodTxt;
112  switch ( mDataInterpolationMethod )
113  {
114  case None:
115  methodTxt = QStringLiteral( "none" );
116  break;
117  case NeighbourAverage:
118  methodTxt = QStringLiteral( "neighbour-average" );
119  break;
120  }
121  elem.setAttribute( QStringLiteral( "interpolation-method" ), methodTxt );
122  QDomElement elemShader = mColorRampShader.writeXml( doc );
123  elem.appendChild( elemShader );
124  return elem;
125 }
126 
127 void QgsMeshRendererScalarSettings::readXml( const QDomElement &elem )
128 {
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 )
134  {
135  mDataInterpolationMethod = DataInterpolationMethod::NeighbourAverage;
136  }
137  else
138  {
139  mDataInterpolationMethod = DataInterpolationMethod::None;
140  }
141  QDomElement elemShader = elem.firstChildElement( QStringLiteral( "colorrampshader" ) );
142  mColorRampShader.readXml( elemShader );
143 }
144 
145 // ---------------------------------------------------------------------
146 
148 {
149  return mLineWidth;
150 }
151 
153 {
154  mLineWidth = lineWidth;
155 }
156 
158 {
159  return mColor;
160 }
161 
162 void QgsMeshRendererVectorSettings::setColor( const QColor &vectorColor )
163 {
164  mColor = vectorColor;
165 }
166 
168 {
169  return mFilterMin;
170 }
171 
172 void QgsMeshRendererVectorSettings::setFilterMin( double vectorFilterMin )
173 {
174  mFilterMin = vectorFilterMin;
175 }
176 
178 {
179  return mFilterMax;
180 }
181 
182 void QgsMeshRendererVectorSettings::setFilterMax( double vectorFilterMax )
183 {
184  mFilterMax = vectorFilterMax;
185 }
186 
188 {
189  return mOnUserDefinedGrid;
190 }
191 
193 {
194  mOnUserDefinedGrid = enabled;
195 }
196 
198 {
199  return mUserGridCellWidth;
200 }
201 
203 {
204  mUserGridCellWidth = width;
205 }
206 
208 {
209  return mUserGridCellHeight;
210 }
211 
213 {
214  mUserGridCellHeight = height;
215 }
216 
218 {
219  return mShaftLengthMethod;
220 }
221 
223 {
224  mShaftLengthMethod = shaftLengthMethod;
225 }
226 
228 {
229  return mMinShaftLength;
230 }
231 
233 {
234  mMinShaftLength = minShaftLength;
235 }
236 
238 {
239  return mMaxShaftLength;
240 }
241 
243 {
244  mMaxShaftLength = maxShaftLength;
245 }
246 
248 {
249  return mScaleFactor;
250 }
251 
253 {
254  mScaleFactor = scaleFactor;
255 }
256 
258 {
259  return mFixedShaftLength;
260 }
261 
263 {
264  mFixedShaftLength = fixedShaftLength;
265 }
266 
268 {
269  return mArrowHeadWidthRatio;
270 }
271 
273 {
274  mArrowHeadWidthRatio = vectorHeadWidthRatio;
275 }
276 
278 {
279  return mArrowHeadLengthRatio;
280 }
281 
283 {
284  mArrowHeadLengthRatio = vectorHeadLengthRatio;
285 }
286 
287 QDomElement QgsMeshRendererVectorArrowSettings::writeXml( QDomDocument &doc ) const
288 {
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 );
292 
293  QDomElement elemShaft = doc.createElement( QStringLiteral( "shaft-length" ) );
294  QString methodTxt;
295  switch ( mShaftLengthMethod )
296  {
297  case MinMax:
298  methodTxt = QStringLiteral( "minmax" );
299  elemShaft.setAttribute( QStringLiteral( "min" ), mMinShaftLength );
300  elemShaft.setAttribute( QStringLiteral( "max" ), mMaxShaftLength );
301  break;
302  case Scaled:
303  methodTxt = QStringLiteral( "scaled" );
304  elemShaft.setAttribute( QStringLiteral( "scale-factor" ), mScaleFactor );
305  break;
306  case Fixed:
307  methodTxt = QStringLiteral( "fixed" ) ;
308  elemShaft.setAttribute( QStringLiteral( "fixed-length" ), mFixedShaftLength );
309  break;
310  }
311  elemShaft.setAttribute( QStringLiteral( "method" ), methodTxt );
312  elem.appendChild( elemShaft );
313  return elem;
314 }
315 
316 void QgsMeshRendererVectorArrowSettings::readXml( const QDomElement &elem )
317 {
318  mArrowHeadWidthRatio = elem.attribute( QStringLiteral( "arrow-head-width-ratio" ) ).toDouble();
319  mArrowHeadLengthRatio = elem.attribute( QStringLiteral( "arrow-head-length-ratio" ) ).toDouble();
320 
321  QDomElement elemShaft = elem.firstChildElement( QStringLiteral( "shaft-length" ) );
322  QString methodTxt = elemShaft.attribute( QStringLiteral( "method" ) );
323  if ( QStringLiteral( "minmax" ) == methodTxt )
324  {
325  mShaftLengthMethod = MinMax;
326  mMinShaftLength = elemShaft.attribute( QStringLiteral( "min" ) ).toDouble();
327  mMaxShaftLength = elemShaft.attribute( QStringLiteral( "max" ) ).toDouble();
328  }
329  else if ( QStringLiteral( "scaled" ) == methodTxt )
330  {
331  mShaftLengthMethod = Scaled;
332  mScaleFactor = elemShaft.attribute( QStringLiteral( "scale-factor" ) ).toDouble();
333  }
334  else // fixed
335  {
336  mShaftLengthMethod = Fixed;
337  mFixedShaftLength = elemShaft.attribute( QStringLiteral( "fixed-length" ) ).toDouble();
338  }
339 }
340 
341 // ---------------------------------------------------------------------
342 
344  : mAveragingMethod( new QgsMeshMultiLevelsAveragingMethod() )
345 {
346 }
347 
349 
351 {
352  return mAveragingMethod.get();
353 }
354 
356 {
357  if ( method )
358  mAveragingMethod.reset( method->clone() );
359  else
360  mAveragingMethod.reset();
361 }
362 
363 QDomElement QgsMeshRendererSettings::writeXml( QDomDocument &doc ) const
364 {
365  QDomElement elem = doc.createElement( QStringLiteral( "mesh-renderer-settings" ) );
366 
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 );
373 
374  for ( int groupIndex : mRendererScalarSettings.keys() )
375  {
376  const QgsMeshRendererScalarSettings &scalarSettings = mRendererScalarSettings[groupIndex];
377  QDomElement elemScalar = scalarSettings.writeXml( doc );
378  elemScalar.setAttribute( QStringLiteral( "group" ), groupIndex );
379  elem.appendChild( elemScalar );
380  }
381 
382  for ( int groupIndex : mRendererVectorSettings.keys() )
383  {
384  const QgsMeshRendererVectorSettings &vectorSettings = mRendererVectorSettings[groupIndex];
385  QDomElement elemVector = vectorSettings.writeXml( doc );
386  elemVector.setAttribute( QStringLiteral( "group" ), groupIndex );
387  elem.appendChild( elemVector );
388  }
389 
390  QDomElement elemNativeMesh = mRendererNativeMeshSettings.writeXml( doc );
391  elemNativeMesh.setTagName( QStringLiteral( "mesh-settings-native" ) );
392  elem.appendChild( elemNativeMesh );
393 
394  QDomElement elemTriangularMesh = mRendererTriangularMeshSettings.writeXml( doc );
395  elemTriangularMesh.setTagName( QStringLiteral( "mesh-settings-triangular" ) );
396  elem.appendChild( elemTriangularMesh );
397 
398  if ( mAveragingMethod )
399  {
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 );
405  }
406 
407  return elem;
408 }
409 
410 void QgsMeshRendererSettings::readXml( const QDomElement &elem )
411 {
412  mRendererScalarSettings.clear();
413  mRendererVectorSettings.clear();
414  mAveragingMethod.reset();
415 
416  QDomElement elemActiveDataset = elem.firstChildElement( QStringLiteral( "active-dataset" ) );
417  if ( elemActiveDataset.hasAttribute( QStringLiteral( "scalar" ) ) )
418  {
419  QStringList lst = elemActiveDataset.attribute( QStringLiteral( "scalar" ) ).split( QChar( ',' ) );
420  if ( lst.count() == 2 )
421  mActiveScalarDataset = QgsMeshDatasetIndex( lst[0].toInt(), lst[1].toInt() );
422  }
423  if ( elemActiveDataset.hasAttribute( QStringLiteral( "vector" ) ) )
424  {
425  QStringList lst = elemActiveDataset.attribute( QStringLiteral( "vector" ) ).split( QChar( ',' ) );
426  if ( lst.count() == 2 )
427  mActiveVectorDataset = QgsMeshDatasetIndex( lst[0].toInt(), lst[1].toInt() );
428  }
429 
430  QDomElement elemScalar = elem.firstChildElement( QStringLiteral( "scalar-settings" ) );
431  while ( !elemScalar.isNull() )
432  {
433  int groupIndex = elemScalar.attribute( QStringLiteral( "group" ) ).toInt();
435  scalarSettings.readXml( elemScalar );
436  mRendererScalarSettings.insert( groupIndex, scalarSettings );
437 
438  elemScalar = elemScalar.nextSiblingElement( QStringLiteral( "scalar-settings" ) );
439  }
440 
441  QDomElement elemVector = elem.firstChildElement( QStringLiteral( "vector-settings" ) );
442  while ( !elemVector.isNull() )
443  {
444  int groupIndex = elemVector.attribute( QStringLiteral( "group" ) ).toInt();
446  vectorSettings.readXml( elemVector );
447  mRendererVectorSettings.insert( groupIndex, vectorSettings );
448 
449  elemVector = elemVector.nextSiblingElement( QStringLiteral( "vector-settings" ) );
450  }
451 
452  QDomElement elemNativeMesh = elem.firstChildElement( QStringLiteral( "mesh-settings-native" ) );
453  mRendererNativeMeshSettings.readXml( elemNativeMesh );
454 
455  QDomElement elemTriangularMesh = elem.firstChildElement( QStringLiteral( "mesh-settings-triangular" ) );
456  mRendererTriangularMeshSettings.readXml( elemTriangularMesh );
457 
458  QDomElement elemAveraging = elem.firstChildElement( QStringLiteral( "averaging-3d" ) );
459  if ( !elemAveraging.isNull() )
460  {
461  mAveragingMethod.reset( QgsMesh3dAveragingMethod::createFromXml( elemAveraging ) );
462  }
463 }
464 
466 {
467  return mSeedingMethod;
468 }
469 
471 {
472  mSeedingMethod = seedingMethod;
473 }
474 
476 {
477  return mSeedingDensity;
478 }
479 
481 {
482  mSeedingDensity = seedingDensity;
483 }
484 
485 QDomElement QgsMeshRendererVectorStreamlineSettings::writeXml( QDomDocument &doc ) const
486 {
487  QDomElement elem = doc.createElement( QStringLiteral( "vector-streamline-settings" ) );
488 
489  elem.setAttribute( QStringLiteral( "seeding-method" ), mSeedingMethod );
490  elem.setAttribute( QStringLiteral( "seeding-density" ), mSeedingDensity );
491 
492  return elem;
493 }
494 
496 {
497  mSeedingMethod =
499  elem.attribute( QStringLiteral( "seeding-method" ) ).toInt() );
500  mSeedingDensity = elem.attribute( QStringLiteral( "seeding-density" ) ).toDouble();
501 }
502 
504 {
505  return mDisplayingMethod;
506 }
507 
509 {
510  mDisplayingMethod = displayingMethod;
511 }
512 
514 {
515  return mArrowsSettings;
516 }
517 
519 {
520  mArrowsSettings = arrowSettings;
521 }
522 
524 {
525  return mStreamLinesSettings;
526 }
527 
529 {
530  mStreamLinesSettings = streamLinesSettings;
531 }
532 
533 QDomElement QgsMeshRendererVectorSettings::writeXml( QDomDocument &doc ) const
534 {
535  QDomElement elem = doc.createElement( QStringLiteral( "vector-settings" ) );
536  elem.setAttribute( QStringLiteral( "symbology" ), mDisplayingMethod );
537 
538  elem.setAttribute( QStringLiteral( "line-width" ), mLineWidth );
539  elem.setAttribute( QStringLiteral( "color" ), QgsSymbolLayerUtils::encodeColor( mColor ) );
540  elem.setAttribute( QStringLiteral( "filter-min" ), mFilterMin );
541  elem.setAttribute( QStringLiteral( "filter-max" ), mFilterMax );
542 
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 );
546 
547  elem.appendChild( mArrowsSettings.writeXml( doc ) );
548  elem.appendChild( mStreamLinesSettings.writeXml( doc ) );
549  elem.appendChild( mTracesSettings.writeXml( doc ) );
550 
551  return elem;
552 }
553 
554 void QgsMeshRendererVectorSettings::readXml( const QDomElement &elem )
555 {
556  mDisplayingMethod = static_cast<QgsMeshRendererVectorSettings::Symbology>(
557  elem.attribute( QStringLiteral( "symbology" ) ).toInt() );
558 
559  mLineWidth = elem.attribute( QStringLiteral( "line-width" ) ).toDouble();
560  mColor = QgsSymbolLayerUtils::decodeColor( elem.attribute( QStringLiteral( "color" ) ) );
561  mFilterMin = elem.attribute( QStringLiteral( "filter-min" ) ).toDouble();
562  mFilterMax = elem.attribute( QStringLiteral( "filter-max" ) ).toDouble();
563 
564  mOnUserDefinedGrid = elem.attribute( QStringLiteral( "user-grid-enabled" ) ).toInt(); //bool
565  mUserGridCellWidth = elem.attribute( QStringLiteral( "user-grid-width" ) ).toInt();
566  mUserGridCellHeight = elem.attribute( QStringLiteral( "user-grid-height" ) ).toInt();
567 
568  QDomElement elemVector = elem.firstChildElement( QStringLiteral( "vector-arrow-settings" ) );
569  if ( ! elemVector.isNull() )
570  mArrowsSettings.readXml( elemVector );
571 
572  QDomElement elemStreamLine = elem.firstChildElement( QStringLiteral( "vector-streamline-settings" ) );
573  if ( ! elemStreamLine.isNull() )
574  mStreamLinesSettings.readXml( elemStreamLine );
575 
576  QDomElement elemTraces = elem.firstChildElement( QStringLiteral( "vector-traces-settings" ) );
577  if ( ! elemTraces.isNull() )
578  mTracesSettings.readXml( elemTraces );
579 }
580 
582 {
583  return mTracesSettings;
584 }
585 
587 {
588  mTracesSettings = tracesSettings;
589 }
590 
591 void QgsMeshRendererVectorTracesSettings::readXml( const QDomElement &elem )
592 {
593  mMaximumTailLength = elem.attribute( QStringLiteral( "maximum-tail-length" ) ).toInt();
594  mMaximumTailLengthUnit = static_cast<QgsUnitTypes::RenderUnit>(
595  elem.attribute( QStringLiteral( "maximum-tail-length-unit" ) ).toInt() );
596  mParticlesCount = elem.attribute( QStringLiteral( "particles-count" ) ).toInt();
597 }
598 
599 QDomElement QgsMeshRendererVectorTracesSettings::writeXml( QDomDocument &doc ) const
600 {
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 );
605 
606  return elem;
607 }
608 
610 {
611  return mMaximumTailLengthUnit;
612 }
613 
615 {
616  mMaximumTailLengthUnit = maximumTailLengthUnit;
617 }
618 
620 {
621  return mMaximumTailLength;
622 }
623 
625 {
626  mMaximumTailLength = maximumTailLength;
627 }
628 
630 {
631  return mParticlesCount;
632 }
633 
635 {
636  mParticlesCount = value;
637 }
638 
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.
Definition: qgsunittypes.h:145
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.