summaryrefslogtreecommitdiffstats
path: root/src/spatialaudio/qaudioroom.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/spatialaudio/qaudioroom.h')
-rw-r--r--src/spatialaudio/qaudioroom.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/spatialaudio/qaudioroom.h b/src/spatialaudio/qaudioroom.h
new file mode 100644
index 000000000..eb2b88cbc
--- /dev/null
+++ b/src/spatialaudio/qaudioroom.h
@@ -0,0 +1,107 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-3.0-only
+
+#ifndef QAUDIOROOM_H
+#define QAUDIOROOM_H
+
+#include <QtSpatialAudio/qtspatialaudioglobal.h>
+#include <QtCore/qobject.h>
+#include <QtGui/qvector3d.h>
+
+QT_BEGIN_NAMESPACE
+
+class QAudioEngine;
+class QAudioRoomPrivate;
+
+class Q_SPATIALAUDIO_EXPORT QAudioRoom : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QVector3D position READ position WRITE setPosition NOTIFY positionChanged)
+ Q_PROPERTY(QVector3D dimensions READ dimensions WRITE setDimensions NOTIFY dimensionsChanged)
+ Q_PROPERTY(QQuaternion rotation READ rotation WRITE setRotation NOTIFY rotationChanged)
+ Q_PROPERTY(float reflectionGain READ reflectionGain WRITE setReflectionGain NOTIFY reflectionGainChanged)
+ Q_PROPERTY(float reverbGain READ reverbGain WRITE setReverbGain NOTIFY reverbGainChanged)
+ Q_PROPERTY(float reverbTime READ reverbTime WRITE setReverbTime NOTIFY reverbTimeChanged)
+ Q_PROPERTY(float reverbBrightness READ reverbBrightness WRITE setReverbBrightness NOTIFY reverbBrightnessChanged)
+public:
+ explicit QAudioRoom(QAudioEngine *engine);
+ ~QAudioRoom();
+
+ enum Material {
+ Transparent,
+ AcousticCeilingTiles,
+ BrickBare,
+ BrickPainted,
+ ConcreteBlockCoarse,
+ ConcreteBlockPainted,
+ CurtainHeavy,
+ FiberGlassInsulation,
+ GlassThin,
+ GlassThick,
+ Grass,
+ LinoleumOnConcrete,
+ Marble,
+ Metal,
+ ParquetOnConcrete,
+ PlasterRough,
+ PlasterSmooth,
+ PlywoodPanel,
+ PolishedConcreteOrTile,
+ Sheetrock,
+ WaterOrIceSurface,
+ WoodCeiling,
+ WoodPanel,
+ UniformMaterial,
+ };
+
+ enum Wall {
+ LeftWall,
+ RightWall,
+ Floor,
+ Ceiling,
+ FrontWall,
+ BackWall
+ };
+
+ void setPosition(QVector3D pos);
+ QVector3D position() const;
+
+ void setDimensions(QVector3D dim);
+ QVector3D dimensions() const;
+
+ void setRotation(const QQuaternion &q);
+ QQuaternion rotation() const;
+
+ void setWallMaterial(Wall wall, Material material);
+ Material wallMaterial(Wall wall) const;
+
+ void setReflectionGain(float factor);
+ float reflectionGain() const;
+
+ void setReverbGain(float factor);
+ float reverbGain() const;
+
+ void setReverbTime(float factor);
+ float reverbTime() const;
+
+ void setReverbBrightness(float factor);
+ float reverbBrightness() const;
+
+Q_SIGNALS:
+ void positionChanged();
+ void dimensionsChanged();
+ void rotationChanged();
+ void wallsChanged();
+ void reflectionGainChanged();
+ void reverbGainChanged();
+ void reverbTimeChanged();
+ void reverbBrightnessChanged();
+
+private:
+ friend class QAudioRoomPrivate;
+ QAudioRoomPrivate *d;
+};
+
+QT_END_NAMESPACE
+
+#endif