EnhancedGraphicsView.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * @package ArmarXGui::EnhancedGraphicsView
17  * @author Raphael Grimm ( raphael dot grimm at kit dot edu )
18  * @date 2017
19  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20  * GNU General Public License
21  */
22 #include "EnhancedGraphicsView.h"
23 
24 #include <QGraphicsItem>
25 
26 namespace armarx
27 {
28 
29  Qt::KeyboardModifier
31  {
32  return rotationModifier;
33  }
34 
35  qreal
37  {
38  return rotationFactor;
39  }
40 
41  Qt::KeyboardModifier
43  {
44  return zoomModifier;
45  }
46 
47  qreal
49  {
50  return zoomFacor;
51  }
52 
53  Qt::KeyboardModifier
55  {
56  return draggingModifier;
57  }
58 
59  Qt::MouseButton
61  {
62  return draggingButton;
63  }
64 
65  void
67  {
69  }
70 
71  void
73  {
74  rotationEnabled = !disabled;
75  }
76 
77  void
79  {
80  rotationModifier = mod;
81  }
82 
83  void
85  {
86  rotationFactor = factor;
87  }
88 
89  void
91  {
93  }
94 
95  void
97  {
98  zoomEnabled = !disabled;
99  }
100 
101  void
103  {
104  zoomModifier = mod;
105  }
106 
107  void
109  {
110  zoomFacor = factor;
111  }
112 
113  void
115  {
117  }
118 
119  void
121  {
122  draggingEnabled = !disabled;
123  }
124 
125  void
127  {
128  draggingModifier = mod;
129  }
130 
131  void
133  {
134  draggingButton = button;
135  }
136 
137  void
139  {
140  for (QGraphicsItem* i : items())
141  {
142  i->setVisible(visible);
143  }
144  }
145 
146  void
148  {
149  draggingStartPosition = mapToScene(e->pos());
150  QGraphicsView::mousePressEvent(e);
151  }
152 
153  void
155  {
156  if ((e->modifiers() & draggingModifier).testFlag(draggingModifier) &&
157  (e->buttons() & draggingButton).testFlag(draggingButton))
158  {
159  const auto oldAnchor = transformationAnchor();
160  setTransformationAnchor(QGraphicsView::NoAnchor);
161 
162  const QPointF vector = mapToScene(e->pos()) - draggingStartPosition;
163  translate(vector.x(), vector.y());
164  draggingStartPosition = mapToScene(e->pos());
165  e->accept();
166 
167  setTransformationAnchor(oldAnchor);
168  return;
169  }
170  QGraphicsView::mouseMoveEvent(e);
171  }
172 
173  void
175  {
176  bool used = false;
177  if ((e->modifiers() & zoomModifier).testFlag(zoomModifier))
178  {
179  const auto oldAnchor = transformationAnchor();
180  setTransformationAnchor(QGraphicsView::NoAnchor);
181 
182  float factor = std::pow(zoomFacor, e->delta() < 0 ? -1 : +1);
183  scale(factor, factor);
184  used = true;
185 
186  setTransformationAnchor(oldAnchor);
187  }
188  if ((e->modifiers() & rotationModifier).testFlag(rotationModifier))
189  {
190  const auto oldAnchor = transformationAnchor();
191  setTransformationAnchor(QGraphicsView::NoAnchor);
192 
193  rotate(e->delta() * rotationFactor);
194  used = true;
195 
196  setTransformationAnchor(oldAnchor);
197  }
198  if (used)
199  {
200  e->accept();
201  }
202  else
203  {
204  QGraphicsView::wheelEvent(e);
205  }
206  }
207 
208 } // namespace armarx
armarx::EnhancedGraphicsView::getZoomKeyboardModifier
Qt::KeyboardModifier getZoomKeyboardModifier() const
Definition: EnhancedGraphicsView.cpp:42
armarx::EnhancedGraphicsView::setZoomEnabled
void setZoomEnabled(bool enabled=true)
Definition: EnhancedGraphicsView.cpp:90
armarx::EnhancedGraphicsView::setRotationKeyboardModifier
void setRotationKeyboardModifier(Qt::KeyboardModifier mod)
Definition: EnhancedGraphicsView.cpp:78
armarx::EnhancedGraphicsView::setRotationFactor
void setRotationFactor(qreal factor)
Definition: EnhancedGraphicsView.cpp:84
armarx::EnhancedGraphicsView::getZoomFactor
qreal getZoomFactor() const
Definition: EnhancedGraphicsView.cpp:48
armarx::EnhancedGraphicsView::draggingEnabled
bool draggingEnabled
Definition: EnhancedGraphicsView.h:89
armarx::EnhancedGraphicsView::zoomEnabled
bool zoomEnabled
Definition: EnhancedGraphicsView.h:85
armarx::EnhancedGraphicsView::mouseMoveEvent
void mouseMoveEvent(QMouseEvent *e) override
Definition: EnhancedGraphicsView.cpp:154
armarx::EnhancedGraphicsView::rotationEnabled
bool rotationEnabled
Definition: EnhancedGraphicsView.h:81
armarx::EnhancedGraphicsView::zoomFacor
qreal zoomFacor
Definition: EnhancedGraphicsView.h:87
armarx::EnhancedGraphicsView::draggingButton
Qt::MouseButton draggingButton
Definition: EnhancedGraphicsView.h:91
armarx::EnhancedGraphicsView::setZoomDisabled
void setZoomDisabled(bool disabled=true)
Definition: EnhancedGraphicsView.cpp:96
armarx::EnhancedGraphicsView::setZoomKeyboardModifier
void setZoomKeyboardModifier(Qt::KeyboardModifier mod)
Definition: EnhancedGraphicsView.cpp:102
armarx::EnhancedGraphicsView::setDraggingDisabled
void setDraggingDisabled(bool disabled=true)
Definition: EnhancedGraphicsView.cpp:120
armarx::EnhancedGraphicsView::mousePressEvent
void mousePressEvent(QMouseEvent *e) override
Definition: EnhancedGraphicsView.cpp:147
enabled
std::atomic< bool > * enabled
Definition: RemoteGuiWidgetController.cpp:75
armarx::EnhancedGraphicsView::rotationFactor
qreal rotationFactor
Definition: EnhancedGraphicsView.h:83
armarx::EnhancedGraphicsView::rotationModifier
Qt::KeyboardModifier rotationModifier
Definition: EnhancedGraphicsView.h:82
armarx::EnhancedGraphicsView::getRotationFactor
qreal getRotationFactor() const
Definition: EnhancedGraphicsView.cpp:36
EnhancedGraphicsView.h
armarx::EnhancedGraphicsView::getDraggingMouseButton
Qt::MouseButton getDraggingMouseButton() const
Definition: EnhancedGraphicsView.cpp:60
armarx::EnhancedGraphicsView::setRotationDisabled
void setRotationDisabled(bool disabled=true)
Definition: EnhancedGraphicsView.cpp:72
armarx::EnhancedGraphicsView::setDraggingKeyboardModifier
void setDraggingKeyboardModifier(Qt::KeyboardModifier mod)
Definition: EnhancedGraphicsView.cpp:126
armarx::EnhancedGraphicsView::zoomModifier
Qt::KeyboardModifier zoomModifier
Definition: EnhancedGraphicsView.h:86
armarx::EnhancedGraphicsView::setZoomFactor
qreal setZoomFactor()
armarx::EnhancedGraphicsView::wheelEvent
void wheelEvent(QWheelEvent *e) override
Definition: EnhancedGraphicsView.cpp:174
armarx::EnhancedGraphicsView::setDraggingMouseButton
void setDraggingMouseButton(Qt::MouseButton button)
Definition: EnhancedGraphicsView.cpp:132
armarx::EnhancedGraphicsView::setRotationEnabled
void setRotationEnabled(bool enabled=true)
Definition: EnhancedGraphicsView.cpp:66
armarx::EnhancedGraphicsView::draggingModifier
Qt::KeyboardModifier draggingModifier
Definition: EnhancedGraphicsView.h:90
armarx::EnhancedGraphicsView::setDraggingEnabled
void setDraggingEnabled(bool enabled=true)
Definition: EnhancedGraphicsView.cpp:114
armarx::EnhancedGraphicsView::draggingStartPosition
QPointF draggingStartPosition
Definition: EnhancedGraphicsView.h:92
armarx::EnhancedGraphicsView::setAllVisible
void setAllVisible(bool visible)
Definition: EnhancedGraphicsView.cpp:138
armarx::EnhancedGraphicsView::getDraggingKeyboardModifier
Qt::KeyboardModifier getDraggingKeyboardModifier() const
Definition: EnhancedGraphicsView.cpp:54
armarx::EnhancedGraphicsView::getRotationKeyboardModifier
Qt::KeyboardModifier getRotationKeyboardModifier() const
Definition: EnhancedGraphicsView.cpp:30
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27