/** * @brief MoveTool::storeClosestVectorCurve * stores the curves closest to the mouse position in mClosestCurves */ void MoveTool::storeClosestVectorCurve(Layer* layer) { auto layerVector = static_cast<LayerVector*>(layer); VectorImage* pVecImg = layerVector->getLastVectorImageAtFrame(mEditor->currentFrame(), 0); mScribbleArea->mClosestCurves = pVecImg->getCurvesCloseTo(getCurrentPoint(), mScribbleArea->mSelectionTolerance / mEditor->view()->scaling()); }
void MoveTool::mouseMoveEvent( QMouseEvent *event ) { Layer* layer = mEditor->layers()->currentLayer(); if ( layer == NULL ) { return; } if ( layer->type() != Layer::BITMAP && layer->type() != Layer::VECTOR ) { return; } if ( event->buttons() & Qt::LeftButton ) // the user is also pressing the mouse (dragging) { if ( mScribbleArea->somethingSelected ) // there is something selected { if ( event->modifiers() != Qt::ShiftModifier ) // (and the user doesn't press shift) { switch ( mScribbleArea->mMoveMode ) { case ScribbleArea::MIDDLE: if ( QLineF( getLastPressPixel(), getCurrentPixel() ).length() > 4 ) { mScribbleArea->myTempTransformedSelection = mScribbleArea->myTransformedSelection.translated( mScribbleArea->mOffset ); } break; case ScribbleArea::TOPRIGHT: mScribbleArea->myTempTransformedSelection = mScribbleArea->myTransformedSelection.adjusted( 0, mScribbleArea->mOffset.y(), mScribbleArea->mOffset.x(), 0 ); break; case ScribbleArea::TOPLEFT: mScribbleArea->myTempTransformedSelection = mScribbleArea->myTransformedSelection.adjusted( mScribbleArea->mOffset.x(), mScribbleArea->mOffset.y(), 0, 0 ); break; // TOPRIGHT XXX case ScribbleArea::BOTTOMLEFT: mScribbleArea->myTempTransformedSelection = mScribbleArea->myTransformedSelection.adjusted( mScribbleArea->mOffset.x(), 0, 0, mScribbleArea->mOffset.y() ); break; case ScribbleArea::BOTTOMRIGHT: mScribbleArea->myTempTransformedSelection = mScribbleArea->myTransformedSelection.adjusted( 0, 0, mScribbleArea->mOffset.x(), mScribbleArea->mOffset.y() ); break; case ScribbleArea::ROTATION: mScribbleArea->myTempTransformedSelection = mScribbleArea->myTransformedSelection; // @ necessary? mScribbleArea->myRotatedAngle = getCurrentPixel().x() - getLastPressPixel().x(); //qDebug() << "rotation" << m_pScribbleArea->myRotatedAngle; break; } mScribbleArea->calculateSelectionTransformation(); mScribbleArea->update(); mScribbleArea->setAllDirty(); } } else // there is nothing selected { // we switch to the select tool mEditor->tools()->setCurrentTool( SELECT ); mScribbleArea->mMoveMode = ScribbleArea::MIDDLE; mScribbleArea->mySelection.setTopLeft( getLastPoint() ); mScribbleArea->mySelection.setBottomRight( getLastPoint() ); mScribbleArea->setSelection( mScribbleArea->mySelection, true ); } } else // the user is moving the mouse without pressing it { if ( layer->type() == Layer::VECTOR ) { auto layerVector = static_cast< LayerVector* >( layer ); VectorImage* pVecImg = layerVector->getLastVectorImageAtFrame( mEditor->currentFrame(), 0 ); mScribbleArea->mClosestCurves = pVecImg->getCurvesCloseTo( getCurrentPoint(), mScribbleArea->tol / mEditor->view()->scaling() ); } mScribbleArea->update(); } }