QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
qgsphongmaterialsettings.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsphongmaterialsettings.h
3  --------------------------------------
4  Date : July 2017
5  Copyright : (C) 2017 by Martin Dobias
6  Email : wonder dot sk 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 QGSPHONGMATERIALSETTINGS_H
17 #define QGSPHONGMATERIALSETTINGS_H
18 
19 #include "qgis_3d.h"
21 #include "qgspropertycollection.h"
22 
23 #include <QColor>
24 
25 #ifndef SIP_RUN
26 namespace Qt3DRender
27 {
28  class QGeometry;
29 }
30 #endif //SIP_RUN
31 
32 class QDomElement;
33 
45 {
46  public:
47 
51  QgsPhongMaterialSettings() = default;
52 
53  QString type() const override;
54 
58  static bool supportsTechnique( QgsMaterialSettingsRenderingTechnique technique );
59 
64 
65  QgsPhongMaterialSettings *clone() const override SIP_FACTORY;
66 
68  QColor ambient() const { return mAmbient; }
70  QColor diffuse() const { return mDiffuse; }
72  QColor specular() const { return mSpecular; }
74  float shininess() const { return mShininess; }
75 
80  float opacity() const { return mOpacity; }
81 
82  QMap<QString, QString> toExportParameters() const override;
83 
85  void setAmbient( const QColor &ambient ) { mAmbient = ambient; }
87  void setDiffuse( const QColor &diffuse ) { mDiffuse = diffuse; }
89  void setSpecular( const QColor &specular ) { mSpecular = specular; }
91  void setShininess( float shininess ) { mShininess = shininess; }
92 
97  void setOpacity( float opacity ) { mOpacity = opacity; }
98 
99 
100 
101  void readXml( const QDomElement &elem, const QgsReadWriteContext &context ) override;
102  void writeXml( QDomElement &elem, const QgsReadWriteContext &context ) const override;
103 
104 #ifndef SIP_RUN
105  Qt3DRender::QMaterial *toMaterial( QgsMaterialSettingsRenderingTechnique technique, const QgsMaterialContext &context ) const override SIP_FACTORY;
106  void addParametersToEffect( Qt3DRender::QEffect *effect ) const override;
107 
108  QByteArray dataDefinedVertexColorsAsByte( const QgsExpressionContext &expressionContext ) const override;
109  int dataDefinedByteStride() const override;
110  void applyDataDefinedToGeometry( Qt3DRender::QGeometry *geometry, int vertexCount, const QByteArray &data ) const override;
111 #endif
112 
113  // TODO c++20 - replace with = default
114  bool operator==( const QgsPhongMaterialSettings &other ) const
115  {
116  return mAmbient == other.mAmbient &&
117  mDiffuse == other.mDiffuse &&
118  mSpecular == other.mSpecular &&
119  mShininess == other.mShininess;
120  }
121 
122  private:
123  QColor mAmbient{ QColor::fromRgbF( 0.1f, 0.1f, 0.1f, 1.0f ) };
124  QColor mDiffuse{ QColor::fromRgbF( 0.7f, 0.7f, 0.7f, 1.0f ) };
125  QColor mSpecular{ QColor::fromRgbF( 1.0f, 1.0f, 1.0f, 1.0f ) };
126  float mShininess = 0.0f;
127  float mOpacity = 1.0f;
128 
130  Qt3DRender::QMaterial *dataDefinedMaterial() const;
131 };
132 
133 
134 #endif // QGSPHONGMATERIALSETTINGS_H
QgsPhongMaterialSettings::ambient
QColor ambient() const
Returns ambient color component.
Definition: qgsphongmaterialsettings.h:68
QgsExpressionContext
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Definition: qgsexpressioncontext.h:406
QgsAbstractMaterialSettings::type
virtual QString type() const =0
Returns the unique type name for the material.
QgsPhongMaterialSettings::setOpacity
void setOpacity(float opacity)
Sets shininess of the surface.
Definition: qgsphongmaterialsettings.h:97
QgsPhongMaterialSettings::opacity
float opacity() const
Returns the opacity of the surface.
Definition: qgsphongmaterialsettings.h:80
QgsPhongMaterialSettings::diffuse
QColor diffuse() const
Returns diffuse color component.
Definition: qgsphongmaterialsettings.h:70
QgsPhongMaterialSettings::specular
QColor specular() const
Returns specular color component.
Definition: qgsphongmaterialsettings.h:72
QgsAbstractMaterialSettings::applyDataDefinedToGeometry
virtual void applyDataDefinedToGeometry(Qt3DRender::QGeometry *geometry, int vertexCount, const QByteArray &dataDefinedBytes) const
Applies the data defined bytes, dataDefinedBytes, on the geometry by filling a specific vertex buffer...
Definition: qgsabstractmaterialsettings.cpp:54
QgsReadWriteContext
The class is used as a container of context for various read/write operations on other objects.
Definition: qgsreadwritecontext.h:34
QgsAbstractMaterialSettings::toExportParameters
virtual QMap< QString, QString > toExportParameters() const =0
Returns the parameters to be exported to .mtl file.
QgsPhongMaterialSettings::setSpecular
void setSpecular(const QColor &specular)
Sets specular color component.
Definition: qgsphongmaterialsettings.h:89
SIP_FACTORY
#define SIP_FACTORY
Definition: qgis_sip.h:76
QgsAbstractMaterialSettings::dataDefinedVertexColorsAsByte
virtual QByteArray dataDefinedVertexColorsAsByte(const QgsExpressionContext &expressionContext) const
Returns byte array corresponding to the data defined colors depending of the expressionContext,...
Definition: qgsabstractmaterialsettings.cpp:48
QgsMaterialContext
Context settings for a material.
Definition: qgsabstractmaterialsettings.h:64
QgsPhongMaterialSettings
Basic shading material used for rendering based on the Phong shading model with three color component...
Definition: qgsphongmaterialsettings.h:44
qgsabstractmaterialsettings.h
QgsAbstractMaterialSettings
Abstract base class for material settings.
Definition: qgsabstractmaterialsettings.h:114
QgsPhongMaterialSettings::operator==
bool operator==(const QgsPhongMaterialSettings &other) const
Definition: qgsphongmaterialsettings.h:114
QgsPhongMaterialSettings::setShininess
void setShininess(float shininess)
Sets shininess of the surface.
Definition: qgsphongmaterialsettings.h:91
Qt3DRender
Definition: qgs3dmapscene.h:28
QgsAbstractMaterialSettings::dataDefinedByteStride
virtual int dataDefinedByteStride() const
Returns byte stride of the data defined colors,used to fill the vertex colors data defined buffer for...
Definition: qgsabstractmaterialsettings.h:234
QgsAbstractMaterialSettings::addParametersToEffect
virtual void addParametersToEffect(Qt3DRender::QEffect *effect) const =0
Adds parameters from the material to a destination effect.
QgsPhongMaterialSettings::setDiffuse
void setDiffuse(const QColor &diffuse)
Sets diffuse color component.
Definition: qgsphongmaterialsettings.h:87
QgsAbstractMaterialSettings::writeXml
virtual void writeXml(QDomElement &element, const QgsReadWriteContext &) const
Writes settings to a DOM element.
Definition: qgsabstractmaterialsettings.cpp:27
QgsMaterialSettingsRenderingTechnique
QgsMaterialSettingsRenderingTechnique
Material rendering techniques.
Definition: qgsabstractmaterialsettings.h:43
QgsAbstractMaterialSettings::toMaterial
virtual Qt3DRender::QMaterial * toMaterial(QgsMaterialSettingsRenderingTechnique technique, const QgsMaterialContext &context) const =0
Creates a new QMaterial object representing the material settings.
qgspropertycollection.h
QgsPhongMaterialSettings::setAmbient
void setAmbient(const QColor &ambient)
Sets ambient color component.
Definition: qgsphongmaterialsettings.h:85
QgsPhongMaterialSettings::shininess
float shininess() const
Returns shininess of the surface.
Definition: qgsphongmaterialsettings.h:74
QgsAbstractMaterialSettings::readXml
virtual void readXml(const QDomElement &element, const QgsReadWriteContext &)
Reads settings from a DOM element.
Definition: qgsabstractmaterialsettings.cpp:20
QgsAbstractMaterialSettings::clone
virtual QgsAbstractMaterialSettings * clone() const =0
Clones the material settings.