diff options
Diffstat (limited to 'Build/source/libs/potrace/potrace-src/src/trans.c')
-rw-r--r-- | Build/source/libs/potrace/potrace-src/src/trans.c | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/Build/source/libs/potrace/potrace-src/src/trans.c b/Build/source/libs/potrace/potrace-src/src/trans.c deleted file mode 100644 index 287808bb0b8..00000000000 --- a/Build/source/libs/potrace/potrace-src/src/trans.c +++ /dev/null @@ -1,127 +0,0 @@ -/* Copyright (C) 2001-2017 Peter Selinger. - This file is part of Potrace. It is free software and it is covered - by the GNU General Public License. See the file COPYING for details. */ - -/* calculations with coordinate transformations and bounding boxes */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <math.h> -#include <string.h> - -#include "trans.h" -#include "bbox.h" - -/* rotate the coordinate system counterclockwise by alpha degrees. The - new bounding box will be the smallest box containing the rotated - old bounding box */ -void trans_rotate(trans_t *r, double alpha) { - double s, c, x0, x1, y0, y1, o0, o1; - trans_t t_struct; - trans_t *t = &t_struct; - - memcpy(t, r, sizeof(trans_t)); - - s = sin(alpha/180*M_PI); - c = cos(alpha/180*M_PI); - - /* apply the transformation matrix to the sides of the bounding box */ - x0 = c * t->bb[0]; - x1 = s * t->bb[0]; - y0 = -s * t->bb[1]; - y1 = c * t->bb[1]; - - /* determine new bounding box, and origin of old bb within new bb */ - r->bb[0] = fabs(x0) + fabs(y0); - r->bb[1] = fabs(x1) + fabs(y1); - o0 = - min(x0,0) - min(y0,0); - o1 = - min(x1,0) - min(y1,0); - - r->orig[0] = o0 + c * t->orig[0] - s * t->orig[1]; - r->orig[1] = o1 + s * t->orig[0] + c * t->orig[1]; - r->x[0] = c * t->x[0] - s * t->x[1]; - r->x[1] = s * t->x[0] + c * t->x[1]; - r->y[0] = c * t->y[0] - s * t->y[1]; - r->y[1] = s * t->y[0] + c * t->y[1]; -} - -/* return the standard cartesian coordinate system for an w x h rectangle. */ -void trans_from_rect(trans_t *r, double w, double h) { - r->bb[0] = w; - r->bb[1] = h; - r->orig[0] = 0.0; - r->orig[1] = 0.0; - r->x[0] = 1.0; - r->x[1] = 0.0; - r->y[0] = 0.0; - r->y[1] = 1.0; - r->scalex = 1.0; - r->scaley = 1.0; -} - -/* rescale the coordinate system r by factor sc >= 0. */ -void trans_rescale(trans_t *r, double sc) { - r->bb[0] *= sc; - r->bb[1] *= sc; - r->orig[0] *= sc; - r->orig[1] *= sc; - r->x[0] *= sc; - r->x[1] *= sc; - r->y[0] *= sc; - r->y[1] *= sc; - r->scalex *= sc; - r->scaley *= sc; -} - -/* rescale the coordinate system to size w x h */ -void trans_scale_to_size(trans_t *r, double w, double h) { - double xsc = w/r->bb[0]; - double ysc = h/r->bb[1]; - - r->bb[0] = w; - r->bb[1] = h; - r->orig[0] *= xsc; - r->orig[1] *= ysc; - r->x[0] *= xsc; - r->x[1] *= ysc; - r->y[0] *= xsc; - r->y[1] *= ysc; - r->scalex *= xsc; - r->scaley *= ysc; - - if (w<0) { - r->orig[0] -= w; - r->bb[0] = -w; - } - if (h<0) { - r->orig[1] -= h; - r->bb[1] = -h; - } -} - -/* adjust the bounding box to the actual vector outline */ -void trans_tighten(trans_t *r, potrace_path_t *plist) { - interval_t i; - dpoint_t dir; - int j; - - /* if pathlist is empty, do nothing */ - if (!plist) { - return; - } - - for (j=0; j<2; j++) { - dir.x = r->x[j]; - dir.y = r->y[j]; - path_limits(plist, dir, &i); - if (i.min == i.max) { - /* make the extent non-zero to avoid later division by zero errors */ - i.max = i.min+0.5; - i.min = i.min-0.5; - } - r->bb[j] = i.max - i.min; - r->orig[j] = -i.min; - } -} |