summaryrefslogtreecommitdiffstats
path: root/scribus/canvasgesture_resize.h
diff options
context:
space:
mode:
authorcraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
committercraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
commit7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch)
tree4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/canvasgesture_resize.h
downloadscribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz
scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz
scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/canvasgesture_resize.h')
-rw-r--r--scribus/canvasgesture_resize.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/scribus/canvasgesture_resize.h b/scribus/canvasgesture_resize.h
new file mode 100644
index 0000000..bf33191
--- /dev/null
+++ b/scribus/canvasgesture_resize.h
@@ -0,0 +1,90 @@
+/*
+ For general Scribus (>=1.3.2) copyright and licensing information please refer
+ to the COPYING file provided with the program. Following this notice may exist
+ a copyright and/or license notice that predates the release of Scribus 1.3.2
+ for which a new license (GPL+exception) is in place.
+ */
+/***************************************************************************
+* *
+* This program is free software; you can redistribute it and/or modify *
+* it under the terms of the GNU General Public License as published by *
+* the Free Software Foundation; either version 2 of the License, or *
+* (at your option) any later version. *
+* *
+***************************************************************************/
+
+
+
+#ifndef CANVAS_GESTURE_RESIZE_H
+#define CANVAS_GESTURE_RESIZE_H
+
+#include <QRect>
+
+#include "scribusapi.h"
+#include "canvas.h"
+#include "canvasgesture.h"
+#include "canvasmode.h"
+
+class QDragEnterEvent;
+class QDragMoveEvent;
+class QDragLeaveEvent;
+class QDropEvent;
+class QEvent;
+class QInputMethodEvent;
+class QMouseEvent;
+class QKeyEvent;
+class QPainter;
+class QRubberBand;
+class PageItem;
+class UndoTransaction;
+
+/**
+ This class realizes resizing of selected items on behalf of its parent mode.
+ The user presses the mousebutton at one of the framehandles, drags it to the end point
+ and releases the mousebutton. The item or group selection is resized to the new dimensions.
+ During the move the selected items are highlighted.
+ */
+class SCRIBUS_API ResizeGesture : public CanvasGesture
+{
+public:
+ ResizeGesture (CanvasMode* parent);
+
+ /**
+ Prepares the gesture for resizing the selection
+ */
+ void prepare(Canvas::FrameHandle framehandle = Canvas::SOUTHEAST);
+ void clear();
+
+ virtual void drawControls(QPainter* p);
+ virtual void activate(bool);
+ virtual void deactivate(bool);
+ virtual void mouseReleaseEvent(QMouseEvent *m);
+ virtual void mouseMoveEvent(QMouseEvent *m);
+ /**
+ This method only sets the m_handle field.
+ If the correct value is set by prepare() (default = SOUTHEAST),
+ it's not necessary to call this method.
+ */
+ virtual void mousePressEvent(QMouseEvent *m);
+
+ Canvas::FrameHandle frameHandle() const { return m_handle; }
+
+private:
+ void adjustBounds(QMouseEvent *m);
+ void doResize(bool scaleContent);
+ Canvas::FrameHandle m_handle;
+ double m_rotation;
+ double m_origRatio;
+ QPoint m_mousePressPoint;
+ QRectF m_bounds;
+ QRectF m_origBounds;
+ QRectF m_mousePressBounds;
+ UndoTransaction* m_transactionStarted;
+ double m_extraWidth;
+ double m_extraHeight;
+ double m_extraX;
+ double m_extraY;
+};
+
+
+#endif