summaryrefslogtreecommitdiffstats
path: root/src/datavis3d/engine/scatter3drenderer_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/datavis3d/engine/scatter3drenderer_p.h')
-rw-r--r--src/datavis3d/engine/scatter3drenderer_p.h36
1 files changed, 11 insertions, 25 deletions
diff --git a/src/datavis3d/engine/scatter3drenderer_p.h b/src/datavis3d/engine/scatter3drenderer_p.h
index 8627e170..fa42cd91 100644
--- a/src/datavis3d/engine/scatter3drenderer_p.h
+++ b/src/datavis3d/engine/scatter3drenderer_p.h
@@ -49,8 +49,8 @@
//
// We mean it.
-#ifndef Q3DSCATTERRENDERER_p_H
-#define Q3DSCATTERRENDERER_p_H
+#ifndef Q3DSCATTERRENDERER_P_H
+#define Q3DSCATTERRENDERER_P_H
#include <QtCore/QSize>
#include <QtCore/QObject>
@@ -62,6 +62,7 @@
#include "datavis3dglobal_p.h"
#include "scatter3dcontroller_p.h"
+#include "abstract3drenderer_p.h"
#include "qscatterdataproxy.h"
#include "scatterrenderitem_p.h"
@@ -76,13 +77,11 @@ QT_DATAVIS3D_BEGIN_NAMESPACE
class ShaderHelper;
class ObjectHelper;
class TextureHelper;
-class Theme;
-class Drawer;
class LabelItem;
class CameraHelper;
class QAbstractAxisPrivate;
-class QT_DATAVIS3D_EXPORT Scatter3DRenderer : public QObject, protected QOpenGLFunctions
+class QT_DATAVIS3D_EXPORT Scatter3DRenderer : public Abstract3DRenderer
{
Q_OBJECT
@@ -100,13 +99,8 @@ private:
QString m_cachedObjFile;
SelectionMode m_cachedSelectionMode;
int m_cachedZoomLevel;
- QRect m_cachedBoundingRect;
- Theme m_cachedTheme;
- LabelTransparency m_cachedLabelTransparency;
- QFont m_cachedFont;
bool m_cachedIsGridEnabled;
bool m_cachedIsBackgroundEnabled;
- ShadowQuality m_cachedShadowQuality;
// Internal state
ScatterRenderItem *m_selectedItem; // points to renderitem array
@@ -127,7 +121,6 @@ private:
ObjectHelper *m_gridLineObj;
ObjectHelper *m_labelObj;
TextureHelper *m_textureHelper;
- Drawer *m_drawer;
GLuint m_bgrTexture;
GLuint m_depthTexture;
GLuint m_selectionTexture;
@@ -135,7 +128,6 @@ private:
GLuint m_selectionFrameBuffer;
GLuint m_selectionDepthBuffer;
GLfloat m_shadowQualityToShader;
- GLfloat m_autoScaleAdjustment;
GLfloat m_heightNormalizer;
GLfloat m_yAdjustment;
GLfloat m_scaleFactor;
@@ -164,38 +156,34 @@ public:
~Scatter3DRenderer();
void render(QScatterDataProxy *dataProxy, bool valuesDirty, CameraHelper *camera,
- const LabelItem &xLabel, const LabelItem &yLabel, const LabelItem &zLabel,
const GLuint defaultFboHandle = 0);
QRect mainViewPort();
- // TODO: Not thread-safe, needs rethinking how axes create labels
- Drawer *drawer() { return m_drawer; }
public slots:
- void updateTheme(Theme theme);
void updateSelectionMode(SelectionMode newMode);
//void updateLimits(QPair<GLfloat, GLfloat> newLimits);
void updateZoomLevel(int newZoomLevel);
- void updateFont(const QFont &font);
- void updateLabelTransparency(LabelTransparency transparency);
void updateGridEnabled(bool enable);
void updateBackgroundEnabled(bool enable);
- void updateShadowQuality(ShadowQuality quality);
void updateTickCount(GLint tickCount, GLfloat step, GLfloat minimum = 0.0f);
void updateMeshFileName(const QString &objFileName);
- void updateBoundingRect(const QRect boundingRect);
- void updatePosition(const QRect boundingRect);
// Requests that upon next render pass the column and row under the given point is inspected for selection.
// Only one request can be queued per render pass at this point. New request will override any pending requests.
// After inspection the selectionUpdated signal is emitted.
- void requestSelectionAtPoint(const QPoint &point);
+ virtual void requestSelectionAtPoint(const QPoint &point);
signals:
void selectionUpdated(QVector3D selection);
private:
- void initializeOpenGL();
+ virtual void initializePreOpenGL();
+ virtual void initializeOpenGL();
+ virtual void initShaders(const QString &vertexShader, const QString &fragmentShader);
+ virtual void updateShadowQuality(ShadowQuality quality);
+ virtual void updateTextures();
+
void drawScene(CameraHelper *camera, const GLuint defaultFboHandle);
void handleResize();
@@ -203,7 +191,6 @@ private:
void loadBackgroundMesh();
void loadGridLineMesh();
void loadLabelMesh();
- void initShaders(const QString &vertexShader, const QString &fragmentShader);
void initSelectionShader();
void initBackgroundShaders(const QString &vertexShader, const QString &fragmentShader);
void initLabelShaders(const QString &vertexShader, const QString &fragmentShader);
@@ -212,7 +199,6 @@ private:
void initDepthShader();
void updateDepthBuffer();
#endif
- void updateTextures();
void calculateSceneScalingFactors(const QRect &areaRect = QRect(0, 0, 1, 1));
void calculateTranslation(ScatterRenderItem &item);
void calculateHeightAdjustment(const QPair<GLfloat, GLfloat> &limits);