QGIS API Documentation 3.41.0-Master (cea29feecf2)
Loading...
Searching...
No Matches
qgsphongtexturedmaterialsettings.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsphongtexturedmaterialsettings.h
3 --------------------------------------
4 Date : August 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 QGSPHONGTEXTUREDMATERIALSETTINGS_H
17#define QGSPHONGTEXTUREDMATERIALSETTINGS_H
18
19#include "qgis_3d.h"
21#include "qgsmaterial.h"
22
23#include <QColor>
24
25class QDomElement;
26
37{
38 public:
40
41 QString type() const override;
42
46 static bool supportsTechnique( QgsMaterialSettingsRenderingTechnique technique );
47
52
53 QgsPhongTexturedMaterialSettings *clone() const override SIP_FACTORY;
54 bool equals( const QgsAbstractMaterialSettings *other ) const override;
55
57 QColor ambient() const { return mAmbient; }
59 QColor specular() const { return mSpecular; }
61 double shininess() const { return mShininess; }
62
63 QMap<QString, QString> toExportParameters() const override;
64
70 QString diffuseTexturePath() const { return mDiffuseTexturePath; }
71
77 double textureScale() const { return mTextureScale; }
78
83 bool requiresTextureCoordinates() const { return !mDiffuseTexturePath.isEmpty(); }
84
88 double textureRotation() const;
89
94 double opacity() const { return mOpacity; }
95
97 void setAmbient( const QColor &ambient ) { mAmbient = ambient; }
98
100 void setSpecular( const QColor &specular ) { mSpecular = specular; }
102 void setShininess( double shininess ) { mShininess = shininess; }
103
108 void setDiffuseTexturePath( const QString &path ) { mDiffuseTexturePath = path; }
109
115 void setTextureScale( double scale ) { mTextureScale = scale; }
116
118 void setTextureRotation( double rotation ) { mTextureRotation = rotation; }
119
124 void setOpacity( double opacity ) { mOpacity = opacity; }
125
126 void readXml( const QDomElement &elem, const QgsReadWriteContext &context ) override;
127 void writeXml( QDomElement &elem, const QgsReadWriteContext &context ) const override;
128#ifndef SIP_RUN
130 void addParametersToEffect( Qt3DRender::QEffect *effect, const QgsMaterialContext &materialContext ) const override;
131#endif
132
133 // TODO c++20 - replace with = default
135 {
136 return mAmbient == other.mAmbient && mSpecular == other.mSpecular && mShininess == other.mShininess && mOpacity == other.mOpacity && mDiffuseTexturePath == other.mDiffuseTexturePath && mTextureScale == other.mTextureScale && mTextureRotation == other.mTextureRotation && dataDefinedProperties() == other.dataDefinedProperties();
137 }
138
139 private:
140 QColor mAmbient { QColor::fromRgbF( 0.1f, 0.1f, 0.1f, 1.0f ) };
141 QColor mSpecular { QColor::fromRgbF( 1.0f, 1.0f, 1.0f, 1.0f ) };
142 double mShininess = 0.0;
143 double mOpacity = 1.0;
144 QString mDiffuseTexturePath;
145 double mTextureScale { 1.0f };
146 double mTextureRotation { 0.0f };
147};
148
149
150#endif // QGSPHONGTEXTUREDMATERIALSETTINGS_H
virtual void writeXml(QDomElement &element, const QgsReadWriteContext &) const
Writes settings to a DOM element.
virtual QMap< QString, QString > toExportParameters() const =0
Returns the parameters to be exported to .mtl file.
virtual void readXml(const QDomElement &element, const QgsReadWriteContext &)
Reads settings from a DOM element.
virtual void addParametersToEffect(Qt3DRender::QEffect *effect, const QgsMaterialContext &materialContext) const =0
Adds parameters from the material to a destination effect.
virtual QString type() const =0
Returns the unique type name for the material.
virtual QgsMaterial * toMaterial(QgsMaterialSettingsRenderingTechnique technique, const QgsMaterialContext &context) const =0
Creates a new QgsMaterial object representing the material settings.
QgsPropertyCollection dataDefinedProperties() const
Returns the symbol material property collection, used for data defined overrides.
void setShininess(double shininess)
Sets shininess of the surface.
bool requiresTextureCoordinates() const
Returns true if the material requires texture coordinates to be generated during triangulation....
void setTextureRotation(double rotation)
Sets the texture rotation in degrees.
void setSpecular(const QColor &specular)
Sets specular color component.
void setDiffuseTexturePath(const QString &path)
Sets the path of the diffuse texture.
QString diffuseTexturePath() const
Returns the diffuse texture path.
QColor specular() const
Returns specular color component.
void setTextureScale(double scale)
Sets the texture scale The texture scale changes the size of the displayed texture in the 3D scene If...
void setAmbient(const QColor &ambient)
Sets ambient color component.
double shininess() const
Returns shininess of the surface.
double opacity() const
Returns the opacity of the surface.
void setOpacity(double opacity)
Sets opacity of the surface.
bool operator==(const QgsPhongTexturedMaterialSettings &other) const
double textureScale() const
Returns the texture scale The texture scale changes the size of the displayed texture in the 3D scene...
The class is used as a container of context for various read/write operations on other objects.
QgsMaterialSettingsRenderingTechnique
Material rendering techniques 3.
#define SIP_FACTORY
Definition qgis_sip.h:76