diff options
Diffstat (limited to 'Build/source/texk/lcdf-typetools/lcdf-typetools-src/include/lcdf/transform.hh')
-rw-r--r-- | Build/source/texk/lcdf-typetools/lcdf-typetools-src/include/lcdf/transform.hh | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/Build/source/texk/lcdf-typetools/lcdf-typetools-src/include/lcdf/transform.hh b/Build/source/texk/lcdf-typetools/lcdf-typetools-src/include/lcdf/transform.hh deleted file mode 100644 index 850a73c8004..00000000000 --- a/Build/source/texk/lcdf-typetools/lcdf-typetools-src/include/lcdf/transform.hh +++ /dev/null @@ -1,147 +0,0 @@ -// -*- related-file-name: "../../liblcdf/transform.cc" -*- -#ifndef LCDF_TRANSFORM_HH -#define LCDF_TRANSFORM_HH -#include <lcdf/bezier.hh> -#include <lcdf/string.hh> -#include <assert.h> - -class Transform { public: - - Transform(); - Transform(const double[6]); - Transform(double scalex, double sheary, double shearx, double scaley, double shiftx, double shifty); - // Transform(const Transform &) generated by compiler - // ~Transform() generated by compiler - - double operator[](int i) const { assert(i>=0&&i<6); return _m[i]; } - Point translation() const { return Point(_m[4], _m[5]); } - bool null() const { return _null; } - void check_null(double tolerance); - - void scale(double, double); - void scale(const Point &p) { scale(p.x, p.y); } - void scale(double d) { scale(d, d); } - void rotate(double); - void translate(double, double); - void translate(const Point &p) { translate(p.x, p.y); } - void raw_translate(double, double); - void raw_translate(const Point& p) { raw_translate(p.x, p.y); } - void shear(double); - Transform& operator*=(const Transform& x); - - inline Transform scaled(double, double) const; - Transform scaled(const Point &p) const { return scaled(p.x, p.y); } - Transform scaled(double d) const { return scaled(d, d); } - inline Transform rotated(double) const; - inline Transform translated(double, double) const; - inline Transform translated(const Point &p) const; - inline Transform sheared(double) const; - - // Transform operator+(Transform, const Point &); - // Transform &operator+=(Transform &, const Point &); - // Transform operator*(Transform, double); - // Transform &operator*=(Transform &, double); - // Transform operator*(Transform, const Transform &); - // Transform &operator*=(Transform &, const Transform &); - friend Point operator*(const Point &, const Transform &); - friend Point &operator*=(Point &, const Transform &); - friend Bezier operator*(const Bezier &, const Transform &); - friend Bezier &operator*=(Bezier &, const Transform &); - - String unparse() const; - - private: - - // stored in PostScript order (along columns) - double _m[6]; - bool _null; - - void real_apply_to(Point &) const; - Point real_apply(const Point &) const; - -}; - - -inline Transform -Transform::scaled(double x, double y) const -{ - Transform t(*this); - t.scale(x, y); - return t; -} - -inline Transform -Transform::rotated(double r) const -{ - Transform t(*this); - t.rotate(r); - return t; -} - -inline Transform -Transform::translated(double x, double y) const -{ - Transform t(*this); - t.translate(x, y); - return t; -} - -inline Transform -Transform::translated(const Point &p) const -{ - return translated(p.x, p.y); -} - -inline Transform -Transform::sheared(double s) const -{ - Transform t(*this); - t.shear(s); - return t; -} - - -inline Transform & -operator+=(Transform &t, const Point &p) -{ - t.translate(p); - return t; -} - -inline Transform -operator+(Transform t, const Point &p) -{ - return t += p; -} - -inline Transform & -operator*=(Transform &t, double scale) -{ - t.scale(scale); - return t; -} - -inline Transform operator*(Transform t, double scale) { - return t *= scale; -} - -inline Transform operator*(Transform a, const Transform& b) { - return a *= b; -} - - -inline Point & -operator*=(Point &p, const Transform &t) -{ - if (!t.null()) - t.real_apply_to(p); - return p; -} - -inline Point -operator*(const Point &p, const Transform &t) -{ - return (t.null() ? p : t.real_apply(p)); -} - -#endif |