diff options
| author | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
|---|---|---|
| committer | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
| commit | 7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch) | |
| tree | 4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/fpoint.cpp | |
| download | scribus-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/fpoint.cpp')
| -rw-r--r-- | scribus/fpoint.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/scribus/fpoint.cpp b/scribus/fpoint.cpp new file mode 100644 index 0000000..9298304 --- /dev/null +++ b/scribus/fpoint.cpp @@ -0,0 +1,83 @@ +/* +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. +*/ +/*************************************************************************** + fpoint.cpp - description + ------------------- + begin : Mit Jul 24 2002 + copyright : (C) 2002 by Franz Schmid + email : Franz.Schmid@altmuehlnet.de + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ + +#include "fpoint.h" + +#include <QMatrix> + +//Create transformed point +FPoint::FPoint(const double x, const double y, const double dx, const double dy, const double rot, const double sx, const double sy, const bool invert) + : xp(x), yp(y) +{ + transform(dx,dy,rot,sx,sy,invert); +} + +bool FPoint::operator==(const FPoint &rhs) const +{ + return qAbs(xp-rhs.xp) < 1E-10 && qAbs(yp-rhs.yp) < 1E-10; +} + +bool FPoint::operator!=(const FPoint &rhs) const +{ + return qAbs(xp-rhs.xp) > 1E-10 || qAbs(yp-rhs.yp) > 1E-10; +} + +void FPoint::transform(const double dx, const double dy, const double rot, const double sx, const double sy, const bool invert) +{ + QMatrix ma; + ma.translate(dx, dy); + ma.scale(sx, sy); + ma.rotate(rot); + if (invert) + ma = ma.inverted(); + //save new value as old one is used on next line + double newxp = ma.m11() * xp + ma.m21() * yp + ma.dx(); + yp = ma.m22() * yp + ma.m12() * xp + ma.dy(); + xp = newxp; +} + +FPoint FPoint::transformPoint(const QMatrix& m, const bool invert) const +{ + QMatrix ma; + if (invert) + ma = m.inverted(); + else + ma = m; + QPointF p(xp, yp); + p = ma.map(p); + return FPoint(p.x(), p.y()); +} + + +FPoint FPoint::transformPoint(const double dx, const double dy, const double rot, const double sx, const double sy, const bool invert) const +{ + QMatrix ma; + ma.translate(dx, dy); + ma.scale(sx, sy); + ma.rotate(rot); + if (invert) + ma = ma.inverted(); + double x = ma.m11() * xp + ma.m21() * yp + ma.dx(); + double y = ma.m22() * yp + ma.m12() * xp + ma.dy(); + return FPoint(x, y); +} |
