summaryrefslogtreecommitdiffstats
path: root/scribus
diff options
context:
space:
mode:
authorjghali <jghali@11d20701-8431-0410-a711-e3c959e3b870>2012-04-19 21:22:11 +0000
committerjghali <jghali@11d20701-8431-0410-a711-e3c959e3b870>2012-04-19 21:22:11 +0000
commitd16f57ed50dad2ddd0203078e8e3853c57181e47 (patch)
treedc7f91ed9af48dee94c9836fc00e837613ccd1f5 /scribus
parent983b23ad11dee69b5221e7650d67cbff91d1f69d (diff)
downloadscribus-d16f57ed50dad2ddd0203078e8e3853c57181e47.tar.gz
scribus-d16f57ed50dad2ddd0203078e8e3853c57181e47.tar.xz
scribus-d16f57ed50dad2ddd0203078e8e3853c57181e47.zip
#10677: snap are of by 0.353 mm on horizontal guides
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17462 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus')
-rw-r--r--scribus/canvasmode_normal.cpp13
-rw-r--r--scribus/pageitem_line.cpp16
-rw-r--r--scribus/pageitem_line.h6
3 files changed, 34 insertions, 1 deletions
diff --git a/scribus/canvasmode_normal.cpp b/scribus/canvasmode_normal.cpp
index 091d8c9..8ae864c 100644
--- a/scribus/canvasmode_normal.cpp
+++ b/scribus/canvasmode_normal.cpp
@@ -41,6 +41,7 @@
#include "fpointarray.h"
#include "hyphenator.h"
#include "insertTable.h"
+#include "pageitem_line.h"
#include "pageitem_textframe.h"
#include "pageselector.h"
#include "prefscontext.h"
@@ -395,6 +396,18 @@ void CanvasMode_Normal::mouseMoveEvent(QMouseEvent *m)
m_objectDeltaPos.setXY(dX, dY);
m_doc->m_Selection->setGroupRect();
m_doc->m_Selection->getGroupRect(&gx, &gy, &gw, &gh);
+ // #10677 : temporary hack : we need to introduce the
+ // concept of item snapping points to handle better
+ // the various types of items
+ if (currItem->isLine())
+ {
+ QPointF startPoint = currItem->asLine()->startPoint();
+ QPointF endPoint = currItem->asLine()->endPoint();
+ gx = qMin(startPoint.x(), endPoint.x());
+ gy = qMin(startPoint.y(), endPoint.y());
+ gw = fabs(startPoint.x() - endPoint.x());
+ gh = fabs(startPoint.y() - endPoint.y());
+ }
if (m_doc->SnapGuides)
{
double nx = gx + m_objectDeltaPos.x();
diff --git a/scribus/pageitem_line.cpp b/scribus/pageitem_line.cpp
index 5914fdd..c7bfb19 100644
--- a/scribus/pageitem_line.cpp
+++ b/scribus/pageitem_line.cpp
@@ -21,6 +21,9 @@ for which a new license (GPL+exception) is in place.
* *
***************************************************************************/
+#if defined(_MSC_VER)
+#define _USE_MATH_DEFINES
+#endif
#include <cmath>
#include <cassert>
@@ -101,3 +104,16 @@ QString PageItem_Line::infoDescription()
{
return QString();
}
+
+QPointF PageItem_Line::startPoint()
+{
+ return QPointF(Xpos, Ypos);
+}
+
+QPointF PageItem_Line::endPoint()
+{
+ double rot = this->rotation();
+ double x = Xpos + Width * cos(rot * M_PI / 180.0);
+ double y = Ypos + Width * sin(rot * M_PI / 180.0);
+ return QPointF(x, y);
+}
diff --git a/scribus/pageitem_line.h b/scribus/pageitem_line.h
index 3ecd086..68fac92 100644
--- a/scribus/pageitem_line.h
+++ b/scribus/pageitem_line.h
@@ -22,8 +22,9 @@ for which a new license (GPL+exception) is in place.
#ifndef PAGEITEMLINE_H
#define PAGEITEMLINE_H
-#include <QString>
+#include <QPointF>
#include <QRectF>
+#include <QString>
#include "scribusapi.h"
#include "pageitem.h"
@@ -44,6 +45,9 @@ public:
virtual void applicableActions(QStringList& actionList);
virtual QString infoDescription();
+
+ QPointF startPoint();
+ QPointF endPoint();
protected:
virtual void DrawObj_Item(ScPainter *p, QRectF e, double sc);