All Classes Namespaces Functions Variables Enumerations Properties Pages
selecttool.h
1 /*
2 
3 Pencil2D - Traditional Animation Software
4 Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon
5 Copyright (C) 2012-2020 Matthew Chiawen Chang
6 
7 This program is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public License
9 as published by the Free Software Foundation; version 2 of the License.
10 
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15 
16 */
17 
18 #ifndef SELECTTOOL_H
19 #define SELECTTOOL_H
20 
21 #include "basetool.h"
22 
23 class Layer;
24 class SelectionManager;
25 
26 class SelectTool : public BaseTool
27 {
28  Q_OBJECT
29 
30 public:
31  explicit SelectTool(QObject* parent = 0);
32  ToolType type() override { return SELECT; }
33  void loadSettings() override;
34  QCursor cursor() override;
35 
36 private:
37 
38  void pointerPressEvent(PointerEvent*) override;
39  void pointerReleaseEvent(PointerEvent*) override;
40  void pointerMoveEvent(PointerEvent*) override;
41 
42  bool keyPressEvent(QKeyEvent* event) override;
43 
44  void manageSelectionOrigin(QPointF currentPoint, QPointF originPoint);
45  void controlOffsetOrigin(QPointF currentPoint, QPointF anchorPoint);
46 
47  void beginSelection();
48  void keepSelection();
49 
50  QPointF offsetFromPressPos();
51 
52  inline bool isSelectionPointValid() { return mAnchorOriginPoint != getLastPoint(); }
53  bool maybeDeselect();
54 
55  // Store selection origin so we can calculate
56  // the selection rectangle in mousePressEvent.
57  QPointF mAnchorOriginPoint;
58  MoveMode mMoveMode;
59  Layer* mCurrentLayer = nullptr;
60 };
61 
62 #endif
virtual bool event(QEvent *e)
void manageSelectionOrigin(QPointF currentPoint, QPointF originPoint)
SelectTool::manageSelectionOrigin switches anchor point when crossing threshold.
Definition: selecttool.cpp:207
Q_OBJECTQ_OBJECT
Definition: layer.h:39
void keepSelection()
SelectTool::keepSelection Keep selection rect and normalize if invalid.
Definition: selecttool.cpp:161
QObject * parent() const const