QGIS API Documentation 4.1.0-Master (d6fb7a379fb)
Loading...
Searching...
No Matches
qgsmetalroughmaterialsettings.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsmetalroughmaterialsettings.h
3 --------------------------------------
4 Date : December 2023
5 Copyright : (C) 2023 by Nyall Dawson
6 Email : nyall dot dawson at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSMETALROUGHMATERIALSETTINGS_H
17#define QGSMETALROUGHMATERIALSETTINGS_H
18
19#include "qgis_core.h"
21
22#include <QColor>
23
24class QDomElement;
25
36{
37 public:
39
40 QString type() const override;
41
46
51
53 bool equals( const QgsAbstractMaterialSettings *other ) const override;
54
60 QColor baseColor() const { return mBaseColor; }
61
67 double metalness() const { return mMetalness; }
68
74 double roughness() const { return mRoughness; }
75
82 QColor emissionColor() const { return mEmissiveColor; }
83
95 double emissionFactor() const { return mEmissionFactor; }
96
103 double opacity() const { return mOpacity; }
104
115 QColor averageColor() const override;
116
122 void setBaseColor( const QColor &color ) { mBaseColor = color; }
123
129 void setMetalness( double metalness ) { mMetalness = metalness; }
130
136 void setRoughness( double roughness ) { mRoughness = roughness; }
137
144 void setOpacity( double opacity ) { mOpacity = opacity; }
145
152 void setEmissionColor( const QColor &color ) { mEmissiveColor = color; }
153
165 void setEmissionFactor( double factor ) { mEmissionFactor = factor; }
166
179 void setColorsFromBase( const QColor &baseColor ) override;
180
181 void readXml( const QDomElement &elem, const QgsReadWriteContext &context ) override;
182 void writeXml( QDomElement &elem, const QgsReadWriteContext &context ) const override;
183
184 bool operator==( const QgsMetalRoughMaterialSettings &other ) const
185 {
186 return mBaseColor == other.mBaseColor
187 && mEmissiveColor == other.mEmissiveColor
188 && qgsDoubleNear( mMetalness, other.mMetalness )
189 && qgsDoubleNear( mRoughness, other.mRoughness )
190 && qgsDoubleNear( mOpacity, other.mOpacity )
191 && qgsDoubleNear( mEmissionFactor, other.mEmissionFactor )
193 }
194
195 private:
196 QColor mBaseColor { QColor::fromRgbF( 0.5f, 0.5f, 0.5f, 1.0f ) };
197 QColor mEmissiveColor;
198 double mMetalness = 0.0;
199 double mRoughness = 0.5;
200 double mEmissionFactor = 1.0;
201 double mOpacity = 1.0;
202};
203
204
205#endif // QGSMETALROUGHMATERIALSETTINGS_H
MaterialRenderingTechnique
Material rendering techniques.
Definition qgis.h:4342
Abstract base class for material settings.
virtual void writeXml(QDomElement &element, const QgsReadWriteContext &) const
Writes settings to a DOM element.
virtual void readXml(const QDomElement &element, const QgsReadWriteContext &)
Reads settings from a DOM element.
virtual QColor averageColor() const =0
Returns an approximate color representing the blended material color.
virtual QString type() const =0
Returns the unique type name for the material.
virtual void setColorsFromBase(const QColor &baseColor)=0
Decomposes a base color into the material's color components, and sets the material's colors accordin...
QgsPropertyCollection dataDefinedProperties() const
Returns the symbol material property collection, used for data defined overrides.
double opacity() const
Returns the opacity of the surface.
static QgsAbstractMaterialSettings * create()
Returns a new instance of QgsMetalRoughMaterialSettings.
bool operator==(const QgsMetalRoughMaterialSettings &other) const
double roughness() const
Returns the material's roughness, as a value between 0 and 1.
double metalness() const
Returns the material's metalness, as a value between 0 and 1.
static bool supportsTechnique(Qgis::MaterialRenderingTechnique technique)
Returns true if the specified technique is supported by the metal rough material.
void setEmissionFactor(double factor)
Sets the emission factor, which dictates the strength of the emission effect.
QgsMetalRoughMaterialSettings * clone() const override
Clones the material settings.
void setRoughness(double roughness)
Sets the material's roughness, as a value between 0 and 1.
void setEmissionColor(const QColor &color)
Sets the material's emissive color.
bool equals(const QgsAbstractMaterialSettings *other) const override
Returns true if this settings exactly matches an other settings.
QColor emissionColor() const
Returns the material's emissive color.
void setMetalness(double metalness)
Sets the material's metalness, as a value between 0 and 1.
void setBaseColor(const QColor &color)
Sets the base material color.
void setOpacity(double opacity)
Sets the opacity of the surface.
double emissionFactor() const
Returns the emission factor, which dictates the strength of the emission effect.
QColor baseColor() const
Returns the base material color.
A container for the context for various read/write operations on objects.
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference).
Definition qgis.h:7222
#define SIP_FACTORY
Definition qgis_sip.h:83