summaryrefslogtreecommitdiffstats
path: root/src/Authoring/QT3DSDM/Systems/Qt3DSDMDataTypes.h
diff options
context:
space:
mode:
authorMahmoud Badri <mahmoud.badri@qt.io>2019-04-16 13:42:13 +0300
committerMahmoud Badri <mahmoud.badri@qt.io>2019-05-02 10:19:23 +0000
commit3dc7636713c98ce2748d367f8525fcab85a6c425 (patch)
tree12411317058e10feae817e25c33f0e5e24577298 /src/Authoring/QT3DSDM/Systems/Qt3DSDMDataTypes.h
parent437593e677cd1ed85ef846a3488dc3212fdde54a (diff)
Support alpha channel initial work
In this initial work, all (almost) color properties are converted into a new type (float4) to support an alpha channel. Alpha channel option is shown in the color dialog for Layer and Scene background properties only. The following is remaining: - Scene background alpha doesn't work in the editor (works in the viewer RT1) Task-number: QT3DS-3128 Change-Id: Ib5540ebc8e2ff68709473451e4a92bf66ddb8ad2 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/Authoring/QT3DSDM/Systems/Qt3DSDMDataTypes.h')
-rw-r--r--src/Authoring/QT3DSDM/Systems/Qt3DSDMDataTypes.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/Authoring/QT3DSDM/Systems/Qt3DSDMDataTypes.h b/src/Authoring/QT3DSDM/Systems/Qt3DSDMDataTypes.h
index d8c2673e..7a7157f6 100644
--- a/src/Authoring/QT3DSDM/Systems/Qt3DSDMDataTypes.h
+++ b/src/Authoring/QT3DSDM/Systems/Qt3DSDMDataTypes.h
@@ -291,6 +291,49 @@ struct SFloat3
}
};
+struct SFloat4
+{
+ float m_Floats[4];
+
+ SFloat4(float f1 = 0, float f2 = 0, float f3 = 0, float f4 = 1)
+ {
+ m_Floats[0] = f1;
+ m_Floats[1] = f2;
+ m_Floats[2] = f3;
+ m_Floats[3] = f4;
+ }
+ SFloat4(const SFloat4 &inOther) { operator=(inOther); }
+ SFloat4 &operator=(const SFloat4 &inOther)
+ {
+ m_Floats[0] = inOther.m_Floats[0];
+ m_Floats[1] = inOther.m_Floats[1];
+ m_Floats[2] = inOther.m_Floats[2];
+ m_Floats[3] = inOther.m_Floats[3];
+ return *this;
+ }
+
+ bool operator==(const SFloat4 &other) const
+ {
+ return m_Floats[0] == other.m_Floats[0] && m_Floats[1] == other.m_Floats[1]
+ && m_Floats[2] == other.m_Floats[2] && m_Floats[3] == other.m_Floats[3];
+ }
+
+ float &operator[](size_t inIndex)
+ {
+ if (inIndex < 4)
+ return m_Floats[inIndex];
+
+ throw std::out_of_range("");
+ }
+ const float &operator[](size_t inIndex) const
+ {
+ if (inIndex < 4)
+ return m_Floats[inIndex];
+
+ throw std::out_of_range("");
+ }
+};
+
struct SLong4
{
qt3ds::QT3DSU32 m_Longs[4];
@@ -471,6 +514,11 @@ namespace foundation {
void destruct(qt3dsdm::SFloat3 &) {}
};
template <>
+ struct DestructTraits<qt3dsdm::SFloat4>
+ {
+ void destruct(qt3dsdm::SFloat4 &) {}
+ };
+ template <>
struct DestructTraits<qt3dsdm::SLong4>
{
void destruct(qt3dsdm::SLong4 &) {}
@@ -774,6 +822,7 @@ struct DataModelDataType {
Float,
Float2,
Float3,
+ Float4,
Long,
String,
Bool,