LCOV - code coverage report
Current view: top level - core/mesh - qgsmeshrenderersettings.h (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 0 45 0.0 %
Date: 2021-04-10 08:29:14 Functions: 0 0 -
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /***************************************************************************
       2                 :            :                          qgsmeshrenderersettings.h
       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                 :            : 
      18                 :            : #ifndef QGSMESHRENDERERSETTINGS_H
      19                 :            : #define QGSMESHRENDERERSETTINGS_H
      20                 :            : 
      21                 :            : #include <QColor>
      22                 :            : #include <QDomElement>
      23                 :            : #include <limits>
      24                 :            : 
      25                 :            : #include "qgis_core.h"
      26                 :            : #include "qgis.h"
      27                 :            : #include "qgscolorrampshader.h"
      28                 :            : #include "qgsmeshdataprovider.h"
      29                 :            : #include "qgsmesh3daveraging.h"
      30                 :            : #include "qgsinterpolatedlinerenderer.h"
      31                 :            : 
      32                 :            : /**
      33                 :            :  * \ingroup core
      34                 :            :  *
      35                 :            :  * \brief Represents a mesh renderer settings for mesh object
      36                 :            :  *
      37                 :            :  * \note The API is considered EXPERIMENTAL and can be changed without a notice
      38                 :            :  *
      39                 :            :  * \since QGIS 3.2
      40                 :            :  */
      41                 :          0 : class CORE_EXPORT QgsMeshRendererMeshSettings
      42                 :            : {
      43                 :            :   public:
      44                 :            :     //! Returns whether mesh structure rendering is enabled
      45                 :            :     bool isEnabled() const;
      46                 :            :     //! Sets whether mesh structure rendering is enabled
      47                 :            :     void setEnabled( bool enabled );
      48                 :            : 
      49                 :            :     //! Returns line width used for rendering (in millimeters)
      50                 :            :     double lineWidth() const;
      51                 :            :     //! Sets line width used for rendering (in millimeters)
      52                 :            :     void setLineWidth( double lineWidth );
      53                 :            : 
      54                 :            :     //! Returns color used for rendering
      55                 :            :     QColor color() const;
      56                 :            :     //! Sets color used for rendering of the mesh
      57                 :            :     void setColor( const QColor &color );
      58                 :            : 
      59                 :            :     /**
      60                 :            :      * Returns units of the width of the mesh frame
      61                 :            :      *
      62                 :            :      * \since QGIS 3.14
      63                 :            :      */
      64                 :            :     QgsUnitTypes::RenderUnit lineWidthUnit() const;
      65                 :            : 
      66                 :            :     /**
      67                 :            :      * Sets units of the width of the mesh frame
      68                 :            :      *
      69                 :            :      * \since QGIS 3.14
      70                 :            :      */
      71                 :            :     void setLineWidthUnit( const QgsUnitTypes::RenderUnit &lineWidthUnit );
      72                 :            : 
      73                 :            :     //! Writes configuration to a new DOM element
      74                 :            :     QDomElement writeXml( QDomDocument &doc ) const;
      75                 :            :     //! Reads configuration from the given DOM element
      76                 :            :     void readXml( const QDomElement &elem );
      77                 :            : 
      78                 :            :   private:
      79                 :          0 :     bool mEnabled = false;
      80                 :          0 :     double mLineWidth = DEFAULT_LINE_WIDTH;
      81                 :          0 :     QgsUnitTypes::RenderUnit mLineWidthUnit = QgsUnitTypes::RenderMillimeters;
      82                 :          0 :     QColor mColor = Qt::black;
      83                 :            : };
      84                 :            : 
      85                 :            : /**
      86                 :            :  * \ingroup core
      87                 :            :  *
      88                 :            :  * \brief Represents a mesh renderer settings for scalar datasets
      89                 :            :  *
      90                 :            :  * \note The API is considered EXPERIMENTAL and can be changed without a notice
      91                 :            :  *
      92                 :            :  * \since QGIS 3.2
      93                 :            :  */
      94                 :          0 : class CORE_EXPORT QgsMeshRendererScalarSettings
      95                 :            : {
      96                 :            :   public:
      97                 :            : 
      98                 :            :     /**
      99                 :            :      * Resampling of value from dataset
     100                 :            :      *
     101                 :            :      * - for vertices : does a resampling from values defined on surrounding faces
     102                 :            :      * - for faces : does a resampling from values defined on surrounding vertices
     103                 :            :      * - for edges : not supported.
     104                 :            :      */
     105                 :            :     enum DataResamplingMethod
     106                 :            :     {
     107                 :            : 
     108                 :            :       /**
     109                 :            :        * Does not use resampling
     110                 :            :        */
     111                 :            :       None = 0,
     112                 :            : 
     113                 :            :       /**
     114                 :            :        * Does a simple average of values defined for all surrounding faces/vertices
     115                 :            :        */
     116                 :            :       NeighbourAverage,
     117                 :            :     };
     118                 :            : 
     119                 :            :     //! Returns color ramp shader function
     120                 :            :     QgsColorRampShader colorRampShader() const;
     121                 :            :     //! Sets color ramp shader function
     122                 :            :     void setColorRampShader( const QgsColorRampShader &shader );
     123                 :            : 
     124                 :            :     //! Returns min value used for creation of the color ramp shader
     125                 :            :     double classificationMinimum() const;
     126                 :            :     //! Returns max value used for creation of the color ramp shader
     127                 :            :     double classificationMaximum() const;
     128                 :            :     //! Sets min/max values used for creation of the color ramp shader
     129                 :            :     void setClassificationMinimumMaximum( double minimum, double maximum );
     130                 :            : 
     131                 :            :     //! Returns opacity
     132                 :            :     double opacity() const;
     133                 :            :     //! Sets opacity
     134                 :            :     void setOpacity( double opacity );
     135                 :            : 
     136                 :            :     /**
     137                 :            :      * Returns the type of interpolation to use to
     138                 :            :      * convert face defined datasets to
     139                 :            :      * values on vertices
     140                 :            :      *
     141                 :            :      * \since QGIS 3.12
     142                 :            :      */
     143                 :            :     DataResamplingMethod dataResamplingMethod() const;
     144                 :            : 
     145                 :            :     /**
     146                 :            :      * Sets data interpolation method
     147                 :            :      *
     148                 :            :      * \since QGIS 3.12
     149                 :            :      */
     150                 :            :     void setDataResamplingMethod( const DataResamplingMethod &dataResamplingMethod );
     151                 :            : 
     152                 :            :     /**
     153                 :            :      * Returns the stroke width used to render edges scalar dataset
     154                 :            :      *
     155                 :            :      * \since QGIS 3.14
     156                 :            :      */
     157                 :            :     QgsInterpolatedLineWidth edgeStrokeWidth() const;
     158                 :            : 
     159                 :            :     /**
     160                 :            :      * Sets the stroke width used to render edges scalar dataset
     161                 :            :      *
     162                 :            :      * \since QGIS 3.14
     163                 :            :      */
     164                 :            :     void setEdgeStrokeWidth( const QgsInterpolatedLineWidth &strokeWidth );
     165                 :            : 
     166                 :            :     /**
     167                 :            :     *Returns the stroke width unit used to render edges scalar dataset
     168                 :            :     *
     169                 :            :     * \since QGIS 3.14
     170                 :            :     */
     171                 :            :     QgsUnitTypes::RenderUnit edgeStrokeWidthUnit() const;
     172                 :            : 
     173                 :            :     /**
     174                 :            :      * Sets the stroke width unit used to render edges scalar dataset
     175                 :            :      *
     176                 :            :      * \since QGIS 3.14
     177                 :            :      */
     178                 :            :     void setEdgeStrokeWidthUnit( const QgsUnitTypes::RenderUnit &edgeStrokeWidthUnit );
     179                 :            : 
     180                 :            :     //! Writes configuration to a new DOM element
     181                 :            :     QDomElement writeXml( QDomDocument &doc, const QgsReadWriteContext &context = QgsReadWriteContext() ) const;
     182                 :            :     //! Reads configuration from the given DOM element
     183                 :            :     void readXml( const QDomElement &elem, const QgsReadWriteContext &context = QgsReadWriteContext() );
     184                 :            : 
     185                 :            :   private:
     186                 :            :     QgsColorRampShader mColorRampShader;
     187                 :          0 :     DataResamplingMethod mDataResamplingMethod = DataResamplingMethod::None;
     188                 :          0 :     double mClassificationMinimum = 0;
     189                 :          0 :     double mClassificationMaximum = 0;
     190                 :          0 :     double mOpacity = 1;
     191                 :            : 
     192                 :            :     QgsInterpolatedLineWidth mEdgeStrokeWidth;
     193                 :          0 :     QgsUnitTypes::RenderUnit mEdgeStrokeWidthUnit = QgsUnitTypes::RenderMillimeters;
     194                 :            : };
     195                 :            : 
     196                 :            : /**
     197                 :            :  * \ingroup core
     198                 :            :  *
     199                 :            :  * \brief Represents a mesh renderer settings for vector datasets displayed with arrows
     200                 :            :  *
     201                 :            :  * \note The API is considered EXPERIMENTAL and can be changed without a notice
     202                 :            :  *
     203                 :            :  * \since QGIS 3.12
     204                 :            :  */
     205                 :          0 : class CORE_EXPORT QgsMeshRendererVectorArrowSettings
     206                 :            : {
     207                 :            :   public:
     208                 :            : 
     209                 :            :     //! Algorithm how to transform vector magnitude to length of arrow on the device in pixels
     210                 :            :     enum ArrowScalingMethod
     211                 :            :     {
     212                 :            : 
     213                 :            :       /**
     214                 :            :        * Scale vector magnitude linearly to fit in range of vectorFilterMin() and vectorFilterMax()
     215                 :            :        */
     216                 :            :       MinMax = 0,
     217                 :            : 
     218                 :            :       /**
     219                 :            :        * Scale vector magnitude by factor scaleFactor()
     220                 :            :        */
     221                 :            :       Scaled,
     222                 :            : 
     223                 :            :       /**
     224                 :            :        * Use fixed length fixedShaftLength() regardless of vector's magnitude
     225                 :            :        */
     226                 :            :       Fixed
     227                 :            :     };
     228                 :            : 
     229                 :            :     //! Returns method used for drawing arrows
     230                 :            :     QgsMeshRendererVectorArrowSettings::ArrowScalingMethod shaftLengthMethod() const;
     231                 :            :     //! Sets method used for drawing arrows
     232                 :            :     void setShaftLengthMethod( ArrowScalingMethod shaftLengthMethod );
     233                 :            : 
     234                 :            :     /**
     235                 :            :      * Returns mininimum shaft length (in millimeters)
     236                 :            :      *
     237                 :            :      * Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax
     238                 :            :      */
     239                 :            :     double minShaftLength() const;
     240                 :            : 
     241                 :            :     /**
     242                 :            :      * Sets mininimum shaft length (in millimeters)
     243                 :            :      *
     244                 :            :      * Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax
     245                 :            :      */
     246                 :            :     void setMinShaftLength( double minShaftLength );
     247                 :            : 
     248                 :            :     /**
     249                 :            :      * Returns maximum shaft length (in millimeters)
     250                 :            :      *
     251                 :            :      * Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax
     252                 :            :      */
     253                 :            :     double maxShaftLength() const;
     254                 :            : 
     255                 :            :     /**
     256                 :            :      * Sets maximum shaft length (in millimeters)
     257                 :            :      *
     258                 :            :      * Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax
     259                 :            :      */
     260                 :            :     void setMaxShaftLength( double maxShaftLength );
     261                 :            : 
     262                 :            :     /**
     263                 :            :      * Returns scale factor
     264                 :            :      *
     265                 :            :      * Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::Scaled
     266                 :            :      */
     267                 :            :     double scaleFactor() const;
     268                 :            : 
     269                 :            :     /**
     270                 :            :      * Sets scale factor
     271                 :            :      *
     272                 :            :      * Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::Scaled
     273                 :            :      */
     274                 :            :     void setScaleFactor( double scaleFactor );
     275                 :            : 
     276                 :            :     /**
     277                 :            :      * Returns fixed arrow length (in millimeters)
     278                 :            :      *
     279                 :            :      * Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::Fixed
     280                 :            :      */
     281                 :            :     double fixedShaftLength() const;
     282                 :            : 
     283                 :            :     /**
     284                 :            :      * Sets fixed length  (in millimeters)
     285                 :            :      *
     286                 :            :      * Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::Fixed
     287                 :            :      */
     288                 :            :     void setFixedShaftLength( double fixedShaftLength );
     289                 :            : 
     290                 :            :     //! Returns ratio of the head width of the arrow (range 0-1)
     291                 :            :     double arrowHeadWidthRatio() const;
     292                 :            :     //! Sets ratio of the head width of the arrow (range 0-1)
     293                 :            :     void setArrowHeadWidthRatio( double arrowHeadWidthRatio );
     294                 :            : 
     295                 :            :     //! Returns ratio of the head length of the arrow (range 0-1)
     296                 :            :     double arrowHeadLengthRatio() const;
     297                 :            :     //! Sets ratio of the head length of the arrow (range 0-1)
     298                 :            :     void setArrowHeadLengthRatio( double arrowHeadLengthRatio );
     299                 :            : 
     300                 :            :     //! Writes configuration to a new DOM element
     301                 :            :     QDomElement writeXml( QDomDocument &doc ) const;
     302                 :            :     //! Reads configuration from the given DOM element
     303                 :            :     void readXml( const QDomElement &elem );
     304                 :            : 
     305                 :            :   private:
     306                 :          0 :     QgsMeshRendererVectorArrowSettings::ArrowScalingMethod mShaftLengthMethod = QgsMeshRendererVectorArrowSettings::ArrowScalingMethod::MinMax;
     307                 :          0 :     double mMinShaftLength = 0.8; //in millimeters
     308                 :          0 :     double mMaxShaftLength = 10; //in millimeters
     309                 :          0 :     double mScaleFactor = 10;
     310                 :          0 :     double mFixedShaftLength = 20; //in millimeters
     311                 :          0 :     double mArrowHeadWidthRatio = 0.15;
     312                 :          0 :     double mArrowHeadLengthRatio = 0.40;
     313                 :            : };
     314                 :            : 
     315                 :            : /**
     316                 :            :  * \ingroup core
     317                 :            :  *
     318                 :            :  * \brief Represents a streamline renderer settings for vector datasets displayed by streamlines
     319                 :            :  *
     320                 :            :  * \note The API is considered EXPERIMENTAL and can be changed without a notice
     321                 :            :  *
     322                 :            :  * \since QGIS 3.12
     323                 :            :  */
     324                 :          0 : class CORE_EXPORT QgsMeshRendererVectorStreamlineSettings
     325                 :            : {
     326                 :            :   public:
     327                 :            :     //! Method used to define start points that are used to draw streamlines
     328                 :            :     enum SeedingStartPointsMethod
     329                 :            :     {
     330                 :            : 
     331                 :            :       /**
     332                 :            :        * Seeds start points on the vertices mesh or user regular grid
     333                 :            :        */
     334                 :            :       MeshGridded = 0,
     335                 :            : 
     336                 :            :       /**
     337                 :            :        * Seeds start points randomly on the mesh
     338                 :            :        */
     339                 :            :       Random
     340                 :            :     };
     341                 :            : 
     342                 :            :     //! Returns the method used for seeding start points of strealines
     343                 :            :     SeedingStartPointsMethod seedingMethod() const;
     344                 :            :     //! Sets the method used for seeding start points of strealines
     345                 :            :     void setSeedingMethod( const SeedingStartPointsMethod &seedingMethod );
     346                 :            :     //! Returns the density used for seeding start points
     347                 :            :     double seedingDensity() const;
     348                 :            :     //! Sets the density used for seeding start points
     349                 :            :     void setSeedingDensity( double seedingDensity );
     350                 :            :     //! Reads configuration from the given DOM element
     351                 :            :     void readXml( const QDomElement &elem );
     352                 :            :     //! Writes configuration to a new DOM element
     353                 :            :     QDomElement writeXml( QDomDocument &doc ) const;
     354                 :            : 
     355                 :            :   private:
     356                 :            : 
     357                 :          0 :     QgsMeshRendererVectorStreamlineSettings::SeedingStartPointsMethod mSeedingMethod = MeshGridded;
     358                 :          0 :     double mSeedingDensity = 0.15;
     359                 :            : };
     360                 :            : 
     361                 :            : /**
     362                 :            :  * \ingroup core
     363                 :            :  *
     364                 :            :  * \brief Represents a trace renderer settings for vector datasets displayed by particle traces
     365                 :            :  *
     366                 :            :  * \note The API is considered EXPERIMENTAL and can be changed without a notice
     367                 :            :  *
     368                 :            :  * \since QGIS 3.12
     369                 :            :  */
     370                 :          0 : class CORE_EXPORT QgsMeshRendererVectorTracesSettings
     371                 :            : {
     372                 :            :   public:
     373                 :            : 
     374                 :            :     //! Returns the maximum tail length
     375                 :            :     double maximumTailLength() const;
     376                 :            :     //! Sets the maximums tail length
     377                 :            :     void setMaximumTailLength( double maximumTailLength );
     378                 :            :     //! Returns particles count
     379                 :            :     int particlesCount() const;
     380                 :            :     //! Sets particles count
     381                 :            :     void setParticlesCount( int value );
     382                 :            :     //! Returns the maximum tail length unit
     383                 :            :     QgsUnitTypes::RenderUnit maximumTailLengthUnit() const;
     384                 :            :     //! Sets the maximum tail length unit
     385                 :            :     void setMaximumTailLengthUnit( const QgsUnitTypes::RenderUnit &maximumTailLengthUnit );
     386                 :            : 
     387                 :            :     //! Reads configuration from the given DOM element
     388                 :            :     void readXml( const QDomElement &elem );
     389                 :            :     //! Writes configuration to a new DOM element
     390                 :            :     QDomElement writeXml( QDomDocument &doc ) const;
     391                 :            : 
     392                 :            : 
     393                 :            : 
     394                 :            :   private:
     395                 :          0 :     int mParticlesCount = 1000;
     396                 :          0 :     double mMaximumTailLength = 100;
     397                 :          0 :     QgsUnitTypes::RenderUnit mMaximumTailLengthUnit = QgsUnitTypes::RenderMillimeters;
     398                 :            : 
     399                 :            : };
     400                 :            : 
     401                 :            : /**
     402                 :            :  * \ingroup core
     403                 :            :  *
     404                 :            :  * \brief Represents a renderer settings for vector datasets
     405                 :            :  *
     406                 :            :  * \note The API is considered EXPERIMENTAL and can be changed without a notice
     407                 :            :  *
     408                 :            :  * \since QGIS 3.2
     409                 :            :  */
     410                 :          0 : class CORE_EXPORT QgsMeshRendererVectorSettings
     411                 :            : {
     412                 :            :   public:
     413                 :            : 
     414                 :            :     /**
     415                 :            :      * Defines the symbology of vector rendering
     416                 :            :      * \since QGIS 3.12
     417                 :            :      */
     418                 :            :     enum Symbology
     419                 :            :     {
     420                 :            :       //! Displaying vector dataset with arrows
     421                 :            :       Arrows = 0,
     422                 :            :       //! Displaying vector dataset with streamlines
     423                 :            :       Streamlines,
     424                 :            :       //! Displaying vector dataset with particle traces
     425                 :            :       Traces
     426                 :            :     };
     427                 :            : 
     428                 :            :     //! Returns line width of the arrow (in millimeters)
     429                 :            :     double lineWidth() const;
     430                 :            :     //! Sets line width of the arrow in pixels (in millimeters)
     431                 :            :     void setLineWidth( double lineWidth );
     432                 :            : 
     433                 :            :     //! Returns color used for drawing arrows
     434                 :            :     QColor color() const;
     435                 :            :     //! Sets color used for drawing arrows
     436                 :            :     void setColor( const QColor &color );
     437                 :            : 
     438                 :            :     /**
     439                 :            :      * Returns filter value for vector magnitudes.
     440                 :            :      *
     441                 :            :      * If magnitude of the vector is lower than this value, the vector is not
     442                 :            :      * drawn. -1 represents that filtering is not active.
     443                 :            :      */
     444                 :            :     double filterMin() const;
     445                 :            : 
     446                 :            :     /**
     447                 :            :      * Sets filter value for vector magnitudes.
     448                 :            :      * \see filterMin()
     449                 :            :      */
     450                 :            :     void setFilterMin( double filterMin );
     451                 :            : 
     452                 :            :     /**
     453                 :            :      * Returns filter value for vector magnitudes.
     454                 :            :      *
     455                 :            :      * If magnitude of the vector is higher than this value, the vector is not
     456                 :            :      * drawn. -1 represents that filtering is not active.
     457                 :            :      */
     458                 :            :     double filterMax() const;
     459                 :            : 
     460                 :            :     /**
     461                 :            :      * Sets filter value for vector magnitudes.
     462                 :            :      * \see filterMax()
     463                 :            :      */
     464                 :            :     void setFilterMax( double filterMax );
     465                 :            : 
     466                 :            :     //! Returns whether vectors are drawn on user-defined grid
     467                 :            :     bool isOnUserDefinedGrid() const;
     468                 :            :     //! Toggles drawing of vectors on user defined grid
     469                 :            :     void setOnUserDefinedGrid( bool enabled );
     470                 :            :     //! Returns width in pixels of user grid cell
     471                 :            :     int userGridCellWidth() const;
     472                 :            :     //! Sets width of user grid cell (in pixels)
     473                 :            :     void setUserGridCellWidth( int width );
     474                 :            :     //! Returns height in pixels of user grid cell
     475                 :            :     int userGridCellHeight() const;
     476                 :            :     //! Sets height of user grid cell (in pixels)
     477                 :            :     void setUserGridCellHeight( int height );
     478                 :            : 
     479                 :            :     /**
     480                 :            :     * Returns the displaying method used to render vector datasets
     481                 :            :     * \since QGIS 3.12
     482                 :            :     */
     483                 :            :     Symbology symbology() const;
     484                 :            : 
     485                 :            :     /**
     486                 :            :      * Sets the displaying method used to render vector datasets
     487                 :            :      * \since QGIS 3.12
     488                 :            :      */
     489                 :            :     void setSymbology( const Symbology &symbology );
     490                 :            : 
     491                 :            :     /**
     492                 :            :      * Returns the coloring method used to render vector datasets
     493                 :            :      * \since QGIS 3.14
     494                 :            :      */
     495                 :            :     QgsInterpolatedLineColor::ColoringMethod coloringMethod() const;
     496                 :            : 
     497                 :            :     /**
     498                 :            :      * Sets the coloring method used to render vector datasets
     499                 :            :      * \since QGIS 3.14
     500                 :            :      */
     501                 :            :     void setColoringMethod( const QgsInterpolatedLineColor::ColoringMethod &coloringMethod );
     502                 :            : 
     503                 :            :     /**
     504                 :            :      * Sets the color ramp shader used to render vector datasets
     505                 :            :      * \since QGIS 3.14
     506                 :            :      */
     507                 :            :     QgsColorRampShader colorRampShader() const;
     508                 :            : 
     509                 :            :     /**
     510                 :            :      * Returns the color ramp shader used to render vector datasets
     511                 :            :      * \since QGIS 3.14
     512                 :            :      */
     513                 :            :     void setColorRampShader( const QgsColorRampShader &colorRampShader );
     514                 :            : 
     515                 :            :     /**
     516                 :            :      * Returns the stroke coloring used to render vector datasets
     517                 :            :      * \since QGIS 3.14
     518                 :            :      */
     519                 :            :     QgsInterpolatedLineColor vectorStrokeColoring() const;
     520                 :            : 
     521                 :            :     /**
     522                 :            :     * Returns settings for vector rendered with arrows
     523                 :            :     * \since QGIS 3.12
     524                 :            :     */
     525                 :            :     QgsMeshRendererVectorArrowSettings arrowSettings() const;
     526                 :            : 
     527                 :            :     /**
     528                 :            :      * Sets settings for vector rendered with arrows
     529                 :            :      * \since QGIS 3.12
     530                 :            :      */
     531                 :            :     void setArrowsSettings( const QgsMeshRendererVectorArrowSettings &arrowSettings );
     532                 :            : 
     533                 :            :     /**
     534                 :            :      * Returns settings for vector rendered with streamlines
     535                 :            :      * \since QGIS 3.12
     536                 :            :      */
     537                 :            :     QgsMeshRendererVectorStreamlineSettings streamLinesSettings() const;
     538                 :            : 
     539                 :            :     /**
     540                 :            :      * Sets settings for vector rendered with streamlines
     541                 :            :      * \since QGIS 3.12
     542                 :            :      */
     543                 :            :     void setStreamLinesSettings( const QgsMeshRendererVectorStreamlineSettings &streamLinesSettings );
     544                 :            : 
     545                 :            :     /**
     546                 :            :      * Returns settings for vector rendered with traces
     547                 :            :      * \since QGIS 3.12
     548                 :            :      */
     549                 :            :     QgsMeshRendererVectorTracesSettings tracesSettings() const;
     550                 :            : 
     551                 :            :     /**
     552                 :            :      * Sets settings for vector rendered with traces
     553                 :            :      * \since QGIS 3.12
     554                 :            :      */
     555                 :            :     void setTracesSettings( const QgsMeshRendererVectorTracesSettings &tracesSettings );
     556                 :            : 
     557                 :            :     //! Writes configuration to a new DOM element
     558                 :            :     QDomElement writeXml( QDomDocument &doc, const QgsReadWriteContext &context = QgsReadWriteContext() ) const;
     559                 :            :     //! Reads configuration from the given DOM element
     560                 :            :     void readXml( const QDomElement &elem, const QgsReadWriteContext &context = QgsReadWriteContext() );
     561                 :            : 
     562                 :            :   private:
     563                 :            : 
     564                 :          0 :     Symbology mDisplayingMethod = Arrows;
     565                 :            : 
     566                 :          0 :     double mLineWidth = DEFAULT_LINE_WIDTH; //in millimeters
     567                 :            :     QgsColorRampShader mColorRampShader;
     568                 :          0 :     QColor mColor = Qt::black;
     569                 :          0 :     QgsInterpolatedLineColor::ColoringMethod mColoringMethod = QgsInterpolatedLineColor::SingleColor;
     570                 :          0 :     double mFilterMin = -1; //disabled
     571                 :          0 :     double mFilterMax = -1; //disabled
     572                 :          0 :     int mUserGridCellWidth = 10; // in pixels
     573                 :          0 :     int mUserGridCellHeight = 10; // in pixels
     574                 :          0 :     bool mOnUserDefinedGrid = false;
     575                 :            : 
     576                 :            :     QgsMeshRendererVectorArrowSettings mArrowsSettings;
     577                 :            :     QgsMeshRendererVectorStreamlineSettings mStreamLinesSettings;
     578                 :            :     QgsMeshRendererVectorTracesSettings mTracesSettings;
     579                 :            : };
     580                 :            : 
     581                 :            : /**
     582                 :            :  * \ingroup core
     583                 :            :  *
     584                 :            :  * \brief Represents all mesh renderer settings
     585                 :            :  *
     586                 :            :  * \note The API is considered EXPERIMENTAL and can be changed without a notice
     587                 :            :  *
     588                 :            :  * \since QGIS 3.4
     589                 :            :  */
     590                 :          0 : class CORE_EXPORT QgsMeshRendererSettings
     591                 :            : {
     592                 :            :   public:
     593                 :            : 
     594                 :            :     /**
     595                 :            :      * Constructs renderer with default single layer averaging method
     596                 :            :      */
     597                 :            :     QgsMeshRendererSettings();
     598                 :            :     //! Destructor
     599                 :            :     ~QgsMeshRendererSettings();
     600                 :            : 
     601                 :            :     //! Returns native mesh renderer settings
     602                 :          0 :     QgsMeshRendererMeshSettings nativeMeshSettings() const { return mRendererNativeMeshSettings; }
     603                 :            :     //! Sets new native mesh  renderer settings, triggers repaint
     604                 :          0 :     void setNativeMeshSettings( const QgsMeshRendererMeshSettings &settings ) { mRendererNativeMeshSettings = settings; }
     605                 :            : 
     606                 :            :     //! Returns triangular mesh renderer settings
     607                 :          0 :     QgsMeshRendererMeshSettings triangularMeshSettings() const { return mRendererTriangularMeshSettings; }
     608                 :            :     //! Sets new triangular mesh renderer settings
     609                 :            :     void setTriangularMeshSettings( const QgsMeshRendererMeshSettings &settings ) { mRendererTriangularMeshSettings = settings; }
     610                 :            : 
     611                 :            :     /**
     612                 :            :      * Returns edge mesh renderer settings
     613                 :            :      * \since QGIS 3.14
     614                 :            :      */
     615                 :          0 :     QgsMeshRendererMeshSettings edgeMeshSettings() const { return mRendererEdgeMeshSettings; }
     616                 :            : 
     617                 :            :     /**
     618                 :            :      * Sets new edge mesh renderer settings
     619                 :            :      * \since QGIS 3.14
     620                 :            :      */
     621                 :            :     void setEdgeMeshSettings( const QgsMeshRendererMeshSettings &settings ) { mRendererEdgeMeshSettings = settings; }
     622                 :            : 
     623                 :            :     //! Returns renderer settings
     624                 :          0 :     QgsMeshRendererScalarSettings scalarSettings( int groupIndex ) const { return mRendererScalarSettings.value( groupIndex ); }
     625                 :            :     //! Sets new renderer settings
     626                 :          0 :     void setScalarSettings( int groupIndex, const QgsMeshRendererScalarSettings &settings ) { mRendererScalarSettings[groupIndex] = settings; }
     627                 :            : 
     628                 :            :     //! Returns renderer settings
     629                 :          0 :     QgsMeshRendererVectorSettings vectorSettings( int groupIndex ) const { return mRendererVectorSettings.value( groupIndex ); }
     630                 :            :     //! Sets new renderer settings
     631                 :          0 :     void setVectorSettings( int groupIndex, const QgsMeshRendererVectorSettings &settings ) { mRendererVectorSettings[groupIndex] = settings; }
     632                 :            : 
     633                 :            :     /**
     634                 :            :      * Returns averaging method for conversion of 3d stacked mesh data to 2d data
     635                 :            :      *
     636                 :            :      * Caller does not own the resulting pointer
     637                 :            :      */
     638                 :            :     QgsMesh3dAveragingMethod *averagingMethod() const;
     639                 :            : 
     640                 :            :     /**
     641                 :            :      * Sets averaging method for conversion of 3d stacked mesh data to 2d data
     642                 :            :      *
     643                 :            :      * Ownership of the method is not transferred.
     644                 :            :      */
     645                 :            :     void setAveragingMethod( QgsMesh3dAveragingMethod *method );
     646                 :            : 
     647                 :            :     //! Writes configuration to a new DOM element
     648                 :            :     QDomElement writeXml( QDomDocument &doc, const QgsReadWriteContext &context = QgsReadWriteContext() ) const;
     649                 :            :     //! Reads configuration from the given DOM element
     650                 :            :     void readXml( const QDomElement &elem, const QgsReadWriteContext &context = QgsReadWriteContext() );
     651                 :            : 
     652                 :            :     /**
     653                 :            :      * Returns the active scalar dataset group
     654                 :            :      * \since QGIS 3.14
     655                 :            :      */
     656                 :            :     int activeScalarDatasetGroup() const;
     657                 :            : 
     658                 :            :     /**
     659                 :            :      * Sets the active scalar dataset group
     660                 :            :      * \since QGIS 3.14
     661                 :            :      */
     662                 :            :     void setActiveScalarDatasetGroup( int activeScalarDatasetGroup );
     663                 :            : 
     664                 :            :     /**
     665                 :            :      * Returns the active vector dataset group
     666                 :            :      * \since QGIS 3.14
     667                 :            :      */
     668                 :            :     int activeVectorDatasetGroup() const;
     669                 :            : 
     670                 :            :     /**
     671                 :            :      * Sets the active vector dataset group
     672                 :            :      * \since QGIS 3.14
     673                 :            :      */
     674                 :            :     void setActiveVectorDatasetGroup( int activeVectorDatasetGroup );
     675                 :            : 
     676                 :            :   private:
     677                 :            :     QgsMeshRendererMeshSettings mRendererNativeMeshSettings;
     678                 :            :     QgsMeshRendererMeshSettings mRendererTriangularMeshSettings;
     679                 :            :     QgsMeshRendererMeshSettings mRendererEdgeMeshSettings;
     680                 :            : 
     681                 :            :     QHash<int, QgsMeshRendererScalarSettings> mRendererScalarSettings;  //!< Per-group scalar settings
     682                 :            :     QHash<int, QgsMeshRendererVectorSettings> mRendererVectorSettings;  //!< Per-group vector settings
     683                 :            : 
     684                 :            :     //! index of active scalar dataset group
     685                 :            :     int mActiveScalarDatasetGroup = -1;
     686                 :            : 
     687                 :            :     //! index of active vector dataset group
     688                 :            :     int mActiveVectorDatasetGroup = -1;
     689                 :            : 
     690                 :            :     //! Averaging method to get 2D datasets from 3D stacked mesh datasets
     691                 :            :     std::shared_ptr<QgsMesh3dAveragingMethod> mAveragingMethod;
     692                 :            : };
     693                 :            : 
     694                 :            : #endif //QGSMESHRENDERERSETTINGS_H

Generated by: LCOV version 1.14