23 #ifndef QGLVIEWER_MANIPULATED_FRAME_H
24 #define QGLVIEWER_MANIPULATED_FRAME_H
99 friend class ::QGLViewer;
107 virtual ~ManipulatedFrame() {}
109 ManipulatedFrame(
const ManipulatedFrame& mf);
110 ManipulatedFrame& operator=(
const ManipulatedFrame& mf);
142 void setRotationSensitivity(qreal sensitivity) { rotationSensitivity_ = sensitivity; }
144 void setTranslationSensitivity(qreal sensitivity) { translationSensitivity_ = sensitivity; }
146 void setSpinningSensitivity(qreal sensitivity) { spinningSensitivity_ = sensitivity; }
148 void setWheelSensitivity(qreal sensitivity) { wheelSensitivity_ = sensitivity; }
150 void setZoomSensitivity(qreal sensitivity) { zoomSensitivity_ = sensitivity; }
161 qreal rotationSensitivity()
const {
return rotationSensitivity_; }
180 qreal translationSensitivity()
const {
return translationSensitivity_; }
192 qreal spinningSensitivity()
const {
return spinningSensitivity_; }
201 qreal zoomSensitivity()
const {
return zoomSensitivity_; }
209 qreal wheelSensitivity()
const {
return wheelSensitivity_; }
222 bool isSpinning()
const {
return isSpinning_; }
231 Quaternion spinningQuaternion()
const {
return spinningQuaternion_; }
235 void setSpinningQuaternion(
const Quaternion& spinningQuaternion) { spinningQuaternion_ = spinningQuaternion; }
236 virtual void startSpinning(
int updateInterval);
239 virtual void stopSpinning() { spinningTimer_.stop(); isSpinning_ =
false; }
249 virtual void mousePressEvent (QMouseEvent*
const event,
Camera*
const camera);
250 virtual void mouseMoveEvent (QMouseEvent*
const event,
Camera*
const camera);
251 virtual void mouseReleaseEvent (QMouseEvent*
const event,
Camera*
const camera);
252 virtual void mouseDoubleClickEvent(QMouseEvent*
const event,
Camera*
const camera);
253 virtual void wheelEvent (QWheelEvent*
const event,
Camera*
const camera);
259 bool isManipulated()
const;
274 virtual void checkIfGrabsMouse(
int x,
int y,
const Camera*
const camera);
280 virtual QDomElement domElement(
const QString& name, QDomDocument& document)
const;
282 virtual void initFromDOMElement(
const QDomElement& element);
287 Quaternion deformedBallQuaternion(
int x,
int y, qreal cx, qreal cy,
const Camera*
const camera);
292 virtual void startAction(
int ma,
bool withConstraint=
true);
293 void computeMouseSpeed(
const QMouseEvent*
const e);
294 int mouseOriginalDirection(
const QMouseEvent*
const e);
298 qreal deltaWithPrevPos(QMouseEvent*
const event,
Camera*
const camera)
const;
300 qreal wheelDelta(
const QWheelEvent* event)
const;
303 QPoint prevPos_, pressPos_;
306 void zoom(qreal delta,
const Camera *
const camera);
312 qreal rotationSensitivity_;
313 qreal translationSensitivity_;
314 qreal spinningSensitivity_;
315 qreal wheelSensitivity_;
316 qreal zoomSensitivity_;
319 QTime last_move_time;
323 QTimer spinningTimer_;
330 bool keepsGrabbingMouse_;
335 #endif // QGLVIEWER_MANIPULATED_FRAME_H