QGIS API Documentation 4.1.0-Master (3b8ef1f72a3)
Loading...
Searching...
No Matches
qgsgoochmaterialsettings.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsgoochmaterialsettings.h
3 --------------------------------------
4 Date : July 2020
5 Copyright : (C) 2020 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 QGSGOOCHMATERIALSETTINGS_H
17#define QGSGOOCHMATERIALSETTINGS_H
18
19#include "qgis_core.h"
21
22#include <QColor>
23
24class QgsMaterial;
25class QDomElement;
26
38{
39 public:
41
42 QString type() const override;
43
48
52 static bool supportsTechnique( Qgis::MaterialRenderingTechnique technique );
53
55 bool equals( const QgsAbstractMaterialSettings *other ) const override;
56
58 QColor warm() const { return mWarm; }
59
61 QColor cool() const { return mCool; }
62
64 QColor diffuse() const { return mDiffuse; }
66 QColor specular() const { return mSpecular; }
68 double shininess() const { return mShininess; }
69
71 double alpha() const { return mAlpha; }
72
74 double beta() const { return mBeta; }
75
77 void setWarm( const QColor &warm ) { mWarm = warm; }
78
80 void setCool( const QColor &cool ) { mCool = cool; }
81
83 void setDiffuse( const QColor &diffuse ) { mDiffuse = diffuse; }
85 void setSpecular( const QColor &specular ) { mSpecular = specular; }
87 void setShininess( double shininess ) { mShininess = shininess; }
88
90 void setAlpha( double alpha ) { mAlpha = alpha; }
91
93 void setBeta( double beta ) { mBeta = beta; }
94
95 void readXml( const QDomElement &elem, const QgsReadWriteContext &context ) override;
96 void writeXml( QDomElement &elem, const QgsReadWriteContext &context ) const override;
97
98 bool operator==( const QgsGoochMaterialSettings &other ) const
99 {
100 return mDiffuse == other.mDiffuse
101 && mSpecular == other.mSpecular
102 && mWarm == other.mWarm
103 && mCool == other.mCool
104 && qgsDoubleNear( mShininess, other.mShininess )
105 && qgsDoubleNear( mAlpha, other.mAlpha )
106 && qgsDoubleNear( mBeta, other.mBeta )
108 }
109
110 private:
111 QColor mDiffuse { QColor::fromRgbF( 0.7f, 0.7f, 0.7f, 1.0f ) };
112 QColor mSpecular { QColor::fromRgbF( 1.0f, 1.0f, 1.0f, 1.0f ) };
113 QColor mWarm { QColor( 107, 0, 107 ) };
114 QColor mCool { QColor( 255, 130, 0 ) };
115 double mShininess = 100.0;
116 double mAlpha = 0.25;
117 double mBeta = 0.5;
118};
119
120
121#endif // QGSGOOCHMATERIALSETTINGS_H
Provides global constants and enumerations for use throughout the application.
Definition qgis.h:62
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 QString type() const =0
Returns the unique type name for the material.
QgsPropertyCollection dataDefinedProperties() const
Returns the symbol material property collection, used for data defined overrides.
QgsGoochMaterialSettings * clone() const override
Clones the material settings.
QColor specular() const
Returns specular color component.
double alpha() const
Returns the alpha value.
void setCool(const QColor &cool)
Sets cool color component.
void setWarm(const QColor &warm)
Sets warm color component.
QColor cool() const
Returns cool color component.
void setSpecular(const QColor &specular)
Sets specular color component.
QColor warm() const
Returns warm color component.
bool equals(const QgsAbstractMaterialSettings *other) const override
Returns true if this settings exactly matches an other settings.
QColor diffuse() const
Returns diffuse color component.
double beta() const
Returns the beta value.
bool operator==(const QgsGoochMaterialSettings &other) const
QgsGoochMaterialSettings()=default
static bool supportsTechnique(Qgis::MaterialRenderingTechnique technique)
Returns true if the specified technique is supported by the Gooch material.
void setBeta(double beta)
Sets beta value.
static QgsAbstractMaterialSettings * create()
Returns a new instance of QgsGoochMaterialSettings.
void setShininess(double shininess)
Sets shininess of the surface.
void setAlpha(double alpha)
Sets alpha value.
void setDiffuse(const QColor &diffuse)
Sets diffuse color component.
double shininess() const
Returns shininess of the surface.
Base class for all materials used within QGIS 3D views.
Definition qgsmaterial.h:40
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:7077
#define SIP_FACTORY
Definition qgis_sip.h:83