From e2c5eae7ab8e28b545b11d04ab57cdd31008fc8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= Date: Mon, 3 Jun 2013 13:53:01 +0300 Subject: Mac / linux fixes + other tweaks Change-Id: I8b1457b86b0f881cfd374cf9e9ed3c803e7d04d2 Reviewed-by: Miikka Heikkinen --- src/datavis3dqml2/datavis3dqml2_plugin.h | 4 ++- src/datavis3dqml2/datavisview.cpp | 44 ++++++++++++++++++++++++++++++++ src/datavis3dqml2/datavisview.h | 14 ++++++---- src/datavis3dqml2/scenerenderernode.cpp | 28 +++++++++++++++----- src/datavis3dqml2/scenerenderernode_p.h | 4 +-- 5 files changed, 80 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/datavis3dqml2/datavis3dqml2_plugin.h b/src/datavis3dqml2/datavis3dqml2_plugin.h index 17b7703b..55d18754 100644 --- a/src/datavis3dqml2/datavis3dqml2_plugin.h +++ b/src/datavis3dqml2/datavis3dqml2_plugin.h @@ -57,7 +57,7 @@ #include -QTENTERPRISE_DATAVIS3D_BEGIN_NAMESPACE +QTENTERPRISE_DATAVIS3D_USE_NAMESPACE //Q_DECLARE_METATYPE(Declarative3DBars *) //Q_DECLARE_METATYPE(Declarative3DMaps *) @@ -71,6 +71,8 @@ Q_DECLARE_METATYPE(QDataItem *) Q_DECLARE_METATYPE(QDataRow *) Q_DECLARE_METATYPE(QDataSet *) +QTENTERPRISE_DATAVIS3D_BEGIN_NAMESPACE + class Datavis3dqml2Plugin : public QQmlExtensionPlugin { Q_OBJECT diff --git a/src/datavis3dqml2/datavisview.cpp b/src/datavis3dqml2/datavisview.cpp index 0322acc1..5279d7da 100644 --- a/src/datavis3dqml2/datavisview.cpp +++ b/src/datavis3dqml2/datavisview.cpp @@ -39,13 +39,26 @@ ** ****************************************************************************/ +//#define TEST1 +//#define TEST2 + #include "datavisview.h" #include "scenerenderernode_p.h" #include +#ifdef TEST1 +#include "q3dbars.h" +#include +#endif + QTENTERPRISE_DATAVIS3D_BEGIN_NAMESPACE +#ifdef TEST1 +Q3DBars *test_scene; +QQuickWindow *test_window; +#endif + DataVisView::DataVisView(QQuickItem *parent): QQuickItem(parent) { @@ -62,6 +75,34 @@ DataVisView::~DataVisView() QSGNode *DataVisView::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) { +#ifdef TEST1 + static bool done = false; + if (!done) { + qDebug() << "create scene"; + test_scene = new Q3DBars(); + //test_scene->initialize(); + + // TODO: For testing. Add some data to scene. + QVector< QVector > data; + QVector row; + for (int j = 0; j < 2; j++) { + for (int i = 0; i < 2; i++) + row.append(1.0f); + data.append(row); + row.clear(); + } + // Set up sample space based on inserted data + test_scene->setupSampleSpace(2, 2); + // Add data to chart + test_scene->addDataSet(data); + + test_window = window(); + QObject::connect(test_window, &QQuickWindow::beforeRendering, test_scene, &Q3DBars::renderNow, + Qt::DirectConnection); + test_window->update(); + done = true; + } +#elif TEST2 // Delete old node and recreate it. This function gets called when window geometry changes. if (oldNode) delete oldNode; @@ -71,6 +112,9 @@ QSGNode *DataVisView::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) node->setRect(boundingRect()); return node; +#else + return NULL; +#endif } QTENTERPRISE_DATAVIS3D_END_NAMESPACE diff --git a/src/datavis3dqml2/datavisview.h b/src/datavis3dqml2/datavisview.h index 3488338c..4e9d29e2 100644 --- a/src/datavis3dqml2/datavisview.h +++ b/src/datavis3dqml2/datavisview.h @@ -44,6 +44,7 @@ #include "QtDataVis3D/qdatavis3dglobal.h" +#include #include QTENTERPRISE_DATAVIS3D_BEGIN_NAMESPACE @@ -57,9 +58,6 @@ class DataVisView : public QQuickItem Q_ENUMS(LabelTransparency) public: - DataVisView(QQuickItem *parent = 0); - ~DataVisView(); - enum SelectionMode { ModeNone = 0, ModeBar, @@ -83,14 +81,20 @@ public: TransparencyNoBackground // Draw just text on transparent background }; +public: + DataVisView(QQuickItem *parent = 0); + ~DataVisView(); + protected: QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *); }; -QML_DECLARE_TYPE(DataVisView) - QTENTERPRISE_DATAVIS3D_END_NAMESPACE +QTENTERPRISE_DATAVIS3D_USE_NAMESPACE + +QML_DECLARE_TYPE(DataVisView) + #endif // DATAVISVIEW_H diff --git a/src/datavis3dqml2/scenerenderernode.cpp b/src/datavis3dqml2/scenerenderernode.cpp index 98c2167e..00f03e5e 100644 --- a/src/datavis3dqml2/scenerenderernode.cpp +++ b/src/datavis3dqml2/scenerenderernode.cpp @@ -43,7 +43,7 @@ #include #include -//#include "q3dbars.h" +#include "q3dbars.h" //#include "q3dmaps.h" QTENTERPRISE_DATAVIS3D_BEGIN_NAMESPACE @@ -51,8 +51,8 @@ QTENTERPRISE_DATAVIS3D_BEGIN_NAMESPACE SceneRendererNode::SceneRendererNode(QQuickWindow *window) : m_fbo(0), m_texture(0), - m_window(window)//, - //m_scene(0) + m_window(window), + m_scene(0) { connect(m_window, SIGNAL(beforeRendering()), this, SLOT(render())); } @@ -61,7 +61,7 @@ SceneRendererNode::~SceneRendererNode() { delete m_texture; delete m_fbo; - //delete m_scene; + delete m_scene; } void SceneRendererNode::render() @@ -78,7 +78,23 @@ void SceneRendererNode::render() // TODO: If we create the vis3d this way, how do we connect it with QML? // Should we create it at QML and give it to DataVisView using a property (setVisualizer or similar)? // DataVisView can then give it here as an argument in constructor? - //m_scene = new Q3DBars(); + + m_scene = new Q3DBars(); + + // TODO: For testing. Add some data to scene. + QVector< QVector > data; + QVector row; + for (int j = 0; j < 2; j++) { + for (int i = 0; i < 2; i++) + row.append(1.0f); + data.append(row); + row.clear(); + } + // Set up sample space based on inserted data + m_scene->setupSampleSpace(2, 2); + // Add data to chart + m_scene->addDataSet(data); + //m_scene = new Q3DMaps(); setTexture(m_texture); } @@ -86,7 +102,7 @@ void SceneRendererNode::render() m_fbo->bind(); // TODO: Render here, or "capture" the rendering we do at Q3DBars/Q3DMaps - //m_scene->render(); + m_scene->renderNow(); m_fbo->bindDefault(); diff --git a/src/datavis3dqml2/scenerenderernode_p.h b/src/datavis3dqml2/scenerenderernode_p.h index 2a1f282c..aa59b9c1 100644 --- a/src/datavis3dqml2/scenerenderernode_p.h +++ b/src/datavis3dqml2/scenerenderernode_p.h @@ -63,7 +63,7 @@ class QQuickWindow; QTENTERPRISE_DATAVIS3D_BEGIN_NAMESPACE -//class Q3DBars; +class Q3DBars; //class Q3DMaps; // TODO: If we use texture node, our rendering is done into a texture that is then drawn to the @@ -84,7 +84,7 @@ private: QOpenGLFramebufferObject *m_fbo; QSGTexture *m_texture; QQuickWindow *m_window; - //Q3DBars *m_scene; + Q3DBars *m_scene; //Q3DMaps *m_scene; }; -- cgit v1.2.3