summaryrefslogtreecommitdiffstats
path: root/examples/datavisualization/texturesurface/custominputhandler.h
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@digia.com>2014-08-12 14:12:17 +0300
committerMika Salmela <mika.salmela@digia.com>2014-08-12 17:53:13 +0300
commitd8037e46600ba65869eb72ed6a6a1b21ad966f5c (patch)
treef1e0155beab1695f0de27c465f1be138ebbc3a88 /examples/datavisualization/texturesurface/custominputhandler.h
parent1cbeea3d48a1d55f5eef0ee419d209a7a9625c3f (diff)
Textured surface example
Documentation once the feature set is final and code looking good. Size of image files adjusted when example area is locked. Change-Id: I7ff249ec3452d412a64ce029b33f7607965ffb3a Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'examples/datavisualization/texturesurface/custominputhandler.h')
-rw-r--r--examples/datavisualization/texturesurface/custominputhandler.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/examples/datavisualization/texturesurface/custominputhandler.h b/examples/datavisualization/texturesurface/custominputhandler.h
new file mode 100644
index 00000000..5307a6be
--- /dev/null
+++ b/examples/datavisualization/texturesurface/custominputhandler.h
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#ifndef CUSTOMINPUTHANDLER_H
+#define CUSTOMINPUTHANDLER_H
+
+#include <QtDataVisualization/Q3DInputHandler>
+#include <QtDataVisualization/QAbstract3DGraph>
+#include <QtDataVisualization/QValue3DAxis>
+#include "highlightseries.h"
+
+using namespace QtDataVisualization;
+
+class CustomInputHandler : public Q3DInputHandler
+{
+ Q_OBJECT
+
+ enum InputState {
+ StateNormal = 0,
+ StateDraggingX,
+ StateDraggingZ,
+ StateDraggingY
+ };
+
+public:
+ explicit CustomInputHandler(QAbstract3DGraph *graph, QObject *parent = 0);
+
+ inline void setLimits(float min, float max) {
+ m_areaMinValue = min;
+ m_areaMaxValue = max;
+ m_axisXMinValue = m_areaMinValue;
+ m_axisXMaxValue = m_areaMaxValue;
+ m_axisZMinValue = m_areaMinValue;
+ m_axisZMaxValue = m_areaMaxValue;
+ m_axisXMinRange = (m_areaMaxValue - m_areaMinValue) * 0.49f;
+ m_axisZMinRange = (m_areaMaxValue - m_areaMinValue) * 0.49f;
+ }
+ inline void setAxes(QValue3DAxis *axisX, QValue3DAxis *axisY, QValue3DAxis *axisZ) {
+ m_axisX = axisX;
+ m_axisY = axisY;
+ m_axisZ = axisZ;
+ }
+ inline void setAspectRatio(float ratio) { m_aspectRatio = ratio; }
+ inline void setHighlightSeries(HighlightSeries *series) { m_highlight = series; }
+ inline void setDragSpeedModifier(float modifier) { m_speedModifier = modifier; }
+
+ virtual void mousePressEvent(QMouseEvent *event, const QPoint &mousePos);
+ virtual void mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos);
+ virtual void mouseReleaseEvent(QMouseEvent *event, const QPoint &mousePos);
+ virtual void wheelEvent(QWheelEvent *event);
+
+private:
+ void handleElementSelected(QAbstract3DGraph::ElementType type);
+ void handleAxisDragging();
+ void checkConstraints();
+
+private:
+ HighlightSeries *m_highlight;
+ bool m_mousePressed;
+ InputState m_state;
+ QValue3DAxis *m_axisX;
+ QValue3DAxis *m_axisY;
+ QValue3DAxis *m_axisZ;
+ float m_speedModifier;
+ float m_aspectRatio;
+ float m_axisXMinValue;
+ float m_axisXMaxValue;
+ float m_axisXMinRange;
+ float m_axisZMinValue;
+ float m_axisZMaxValue;
+ float m_axisZMinRange;
+ float m_areaMinValue;
+ float m_areaMaxValue;
+};
+
+#endif