summaryrefslogtreecommitdiffstats
path: root/src/datavisualization
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-01-09 12:47:06 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2014-01-09 13:19:32 +0200
commit2203491ab2b639f3def805ea9cecbab1add32105 (patch)
treee2a8b2ac81638f608d70071d028b021274be298e /src/datavisualization
parent450dc3e6d74ffe93a761a5e2491458935ecac7b7 (diff)
Enable using custom surface format for c++ graphs
Main benefit is to be able to opt out of antialiasing. Task-number: QTRD-2734 Change-Id: Ic0681356f93d55e87535910a533be3f845703044 Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src/datavisualization')
-rw-r--r--src/datavisualization/engine/q3dbars.cpp7
-rw-r--r--src/datavisualization/engine/q3dbars.h2
-rw-r--r--src/datavisualization/engine/q3dscatter.cpp7
-rw-r--r--src/datavisualization/engine/q3dscatter.h2
-rw-r--r--src/datavisualization/engine/q3dsurface.cpp7
-rw-r--r--src/datavisualization/engine/q3dsurface.h2
-rw-r--r--src/datavisualization/engine/qabstract3dgraph.cpp36
-rw-r--r--src/datavisualization/engine/qabstract3dgraph.h2
8 files changed, 40 insertions, 25 deletions
diff --git a/src/datavisualization/engine/q3dbars.cpp b/src/datavisualization/engine/q3dbars.cpp
index 51ba8dbf..fe121e0d 100644
--- a/src/datavisualization/engine/q3dbars.cpp
+++ b/src/datavisualization/engine/q3dbars.cpp
@@ -93,10 +93,11 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
*/
/*!
- * Constructs a new 3D bar graph with optional \a parent window.
+ * Constructs a new 3D bar graph with optional \a parent window
+ * and surface \a format.
*/
-Q3DBars::Q3DBars(QWindow *parent)
- : QAbstract3DGraph(new Q3DBarsPrivate(this), parent)
+Q3DBars::Q3DBars(const QSurfaceFormat *format, QWindow *parent)
+ : QAbstract3DGraph(new Q3DBarsPrivate(this), format, parent)
{
dptr()->m_shared = new Bars3DController(geometry());
d_ptr->setVisualController(dptr()->m_shared);
diff --git a/src/datavisualization/engine/q3dbars.h b/src/datavisualization/engine/q3dbars.h
index 16c16e93..2ed27c50 100644
--- a/src/datavisualization/engine/q3dbars.h
+++ b/src/datavisualization/engine/q3dbars.h
@@ -43,7 +43,7 @@ class QT_DATAVISUALIZATION_EXPORT Q3DBars : public QAbstract3DGraph
Q_PROPERTY(QValue3DAxis *valueAxis READ valueAxis WRITE setValueAxis NOTIFY valueAxisChanged)
public:
- explicit Q3DBars(QWindow *parent = 0);
+ explicit Q3DBars(const QSurfaceFormat *format = 0, QWindow *parent = 0);
virtual ~Q3DBars();
void addSeries(QBar3DSeries *series);
diff --git a/src/datavisualization/engine/q3dscatter.cpp b/src/datavisualization/engine/q3dscatter.cpp
index 9f4f1af8..f83ca17e 100644
--- a/src/datavisualization/engine/q3dscatter.cpp
+++ b/src/datavisualization/engine/q3dscatter.cpp
@@ -78,10 +78,11 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
*/
/*!
- * Constructs a new 3D scatter graph with optional \a parent window.
+ * Constructs a new 3D scatter graph with optional \a parent window
+ * and surface \a format.
*/
-Q3DScatter::Q3DScatter(QWindow *parent)
- : QAbstract3DGraph(new Q3DScatterPrivate(this), parent)
+Q3DScatter::Q3DScatter(const QSurfaceFormat *format, QWindow *parent)
+ : QAbstract3DGraph(new Q3DScatterPrivate(this), format, parent)
{
dptr()->m_shared = new Scatter3DController(geometry());
d_ptr->setVisualController(dptr()->m_shared);
diff --git a/src/datavisualization/engine/q3dscatter.h b/src/datavisualization/engine/q3dscatter.h
index cdea32fd..d9ad596c 100644
--- a/src/datavisualization/engine/q3dscatter.h
+++ b/src/datavisualization/engine/q3dscatter.h
@@ -40,7 +40,7 @@ class QT_DATAVISUALIZATION_EXPORT Q3DScatter : public QAbstract3DGraph
Q_PROPERTY(QValue3DAxis *axisZ READ axisZ WRITE setAxisZ NOTIFY axisZChanged)
public:
- explicit Q3DScatter(QWindow *parent = 0);
+ explicit Q3DScatter(const QSurfaceFormat *format = 0, QWindow *parent = 0);
virtual ~Q3DScatter();
void addSeries(QScatter3DSeries *series);
diff --git a/src/datavisualization/engine/q3dsurface.cpp b/src/datavisualization/engine/q3dsurface.cpp
index ad236220..15c48dbf 100644
--- a/src/datavisualization/engine/q3dsurface.cpp
+++ b/src/datavisualization/engine/q3dsurface.cpp
@@ -91,10 +91,11 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
*/
/*!
- * Constructs a new 3D surface graph with optional \a parent window.
+ * Constructs a new 3D surface graph with optional \a parent window
+ * and surface \a format.
*/
-Q3DSurface::Q3DSurface(QWindow *parent)
- : QAbstract3DGraph(new Q3DSurfacePrivate(this), parent)
+Q3DSurface::Q3DSurface(const QSurfaceFormat *format, QWindow *parent)
+ : QAbstract3DGraph(new Q3DSurfacePrivate(this), format, parent)
{
dptr()->m_shared = new Surface3DController(geometry());
d_ptr->setVisualController(dptr()->m_shared);
diff --git a/src/datavisualization/engine/q3dsurface.h b/src/datavisualization/engine/q3dsurface.h
index fd09e600..a5107ef1 100644
--- a/src/datavisualization/engine/q3dsurface.h
+++ b/src/datavisualization/engine/q3dsurface.h
@@ -38,7 +38,7 @@ class QT_DATAVISUALIZATION_EXPORT Q3DSurface : public QAbstract3DGraph
Q_PROPERTY(QValue3DAxis *axisZ READ axisZ WRITE setAxisZ NOTIFY axisZChanged)
public:
- explicit Q3DSurface(QWindow *parent = 0);
+ explicit Q3DSurface(const QSurfaceFormat *format = 0, QWindow *parent = 0);
virtual ~Q3DSurface();
void addSeries(QSurface3DSeries *series);
diff --git a/src/datavisualization/engine/qabstract3dgraph.cpp b/src/datavisualization/engine/qabstract3dgraph.cpp
index f17319d5..3aada9cf 100644
--- a/src/datavisualization/engine/qabstract3dgraph.cpp
+++ b/src/datavisualization/engine/qabstract3dgraph.cpp
@@ -55,23 +55,32 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
/*!
* \internal
*/
-QAbstract3DGraph::QAbstract3DGraph(QAbstract3DGraphPrivate *d, QWindow *parent)
+QAbstract3DGraph::QAbstract3DGraph(QAbstract3DGraphPrivate *d, const QSurfaceFormat *format, QWindow *parent)
: QWindow(parent),
d_ptr(d)
{
- d_ptr->m_context = new QOpenGLContext(this);
-
+ // Default to frameless window, as typically graphs are not toplevel
setFlags(flags() | Qt::FramelessWindowHint);
- setSurfaceType(QWindow::OpenGLSurface);
+
QSurfaceFormat surfaceFormat;
- surfaceFormat.setDepthBufferSize(24);
+ if (format) {
+ surfaceFormat = *format;
+ } else {
+ surfaceFormat.setDepthBufferSize(24);
+#if !defined(QT_OPENGL_ES_2)
+ surfaceFormat.setSamples(8);
+#endif
+ surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer);
+ }
+
#if !defined(QT_OPENGL_ES_2)
- surfaceFormat.setSamples(8);
surfaceFormat.setRenderableType(QSurfaceFormat::OpenGL);
#else
surfaceFormat.setRenderableType(QSurfaceFormat::OpenGLES);
#endif
- surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer);
+
+ d_ptr->m_context = new QOpenGLContext(this);
+ setSurfaceType(QWindow::OpenGLSurface);
setFormat(surfaceFormat);
create();
@@ -82,13 +91,16 @@ QAbstract3DGraph::QAbstract3DGraph(QAbstract3DGraphPrivate *d, QWindow *parent)
initializeOpenGLFunctions();
- const GLubyte *version = glGetString(GL_VERSION);
- qDebug() << "OpenGL version:" << (const char *)version;
- version = glGetString(GL_SHADING_LANGUAGE_VERSION);
- qDebug() << "GLSL version:" << (const char *)version;
+ const GLubyte *shaderVersion = glGetString(GL_SHADING_LANGUAGE_VERSION);
+#ifndef QT_NO_DEBUG
+ const GLubyte *openGLVersion = glGetString(GL_VERSION);
+ qDebug() << "OpenGL version:" << (const char *)openGLVersion;
+ qDebug() << "GLSL version:" << (const char *)shaderVersion;
+#endif
+
#if !defined(QT_OPENGL_ES_2)
// If we have real OpenGL, GLSL version must be 1.2 or over. Quit if not.
- QStringList splitversionstr = QString::fromLatin1((const char *)version).split(QChar::fromLatin1(' '));
+ QStringList splitversionstr = QString::fromLatin1((const char *)shaderVersion).split(QChar::fromLatin1(' '));
if (splitversionstr[0].toFloat() < 1.2)
qFatal("GLSL version must be 1.20 or higher. Try installing latest display drivers.");
#endif
diff --git a/src/datavisualization/engine/qabstract3dgraph.h b/src/datavisualization/engine/qabstract3dgraph.h
index a7241004..5e39221c 100644
--- a/src/datavisualization/engine/qabstract3dgraph.h
+++ b/src/datavisualization/engine/qabstract3dgraph.h
@@ -45,7 +45,7 @@ class QT_DATAVISUALIZATION_EXPORT QAbstract3DGraph : public QWindow, protected Q
Q_PROPERTY(Q3DScene* scene READ scene)
protected:
- explicit QAbstract3DGraph(QAbstract3DGraphPrivate *d, QWindow *parent = 0);
+ explicit QAbstract3DGraph(QAbstract3DGraphPrivate *d, const QSurfaceFormat *format, QWindow *parent = 0);
public:
virtual ~QAbstract3DGraph();