From c59fe5fe4739f0c61560f05d4e42b4e552219b27 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 28 May 2011 02:18:52 +0000 Subject: asy 2.10 git-svn-id: svn://tug.org/texlive/trunk@22633 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/utils/asymptote/runpath.in | 113 ++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) (limited to 'Build/source/utils/asymptote/runpath.in') diff --git a/Build/source/utils/asymptote/runpath.in b/Build/source/utils/asymptote/runpath.in index a9445d4104c..042dcdca97d 100644 --- a/Build/source/utils/asymptote/runpath.in +++ b/Build/source/utils/asymptote/runpath.in @@ -8,6 +8,7 @@ pen => primPen() pair => primPair() path => primPath() +transform => primTransform() realarray* => realArray() realarray2* => realArray2() patharray* => pathArray() @@ -272,6 +273,118 @@ pair max(path p) return p.max(); } +pair min(patharray *a) +{ + if (!a) { + error("min called on null path array"); + return pair(0,0); + } + if (a->empty()) { + error("min called on empty path array"); + return pair(0,0); + } + + path *g = a->read(0); + pair z = g->min(); + double minx = z.getx(), miny = z.gety(); + + for (size_t i = 1; i < a->size(); ++i) { + path *g = a->read(i); + pair z = g->min(); + double x = z.getx(), y = z.gety(); + if (x < minx) + minx = x; + if (y < miny) + miny = y; + } + + return pair(minx, miny); +} + +pair max(patharray *a) +{ + if (!a) { + error("max called on null path array"); + return pair(0,0); + } + if (a->empty()) { + error("max called on empty path array"); + return pair(0,0); + } + + path *g = a->read(0); + pair z = g->max(); + double maxx = z.getx(), maxy = z.gety(); + + for (size_t i = 1; i < a->size(); ++i) { + path *g = a->read(i); + pair z = g->max(); + double x = z.getx(), y = z.gety(); + if (x > maxx) + maxx = x; + if (y > maxy) + maxy = y; + } + + return pair(maxx, maxy); +} + +pair minAfterTransform(transform t, patharray *a) +{ + if (!a) { + error("minAfterTransform called on null path array"); + return pair(0,0); + } + if (a->empty()) { + error("minAfterTransform called on empty path array"); + return pair(0,0); + } + + path g = a->read(0)->transformed(t); + pair z = g.min(); + double minx = z.getx(), miny = z.gety(); + + for (size_t i = 1; i < a->size(); ++i) { + path g = a->read(i)->transformed(t); + pair z = g.min(); + double x = z.getx(), y = z.gety(); + if (x < minx) + minx = x; + if (y < miny) + miny = y; + } + + return pair(minx, miny); +} + +pair maxAfterTransform(transform t, patharray *a) +{ + if (!a) { + error("maxAfterTransform called on null path array"); + return pair(0,0); + } + if (a->empty()) { + error("maxAfterTransform called on empty path array"); + return pair(0,0); + } + + path g = a->read(0)->transformed(t); + pair z = g.max(); + double maxx = z.getx(), maxy = z.gety(); + + for (size_t i = 1; i < a->size(); ++i) { + path g = a->read(i)->transformed(t); + pair z = g.max(); + double x = z.getx(), y = z.gety(); + if (x > maxx) + maxx = x; + if (y > maxy) + maxy = y; + } + + return pair(maxx, maxy); +} + realarray *mintimes(path p) { array *V=new array(2); -- cgit v1.2.3