summaryrefslogtreecommitdiffstats
path: root/src/quick3d/imports/scene3d/scene3ditem_p.h
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-01-19 14:04:54 +0000
committerSean Harmer <sean.harmer@kdab.com>2016-01-19 14:35:43 +0000
commit7678557c2d2135b9c34c3402146d126cc1eed0b0 (patch)
treef71500d216512164d22bc797b1331f4a810d7f2e /src/quick3d/imports/scene3d/scene3ditem_p.h
parent704dca53b4575622127dc5351c4f88cc97e497b5 (diff)
Add automatic aspect ratio support for camera in Scene3D
Change-Id: Ibb3378e2e1d495986f68902e368847e89d8fbdd6 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/quick3d/imports/scene3d/scene3ditem_p.h')
-rw-r--r--src/quick3d/imports/scene3d/scene3ditem_p.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/quick3d/imports/scene3d/scene3ditem_p.h b/src/quick3d/imports/scene3d/scene3ditem_p.h
index bb078d6b8..f3379a7e9 100644
--- a/src/quick3d/imports/scene3d/scene3ditem_p.h
+++ b/src/quick3d/imports/scene3d/scene3ditem_p.h
@@ -49,6 +49,7 @@
//
#include <QQuickItem>
+#include <QtCore/qpointer.h>
QT_BEGIN_NAMESPACE
@@ -59,6 +60,7 @@ class QEntity;
namespace Qt3DRender {
+class QCamera;
class QRenderAspect;
class Scene3DRenderer;
class Scene3DCleaner;
@@ -69,6 +71,7 @@ class Scene3DItem : public QQuickItem
Q_PROPERTY(Qt3DCore::QEntity* entity READ entity WRITE setEntity NOTIFY entityChanged)
Q_PROPERTY(QStringList aspects READ aspects WRITE setAspects NOTIFY aspectsChanged)
Q_PROPERTY(bool multisample READ multisample WRITE setMultisample NOTIFY multisampleChanged)
+ Q_PROPERTY(CameraAspectRatioMode cameraAspectRatioMode READ cameraAspectRatioMode WRITE setCameraAspectRatioMode NOTIFY cameraAspectRatioModeChanged)
Q_CLASSINFO("DefaultProperty", "entity")
public:
explicit Scene3DItem(QQuickItem *parent = 0);
@@ -80,14 +83,23 @@ public:
bool multisample() const;
void setMultisample(bool enable);
+ enum CameraAspectRatioMode {
+ AutomaticAspectRatio,
+ UserAspectRatio
+ };
+ Q_ENUM(CameraAspectRatioMode);
+ CameraAspectRatioMode cameraAspectRatioMode() const;
+
public Q_SLOTS:
void setAspects(const QStringList &aspects);
void setEntity(Qt3DCore::QEntity *entity);
+ void setCameraAspectRatioMode(CameraAspectRatioMode mode);
Q_SIGNALS:
void aspectsChanged();
void entityChanged();
void multisampleChanged();
+ void cameraAspectRatioModeChanged(CameraAspectRatioMode mode);
private Q_SLOTS:
void applyRootEntityChange();
@@ -95,6 +107,8 @@ private Q_SLOTS:
private:
QSGNode *updatePaintNode(QSGNode *node, UpdatePaintNodeData *nodeData) Q_DECL_OVERRIDE;
void setWindowSurface(QObject *rootObject);
+ void setCameraAspectModeHelper();
+ void updateCameraAspectRatio();
QStringList m_aspects;
Qt3DCore::QEntity *m_entity;
@@ -105,6 +119,9 @@ private:
Scene3DCleaner *m_rendererCleaner;
bool m_multisample;
+
+ QPointer<Qt3DRender::QCamera> m_camera;
+ CameraAspectRatioMode m_cameraAspectRatioMode;
};
} // Qt3DRender