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 = nullptr);
32  ToolType type() override { return SELECT; }
33  void loadSettings() override;
34  QCursor cursor() override;
35 
36  void resetToDefault() override;
37  void setShowSelectionInfo(const bool b) override;
38 
39 private:
40 
41  void pointerPressEvent(PointerEvent*) override;
42  void pointerReleaseEvent(PointerEvent*) override;
43  void pointerMoveEvent(PointerEvent*) override;
44 
45  bool keyPressEvent(QKeyEvent* event) override;
46 
47  void manageSelectionOrigin(QPointF currentPoint, QPointF originPoint);
48  void controlOffsetOrigin(QPointF currentPoint, QPointF anchorPoint);
49 
50  void beginSelection();
51  void keepSelection();
52 
53  QPointF offsetFromPressPos();
54 
55  inline bool isSelectionPointValid() { return mAnchorOriginPoint != getLastPoint(); }
56  bool maybeDeselect();
57 
58  // Store selection origin so we can calculate
59  // the selection rectangle in mousePressEvent.
60  QPointF mAnchorOriginPoint;
61  MoveMode mMoveMode;
62  Layer* mCurrentLayer = nullptr;
63 };
64 
65 #endif
virtual bool event(QEvent *e)
void manageSelectionOrigin(QPointF currentPoint, QPointF originPoint)
SelectTool::manageSelectionOrigin switches anchor point when crossing threshold.
Definition: selecttool.cpp:233
Q_OBJECTQ_OBJECT
Definition: layer.h:38
void keepSelection()
SelectTool::keepSelection Keep selection rect and normalize if invalid.
Definition: selecttool.cpp:187
QObject * parent() const const