// ------------------------------------------------------------------ // Name : getScreenCoords // ------------------------------------------------------------------ CoordsScreen DisplayEngine::getScreenCoords(CoordsMap mapCoords) { // TODO : A REVOIR if (m_iMapWidth == 0 || m_iMapHeight == 0 || m_pClientParams == NULL) return CoordsScreen(); CoordsScreen screenCoords((mapCoords.x * m_pClientParams->screenXSize) / m_iMapWidth, (mapCoords.y * m_pClientParams->screenYSize) / m_iMapHeight); return screenCoords; }
bool PixelOrientedViewNavigator::eventFilter(QObject *widget, QEvent *e) { if(e->type() != QEvent::MouseButtonDblClick && e->type() != QEvent::MouseMove) return false; GlMainWidget *glWidget = (GlMainWidget *) widget; if (!glWidget->hasMouseTracking()) { glWidget->setMouseTracking(true); } if (!pixelView->smallMultiplesViewSet() && !pixelView->interactorsEnabled()) { pixelView->toggleInteractors(true); } if (pixelView->getOverviews().size() == 0) { return false; } if (e->type() == QEvent::MouseMove && pixelView->smallMultiplesViewSet()) { QMouseEvent *me = (QMouseEvent *) e; int x = glWidget->width() - me->x(); int y = me->y(); Coord screenCoords(x, y, 0); Coord sceneCoords = glWidget->getScene()->getGraphCamera().viewportTo3DWorld(glWidget->screenToViewport(screenCoords)); PixelOrientedOverview *overviewUnderPointer = getOverviewUnderPointer(sceneCoords); if (overviewUnderPointer != NULL && overviewUnderPointer != selectedOverview) { selectedOverview = overviewUnderPointer; } return true; } else if (e->type() == QEvent::MouseButtonDblClick) { if (selectedOverview != NULL && !selectedOverview->overviewGenerated()) { pixelView->generatePixelOverview(selectedOverview, glWidget); glWidget->draw(); } else if (selectedOverview != NULL && pixelView->smallMultiplesViewSet()) { QtGlSceneZoomAndPanAnimator zoomAndPanAnimator(glWidget, selectedOverview->getBoundingBox()); zoomAndPanAnimator.animateZoomAndPan(); pixelView->switchFromSmallMultiplesToDetailView(selectedOverview); selectedOverview = NULL; } else if (!pixelView->smallMultiplesViewSet() && pixelView->getOverviews().size() > 1) { pixelView->switchFromDetailViewToSmallMultiples(); QtGlSceneZoomAndPanAnimator zoomAndPanAnimator(glWidget, pixelView->getSmallMultiplesViewBoundingBox()); zoomAndPanAnimator.animateZoomAndPan(); pixelView->centerView(); } return true; } return false; }
bool ParallelCoordsAxisBoxPlot::eventFilter(QObject *widget, QEvent *e) { GlMainWidget *glWidget = dynamic_cast<GlMainWidget *>(widget); if(!glWidget) return false; initOrUpdateBoxPlots(); if (e->type() == QEvent::MouseMove) { QMouseEvent *me = (QMouseEvent *) e; int x = glWidget->width() - me->x(); int y = me->y(); Coord screenCoords(x, y, 0.0f); Coord sceneCoords(glWidget->getScene()->getLayer("Main")->getCamera().viewportTo3DWorld(glWidget->screenToViewport(screenCoords))); selectedAxis = parallelView->getAxisUnderPointer(me->x(), me->y()); if (selectedAxis != NULL && dynamic_cast<QuantitativeParallelAxis *>(selectedAxis)) { if (axisBoxPlotMap.find(static_cast<QuantitativeParallelAxis *>(selectedAxis)) != axisBoxPlotMap.end()) if (parallelView->getLayoutType() == ParallelCoordinatesDrawing::CIRCULAR) { rotateVector(sceneCoords, -(selectedAxis->getRotationAngle()), Z_ROT); } axisBoxPlotMap[static_cast<QuantitativeParallelAxis *>(selectedAxis)]->setHighlightRangeIfAny(sceneCoords); } parallelView->refresh(); return true; } if (e->type() == QEvent::MouseButtonPress) { return false; } if (e->type() == QEvent::MouseButtonRelease) { if (selectedAxis != NULL && dynamic_cast<QuantitativeParallelAxis *>(selectedAxis)) { Observable::holdObservers(); if (axisBoxPlotMap.find(static_cast<QuantitativeParallelAxis *>(selectedAxis)) != axisBoxPlotMap.end()) parallelView->highlightDataInAxisBoxPlotRange(static_cast<QuantitativeParallelAxis *>(selectedAxis)); Observable::unholdObservers(); selectedAxis = NULL; parallelView->refresh(); return true; } } return false; }
bool ScatterPlot2DViewNavigator::eventFilter(QObject *widget, QEvent *e) { if (glWidget == nullptr) { glWidget = static_cast<GlMainWidget *>(widget); } if (glWidget != nullptr) { if (!glWidget->hasMouseTracking()) { glWidget->setMouseTracking(true); } if (!scatterPlot2dView->matrixViewSet() && !scatterPlot2dView->interactorsEnabled()) { scatterPlot2dView->toggleInteractors(true); } if (e->type() == QEvent::MouseMove && scatterPlot2dView->matrixViewSet()) { QMouseEvent *me = static_cast<QMouseEvent *>(e); int x = glWidget->width() - me->x(); int y = me->y(); Coord screenCoords(x, y, 0.0f); Coord sceneCoords(glWidget->getScene()->getGraphCamera().viewportTo3DWorld( glWidget->screenToViewport(screenCoords))); selectedScatterPlotOverview = getOverviewUnderPointer(sceneCoords); return true; } else if (e->type() == QEvent::MouseButtonDblClick) { if (selectedScatterPlotOverview != nullptr && !selectedScatterPlotOverview->overviewGenerated()) { scatterPlot2dView->generateScatterPlot(selectedScatterPlotOverview, glWidget); glWidget->draw(); } else if (selectedScatterPlotOverview != nullptr && scatterPlot2dView->matrixViewSet()) { QtGlSceneZoomAndPanAnimator zoomAndPanAnimator( glWidget, selectedScatterPlotOverview->getBoundingBox()); zoomAndPanAnimator.animateZoomAndPan(); scatterPlot2dView->switchFromMatrixToDetailView(selectedScatterPlotOverview, true); selectedScatterPlotOverview = nullptr; } else if (!scatterPlot2dView->matrixViewSet()) { scatterPlot2dView->switchFromDetailViewToMatrixView(); QtGlSceneZoomAndPanAnimator zoomAndPanAnimator(glWidget, scatterPlot2dView->getMatrixBoundingBox()); zoomAndPanAnimator.animateZoomAndPan(); } return true; } } return false; }
Ogre::Vector3 Chart::chartToScreen(const Ogre::Vector2 &coords) const { if (coords.x < mMin.x || coords.y < mMin.y || coords.x > mMax.x || coords.y > mMax.y) { OGRE_EXCEPT(Ogre::Exception::ERR_INVALIDPARAMS, "data point " + Ogre::StringConverter::toString(coords) + " are out of chart's bounds!", "Chart::chartToScreen()"); } // const Ogre::Real screenWidth = Ogre::Root::getSingletonPtr()->getAutoCreatedWindow()->getWidth(); // const Ogre::Real screenHeight = Ogre::Root::getSingletonPtr()->getAutoCreatedWindow()->getHeight(); // move to chart's offset (0,0) // NOTE: 0.0025 places the points right by the side of the main axes, instead of ON them. Ogre::Vector2 screenCoords(mOffset + mPadding.x + 0.0025); // move to the data point on chart screenCoords += ((coords - mMin) * mChartUnitStep); // Ogre::LogManager::getSingletonPtr()->logMessage("screenCoords: " + Ogre::StringConverter::toString(screenCoords)); return Ogre::Vector3(screenCoords.x, screenCoords.y, 0.0); }
void BitmapFont::drawText(const std::string& text, const Point& startPos) { Size boxSize = g_painter->getResolution() - startPos.toSize(); Rect screenCoords(startPos, boxSize); drawText(text, screenCoords, Fw::AlignTopLeft); }
void Font::drawText(const std::string& text, const Point& startPos) { Size boxSize = g_graphics.getViewportSize() - startPos.toSize(); Rect screenCoords(startPos, boxSize); drawText(text, screenCoords, Fw::AlignTopLeft); }