17 #ifndef SELECTIONMANAGER_H
18 #define SELECTIONMANAGER_H
20 #include "pencildef.h"
21 #include "basemanager.h"
23 #include "vertexref.h"
24 #include "vectorselection.h"
43 void workingLayerChanged(
Layer*)
override;
47 void updatePolygons();
48 void updateTransformedSelection() { mTransformedSelection = mTempTransformedSelection; }
53 QPointF getTransformOffset() {
return mOffset; }
54 QPointF offsetFromAspectRatio(qreal offsetX, qreal offsetY);
58 void setSelection(
QRectF rect,
bool roundPixels=
false);
62 MoveMode getMoveModeForSelectionAnchor(
QPointF pos);
63 MoveMode validateMoveMode(
QPointF pos);
64 MoveMode getMoveMode()
const {
return mMoveMode; }
65 void setMoveMode(MoveMode moveMode) { mMoveMode = moveMode; }
67 bool somethingSelected()
const {
return mSomethingSelected; }
69 void calculateSelectionTransformation();
70 void adjustSelection(
const QPointF& currentPoint, qreal offsetX, qreal offsetY, qreal rotationOffset,
int rotationIncrement=0);
71 MoveMode moveModeForAnchorInRange(
QPointF lastPos);
72 void setCurves(
QList<int> curves) { mClosestCurves = curves; }
78 const QList<int> closestCurves() {
return mClosestCurves; }
81 QTransform selectionTransform() {
return mSelectionTransform; }
82 void setSelectionTransform(
QTransform transform) { mSelectionTransform = transform; }
83 void resetSelectionTransform();
85 bool transformHasBeenModified();
86 bool rotationHasBeenModified();
94 void resetSelectionProperties();
95 void deleteSelection();
97 bool isOutsideSelectionArea(
QPointF point);
99 qreal selectionTolerance()
const;
102 QPolygonF currentSelectionPolygonF()
const {
return mCurrentSelectionPolygonF; }
103 QPolygonF lastSelectionPolygonF()
const {
return mLastSelectionPolygonF; }
105 void setSomethingSelected(
bool selected) { mSomethingSelected = selected; }
109 const QRectF& mySelectionRect() {
return mSelection; }
110 const QRectF& myTempTransformedSelectionRect() {
return mTempTransformedSelection; }
111 const QRectF& myTransformedSelectionRect() {
return mTransformedSelection; }
112 const qreal& myRotation() {
return mRotatedAngle; }
114 void setSelectionRect(
const QRectF& rect) { mSelection = rect; }
115 void setTempTransformedSelectionRect(
const QRectF& rect) { mTempTransformedSelection = rect; }
116 void setTransformedSelectionRect(
const QRectF& rect) { mTransformedSelection = rect; }
117 void setRotation(
const qreal& rotation) { mRotatedAngle = rotation; }
121 void selectionChanged();
122 void needPaintAndApply();
123 void needDeleteSelection();
126 int constrainRotationToAngle(
const qreal& rotatedAngle,
const int& rotationIncrement)
const;
129 QRectF mTempTransformedSelection;
130 QRectF mTransformedSelection;
131 qreal mRotatedAngle = 0.0;
133 bool mSomethingSelected =
false;
141 MoveMode mMoveMode = MoveMode::NONE;
143 const qreal mSelectionTolerance = 8.0;
146 #endif // SELECTIONMANAGER_H
void resetSelectionTransformProperties()
SelectionManager::resetSelectionTransformProperties should be used whenever translate, rotate, transform, scale has been applied to a selection, but don't want to reset size nor position.
void flipSelection(bool flipVertical)
ScribbleArea::flipSelection flip selection along the X or Y axis.