diff options
Diffstat (limited to 'src/datavis3d/engine/bars3dcontroller.cpp')
-rw-r--r-- | src/datavis3d/engine/bars3dcontroller.cpp | 183 |
1 files changed, 9 insertions, 174 deletions
diff --git a/src/datavis3d/engine/bars3dcontroller.cpp b/src/datavis3d/engine/bars3dcontroller.cpp index 1591eb46..0febdb68 100644 --- a/src/datavis3d/engine/bars3dcontroller.cpp +++ b/src/datavis3d/engine/bars3dcontroller.cpp @@ -34,9 +34,6 @@ Bars3DController::Bars3DController(QRect boundRect) : Abstract3DController(boundRect), m_rowCount(10), m_columnCount(10), - m_mouseState(MouseNone), - m_mousePos(QPoint(0, 0)), - m_isSlicingActivated(false), m_selectedBarPos(noSelectionPoint()), m_isBarSpecRelative(true), m_barThicknessRatio(1.0f), @@ -67,6 +64,7 @@ void Bars3DController::initializeOpenGL() return; m_renderer = new Bars3DRenderer(this); + setRenderer(m_renderer); synchDataToRenderer(); @@ -83,11 +81,6 @@ void Bars3DController::synchDataToRenderer() return; // Notify changes to renderer - if (m_changeTracker.slicingActiveChanged) { - m_renderer->updateSlicingActive(m_isSlicingActivated); - m_changeTracker.slicingActiveChanged = false; - } - if (m_changeTracker.sampleSpaceChanged) { m_renderer->updateSampleSpace(m_rowCount, m_columnCount); m_changeTracker.sampleSpaceChanged = false; @@ -109,159 +102,6 @@ void Bars3DController::synchDataToRenderer() } } -QMatrix4x4 Bars3DController::calculateViewMatrix(int zoom, int viewPortWidth, - int viewPortHeight, bool showUnder) -{ - return m_cameraHelper->calculateViewMatrix(m_mousePos, - zoom, - viewPortWidth, - viewPortHeight, - showUnder); -} - -bool Bars3DController::isSlicingActive() -{ - return m_isSlicingActivated; -} - -void Bars3DController::setSlicingActive(bool isSlicing) -{ - m_isSlicingActivated = isSlicing; - - m_changeTracker.slicingActiveChanged = true; - emitNeedRender(); -} - -Bars3DController::MouseState Bars3DController::mouseState() -{ - return m_mouseState; -} - - -#if defined(Q_OS_ANDROID) -void Bars3DController::mouseDoubleClickEvent(QMouseEvent *event) -{ - if (!m_isSlicingActivated) { - m_mouseState = Bars3DController::MouseOnScene; - // update mouse positions to prevent jumping when releasing or repressing a button - m_mousePos = event->pos(); - emitNeedRender(); - } -} - -void Bars3DController::touchEvent(QTouchEvent *event) -{ - static int prevDistance = 0; - - QList<QTouchEvent::TouchPoint> points; - points = event->touchPoints(); - - if (!m_isSlicingActivated && points.count() == 2) { - m_mouseState = Bars3DController::MouseOnPinch; - - QPointF distance = points.at(0).pos() - points.at(1).pos(); - int newDistance = distance.manhattanLength(); - int zoomRate = 1; - int zoomLevel = m_zoomLevel; - if (zoomLevel > 100) - zoomRate = 5; - if (newDistance > prevDistance) - zoomLevel += zoomRate; - else - zoomLevel -= zoomRate; - if (zoomLevel > 500) - zoomLevel = 500; - else if (zoomLevel < 10) - zoomLevel = 10; - setZoomLevel(zoomLevel); - prevDistance = newDistance; - //qDebug() << "distance" << distance.manhattanLength(); - } -} -#endif - -void Bars3DController::mousePressEvent(QMouseEvent *event, const QPoint &mousePos) -{ - QRect mainViewPort = m_renderer->mainViewPort(); - if (Qt::LeftButton == event->button()) { - if (m_isSlicingActivated) { - if (mousePos.x() <= mainViewPort.width() - && mousePos.y() <= mainViewPort.height()) { - m_mouseState = Bars3DController::MouseOnOverview; - //qDebug() << "Mouse pressed on overview"; - } else { - m_mouseState = Bars3DController::MouseOnZoom; - //qDebug() << "Mouse pressed on zoom"; - } - } else { -#if !defined(Q_OS_ANDROID) - m_mouseState = Bars3DController::MouseOnScene; -#else - m_mouseState = Bars3DController::MouseRotating; -#endif - // update mouse positions to prevent jumping when releasing or repressing a button - m_mousePos = mousePos; - //qDebug() << "Mouse pressed on scene"; - } - } else if (Qt::MiddleButton == event->button()) { - // reset rotations - m_mousePos = QPoint(0, 0); - } else if (!m_isSlicingActivated && Qt::RightButton == event->button()) { - // disable rotating when in slice view -#if !defined(Q_OS_ANDROID) - m_mouseState = Bars3DController::MouseRotating; -#else - m_mouseState = Bars3DController::MouseOnScene; -#endif - // update mouse positions to prevent jumping when releasing or repressing a button - m_mousePos = mousePos; - } - m_cameraHelper->updateMousePos(m_mousePos); - emitNeedRender(); -} - -void Bars3DController::mouseReleaseEvent(QMouseEvent *event, const QPoint &mousePos) -{ - Q_UNUSED(event); - if (Bars3DController::MouseRotating == m_mouseState) { - // update mouse positions to prevent jumping when releasing or repressing a button - m_mousePos = mousePos; - m_cameraHelper->updateMousePos(mousePos); - emitNeedRender(); - } - m_mouseState = Bars3DController::MouseNone; -} - -void Bars3DController::mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos) -{ - Q_UNUSED(event); - if (Bars3DController::MouseRotating == m_mouseState) { - m_mousePos = mousePos; - emitNeedRender(); - } -} - -void Bars3DController::wheelEvent(QWheelEvent *event) -{ - // disable zooming if in slice view - if (m_isSlicingActivated) - return; - - int zoomLevel = m_zoomLevel; - if (zoomLevel > 100) - zoomLevel += event->angleDelta().y() / 12; - else if (zoomLevel > 50) - zoomLevel += event->angleDelta().y() / 60; - else - zoomLevel += event->angleDelta().y() / 120; - if (zoomLevel > 500) - zoomLevel = 500; - else if (zoomLevel < 10) - zoomLevel = 10; - - setZoomLevel(zoomLevel); -} - void Bars3DController::setActiveDataProxy(QAbstractDataProxy *proxy) { // Setting null proxy indicates default proxy @@ -297,7 +137,7 @@ void Bars3DController::setActiveDataProxy(QAbstractDataProxy *proxy) void Bars3DController::handleArrayReset() { - setSlicingActive(false); + scene()->setSlicingActivated(false); adjustValueAxisRange(); m_isDataDirty = true; // Clear selection unless still valid @@ -311,7 +151,7 @@ void Bars3DController::handleRowsAdded(int startIndex, int count) Q_UNUSED(count) // TODO check if affects data window // TODO should update slice instead of deactivating? - setSlicingActive(false); + scene()->setSlicingActivated(false); adjustValueAxisRange(); m_isDataDirty = true; emitNeedRender(); @@ -323,7 +163,7 @@ void Bars3DController::handleRowsChanged(int startIndex, int count) Q_UNUSED(count) // TODO check if affects data window // TODO should update slice instead of deactivating? - setSlicingActive(false); + scene()->setSlicingActivated(false); adjustValueAxisRange(); m_isDataDirty = true; emitNeedRender(); @@ -335,7 +175,7 @@ void Bars3DController::handleRowsRemoved(int startIndex, int count) Q_UNUSED(count) // TODO check if affects data window // TODO should update slice instead of deactivating? - setSlicingActive(false); + scene()->setSlicingActivated(false); adjustValueAxisRange(); m_isDataDirty = true; @@ -351,7 +191,7 @@ void Bars3DController::handleRowsInserted(int startIndex, int count) Q_UNUSED(count) // TODO check if affects data window // TODO should update slice instead of deactivating? - setSlicingActive(false); + scene()->setSlicingActivated(false); adjustValueAxisRange(); m_isDataDirty = true; emitNeedRender(); @@ -363,7 +203,7 @@ void Bars3DController::handleItemChanged(int rowIndex, int columnIndex) Q_UNUSED(columnIndex) // TODO check if affects data window // TODO should update slice instead of deactivating? - setSlicingActive(false); + scene()->setSlicingActivated(false); adjustValueAxisRange(); m_isDataDirty = true; emitNeedRender(); @@ -444,7 +284,7 @@ void Bars3DController::setBarType(QDataVis::MeshStyle style, bool smooth) void Bars3DController::setDataWindow(int rowCount, int columnCount) { // Disable zoom mode if we're in it (causes crash if not, as zoom selection is deleted) - setSlicingActive(false); + scene()->setSlicingActivated(false); m_rowCount = rowCount; m_columnCount = columnCount; @@ -462,7 +302,7 @@ void Bars3DController::setDataWindow(int rowCount, int columnCount) void Bars3DController::setSelectionMode(QDataVis::SelectionMode mode) { // Disable zoom if selection mode changes - setSlicingActive(false); + scene()->setSlicingActivated(false); Abstract3DController::setSelectionMode(mode); } @@ -492,11 +332,6 @@ QPoint Bars3DController::selectedBarPos() const return m_selectedBarPos; } -QPoint Bars3DController::mousePosition() -{ - return m_mousePos; -} - int Bars3DController::columnCount() { return m_columnCount; |