diff options
author | Karl Berry <karl@freefriends.org> | 2019-01-10 18:49:48 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-01-10 18:49:48 +0000 |
commit | 8d656f7b22badc7a1e4e48811521048ef3df7101 (patch) | |
tree | 207c9332ac340eef8b84e90d67a0f0c6a734e547 /Build/source/utils/asymptote/runpicture.cc | |
parent | c75ad7aa4d5821b7c4034c949a5ed2401e589bea (diff) |
asy 2.47 sources
git-svn-id: svn://tug.org/texlive/trunk@49658 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/asymptote/runpicture.cc')
-rw-r--r-- | Build/source/utils/asymptote/runpicture.cc | 715 |
1 files changed, 351 insertions, 364 deletions
diff --git a/Build/source/utils/asymptote/runpicture.cc b/Build/source/utils/asymptote/runpicture.cc index 08e12a12788..cbff720c613 100644 --- a/Build/source/utils/asymptote/runpicture.cc +++ b/Build/source/utils/asymptote/runpicture.cc @@ -112,6 +112,28 @@ using types::pathArray; using types::penArray; using types::penArray2; +static transform ZeroTransform=transform(0.0,0.0,0.0,0.0,0.0,0.0); +//static int tag=0; + +transform getTransform(xmap_t &xmap, picture::nodelist::iterator p) +{ + string s=(*p)->KEY; + transform t; + // Don't apply xmap without an explicit corresponding key + if(s.substr(s.length()-1) != "1") return t; + + xmap_t::iterator q=xmap.find(s.substr(0,s.length()-2)); + if(q != xmap.end()) { + xtransform_t& v=q->second; + if(!v.empty()) { + t=v.front(); + v.pop_front(); + } + } + return t; +} + + function *transformFunction() { return new function(primTransform()); @@ -143,71 +165,71 @@ triple Zero; #endif namespace run { -#line 104 "runpicture.in" +#line 126 "runpicture.in" void newPicture(stack *Stack) { -#line 105 "runpicture.in" +#line 127 "runpicture.in" {Stack->push<picture*>(new picture()); return;} } -#line 109 "runpicture.in" +#line 131 "runpicture.in" // bool empty(picture *f); void gen_runpicture1(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 110 "runpicture.in" +#line 132 "runpicture.in" {Stack->push<bool>(f->null()); return;} } -#line 114 "runpicture.in" +#line 136 "runpicture.in" // void erase(picture *f); void gen_runpicture2(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 115 "runpicture.in" +#line 137 "runpicture.in" f->nodes.clear(); } -#line 119 "runpicture.in" +#line 141 "runpicture.in" // pair min(picture *f); void gen_runpicture3(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 120 "runpicture.in" +#line 142 "runpicture.in" {Stack->push<pair>(f->bounds().Min()); return;} } -#line 124 "runpicture.in" +#line 146 "runpicture.in" // pair max(picture *f); void gen_runpicture4(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 125 "runpicture.in" +#line 147 "runpicture.in" {Stack->push<pair>(f->bounds().Max()); return;} } -#line 129 "runpicture.in" +#line 151 "runpicture.in" // pair size(picture *f); void gen_runpicture5(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 130 "runpicture.in" +#line 152 "runpicture.in" bbox b=f->bounds(); {Stack->push<pair>(b.Max()-b.Min()); return;} } -#line 135 "runpicture.in" +#line 157 "runpicture.in" // void _draw(picture *f, path g, pen p); void gen_runpicture6(stack *Stack) { pen p=vm::pop<pen>(Stack); path g=vm::pop<path>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 136 "runpicture.in" +#line 158 "runpicture.in" f->append(new drawPath(g,p)); } -#line 140 "runpicture.in" +#line 162 "runpicture.in" // void fill(picture *f, patharray *g, pen p=CURRENTPEN, bool copy=true); void gen_runpicture7(stack *Stack) { @@ -215,12 +237,12 @@ void gen_runpicture7(stack *Stack) pen p=vm::pop<pen>(Stack,CURRENTPEN); patharray * g=vm::pop<patharray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 141 "runpicture.in" - array *(*copyarray)(array *a)=copy ? copyArray: nop; +#line 163 "runpicture.in" + array *(*copyarray)(array *a)=copy ? copyArray : nop; f->append(new drawFill(*copyarray(g),false,p)); } -#line 146 "runpicture.in" +#line 168 "runpicture.in" // void latticeshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, penarray2 *p, transform t=identity, bool copy=true); void gen_runpicture8(stack *Stack) { @@ -231,13 +253,13 @@ void gen_runpicture8(stack *Stack) bool stroke=vm::pop<bool>(Stack,false); patharray * g=vm::pop<patharray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 149 "runpicture.in" - array *(*copyarray)(array *a)=copy ? copyArray: nop; +#line 171 "runpicture.in" + array *(*copyarray)(array *a)=copy ? copyArray : nop; f->append(new drawLatticeShade(*copyarray(g),stroke,fillrule,*copyarray(p), t)); } -#line 155 "runpicture.in" +#line 177 "runpicture.in" // void axialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a, bool extenda=true, pen penb, pair b, bool extendb=true, bool copy=true); void gen_runpicture9(stack *Stack) { @@ -251,13 +273,13 @@ void gen_runpicture9(stack *Stack) bool stroke=vm::pop<bool>(Stack,false); patharray * g=vm::pop<patharray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 158 "runpicture.in" - array *(*copyarray)(array *a)=copy ? copyArray: nop; +#line 180 "runpicture.in" + array *(*copyarray)(array *a)=copy ? copyArray : nop; f->append(new drawAxialShade(*copyarray(g),stroke,pena,a,extenda,penb,b, extendb)); } -#line 164 "runpicture.in" +#line 186 "runpicture.in" // void radialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a, real ra, bool extenda=true, pen penb, pair b, real rb, bool extendb=true, bool copy=true); void gen_runpicture10(stack *Stack) { @@ -273,13 +295,13 @@ void gen_runpicture10(stack *Stack) bool stroke=vm::pop<bool>(Stack,false); patharray * g=vm::pop<patharray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 167 "runpicture.in" - array *(*copyarray)(array *a)=copy ? copyArray: nop; +#line 189 "runpicture.in" + array *(*copyarray)(array *a)=copy ? copyArray : nop; f->append(new drawRadialShade(*copyarray(g),stroke,pena,a,ra,extenda, penb,b,rb,extendb)); } -#line 173 "runpicture.in" +#line 195 "runpicture.in" // void gouraudshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, penarray *p, pairarray *z, Intarray *edges, bool copy=true); void gen_runpicture11(stack *Stack) { @@ -291,15 +313,15 @@ void gen_runpicture11(stack *Stack) bool stroke=vm::pop<bool>(Stack,false); patharray * g=vm::pop<patharray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 176 "runpicture.in" - array *(*copyarray)(array *a)=copy ? copyArray: nop; +#line 198 "runpicture.in" + array *(*copyarray)(array *a)=copy ? copyArray : nop; checkArrays(p,z); checkArrays(z,edges); f->append(new drawGouraudShade(*copyarray(g),stroke,fillrule,*copyarray(p), *copyarray(z),*copyarray(edges))); } -#line 184 "runpicture.in" +#line 206 "runpicture.in" // void gouraudshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, penarray *p, Intarray *edges, bool copy=true); void gen_runpicture12(stack *Stack) { @@ -310,8 +332,8 @@ void gen_runpicture12(stack *Stack) bool stroke=vm::pop<bool>(Stack,false); patharray * g=vm::pop<patharray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 187 "runpicture.in" - array *(*copyarray)(array *a)=copy ? copyArray: nop; +#line 209 "runpicture.in" + array *(*copyarray)(array *a)=copy ? copyArray : nop; size_t n=checkArrays(p,edges); size_t m=checkArray(g); array *z=new array(n); @@ -331,7 +353,7 @@ void gen_runpicture12(stack *Stack) *z,*copyarray(edges))); } -#line 208 "runpicture.in" +#line 230 "runpicture.in" // void tensorshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, penarray2 *p, patharray *b=NULL, pairarray2 *z=emptyarray, bool copy=true); void gen_runpicture13(stack *Stack) { @@ -343,9 +365,9 @@ void gen_runpicture13(stack *Stack) bool stroke=vm::pop<bool>(Stack,false); patharray * g=vm::pop<patharray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 211 "runpicture.in" - array *(*copyarray)(array *a)=copy ? copyArray: nop; - array *(*copyarray2)(array *a)=copy ? copyArray2: nop; +#line 233 "runpicture.in" + array *(*copyarray)(array *a)=copy ? copyArray : nop; + array *(*copyarray2)(array *a)=copy ? copyArray2 : nop; if(b == NULL) b=g; size_t n=checkArrays(p,b); size_t nz=checkArray(z); @@ -355,7 +377,7 @@ void gen_runpicture13(stack *Stack) *copyarray(b),*copyarray2(z))); } -#line 223 "runpicture.in" +#line 245 "runpicture.in" // void functionshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, string shader=emptystring, bool copy=true); void gen_runpicture14(stack *Stack) { @@ -365,14 +387,14 @@ void gen_runpicture14(stack *Stack) bool stroke=vm::pop<bool>(Stack,false); patharray * g=vm::pop<patharray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 226 "runpicture.in" - array *(*copyarray)(array *a)=copy ? copyArray: nop; +#line 248 "runpicture.in" + array *(*copyarray)(array *a)=copy ? copyArray : nop; f->append(new drawFunctionShade(*copyarray(g),stroke,fillrule,shader)); } // Clip a picture to a superpath using the given fill rule. // Subsequent additions to the picture will not be affected by the clipping. -#line 233 "runpicture.in" +#line 255 "runpicture.in" // void clip(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, bool copy=true); void gen_runpicture15(stack *Stack) { @@ -381,13 +403,13 @@ void gen_runpicture15(stack *Stack) bool stroke=vm::pop<bool>(Stack,false); patharray * g=vm::pop<patharray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 235 "runpicture.in" - array *(*copyarray)(array *a)=copy ? copyArray: nop; +#line 257 "runpicture.in" + array *(*copyarray)(array *a)=copy ? copyArray : nop; drawClipBegin *begin=new drawClipBegin(*copyarray(g),stroke,fillrule,true); f->enclose(begin,new drawClipEnd(true,begin)); } -#line 241 "runpicture.in" +#line 263 "runpicture.in" // void beginclip(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, bool copy=true); void gen_runpicture16(stack *Stack) { @@ -396,57 +418,57 @@ void gen_runpicture16(stack *Stack) bool stroke=vm::pop<bool>(Stack,false); patharray * g=vm::pop<patharray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 243 "runpicture.in" - array *(*copyarray)(array *a)=copy ? copyArray: nop; +#line 265 "runpicture.in" + array *(*copyarray)(array *a)=copy ? copyArray : nop; f->append(new drawClipBegin(*copyarray(g),stroke,fillrule,false)); } -#line 248 "runpicture.in" +#line 270 "runpicture.in" // void endclip(picture *f); void gen_runpicture17(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 249 "runpicture.in" +#line 271 "runpicture.in" f->append(new drawClipEnd(false)); } -#line 253 "runpicture.in" +#line 275 "runpicture.in" // void gsave(picture *f); void gen_runpicture18(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 254 "runpicture.in" +#line 276 "runpicture.in" f->append(new drawGsave()); } -#line 258 "runpicture.in" +#line 280 "runpicture.in" // void grestore(picture *f); void gen_runpicture19(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 259 "runpicture.in" +#line 281 "runpicture.in" f->append(new drawGrestore()); } -#line 263 "runpicture.in" +#line 285 "runpicture.in" // void begingroup(picture *f); void gen_runpicture20(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 264 "runpicture.in" +#line 286 "runpicture.in" f->append(new drawBegin()); } -#line 268 "runpicture.in" +#line 290 "runpicture.in" // void endgroup(picture *f); void gen_runpicture21(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 269 "runpicture.in" +#line 291 "runpicture.in" f->append(new drawEnd()); } -#line 273 "runpicture.in" +#line 295 "runpicture.in" // void _begingroup3(picture *f, string name, real compression, real granularity, bool closed, bool tessellate, bool dobreak, bool nobreak, triple center, Int interaction); void gen_runpicture22(stack *Stack) { @@ -460,62 +482,62 @@ void gen_runpicture22(stack *Stack) real compression=vm::pop<real>(Stack); string name=vm::pop<string>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 276 "runpicture.in" +#line 298 "runpicture.in" f->append(new drawBegin3(name,compression,granularity, closed,tessellate,dobreak,nobreak, center,(Interaction) intcast(interaction))); } -#line 282 "runpicture.in" +#line 304 "runpicture.in" // void endgroup3(picture *f); void gen_runpicture23(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 283 "runpicture.in" +#line 305 "runpicture.in" f->append(new drawEnd3()); } -#line 287 "runpicture.in" +#line 309 "runpicture.in" // void add(picture *dest, picture *src); void gen_runpicture24(stack *Stack) { picture * src=vm::pop<picture *>(Stack); picture * dest=vm::pop<picture *>(Stack); -#line 288 "runpicture.in" +#line 310 "runpicture.in" dest->add(*src); } -#line 292 "runpicture.in" +#line 314 "runpicture.in" // void prepend(picture *dest, picture *src); void gen_runpicture25(stack *Stack) { picture * src=vm::pop<picture *>(Stack); picture * dest=vm::pop<picture *>(Stack); -#line 293 "runpicture.in" +#line 315 "runpicture.in" dest->prepend(*src); } -#line 297 "runpicture.in" +#line 319 "runpicture.in" // void postscript(picture *f, string s); void gen_runpicture26(stack *Stack) { string s=vm::pop<string>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 298 "runpicture.in" +#line 320 "runpicture.in" f->append(new drawVerbatim(PostScript,s)); } -#line 302 "runpicture.in" +#line 324 "runpicture.in" // void tex(picture *f, string s); void gen_runpicture27(stack *Stack) { string s=vm::pop<string>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 303 "runpicture.in" +#line 325 "runpicture.in" f->append(new drawVerbatim(TeX,s)); } -#line 307 "runpicture.in" +#line 329 "runpicture.in" // void postscript(picture *f, string s, pair min, pair max); void gen_runpicture28(stack *Stack) { @@ -523,11 +545,11 @@ void gen_runpicture28(stack *Stack) pair min=vm::pop<pair>(Stack); string s=vm::pop<string>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 308 "runpicture.in" +#line 330 "runpicture.in" f->append(new drawVerbatim(PostScript,s,min,max)); } -#line 312 "runpicture.in" +#line 334 "runpicture.in" // void tex(picture *f, string s, pair min, pair max); void gen_runpicture29(stack *Stack) { @@ -535,33 +557,33 @@ void gen_runpicture29(stack *Stack) pair min=vm::pop<pair>(Stack); string s=vm::pop<string>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 313 "runpicture.in" +#line 335 "runpicture.in" f->append(new drawVerbatim(TeX,s,min,max)); } -#line 317 "runpicture.in" +#line 339 "runpicture.in" // void texpreamble(string s); void gen_runpicture30(stack *Stack) { string s=vm::pop<string>(Stack); -#line 318 "runpicture.in" +#line 340 "runpicture.in" string t=s+"\n"; processDataStruct &pd=processData(); pd.TeXpipepreamble.push_back(t); pd.TeXpreamble.push_back(t); } -#line 325 "runpicture.in" +#line 347 "runpicture.in" // void deletepreamble(); void gen_runpicture31(stack *) { -#line 326 "runpicture.in" +#line 348 "runpicture.in" if(getSetting<bool>("inlinetex")) { unlink(buildname(outname(),"pre").c_str()); } } -#line 332 "runpicture.in" +#line 354 "runpicture.in" // void _labelpath(picture *f, string s, string size, path g, string justify, pair offset, pen p); void gen_runpicture32(stack *Stack) { @@ -572,40 +594,40 @@ void gen_runpicture32(stack *Stack) string size=vm::pop<string>(Stack); string s=vm::pop<string>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 334 "runpicture.in" +#line 356 "runpicture.in" f->append(new drawLabelPath(s,size,g,justify,offset,p)); } -#line 338 "runpicture.in" +#line 360 "runpicture.in" // void texreset(); void gen_runpicture33(stack *) { -#line 339 "runpicture.in" +#line 361 "runpicture.in" processDataStruct &pd=processData(); pd.TeXpipepreamble.clear(); pd.TeXpreamble.clear(); pd.tex.pipeclose(); } -#line 346 "runpicture.in" +#line 368 "runpicture.in" // void layer(picture *f); void gen_runpicture34(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 347 "runpicture.in" +#line 369 "runpicture.in" f->append(new drawLayer()); } -#line 351 "runpicture.in" +#line 373 "runpicture.in" // void newpage(picture *f); void gen_runpicture35(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 352 "runpicture.in" +#line 374 "runpicture.in" f->append(new drawNewPage()); } -#line 356 "runpicture.in" +#line 378 "runpicture.in" // void _image(picture *f, realarray2 *data, pair initial, pair final, penarray *palette=NULL, transform t=identity, bool copy=true, bool antialias=false); void gen_runpicture36(stack *Stack) { @@ -617,14 +639,14 @@ void gen_runpicture36(stack *Stack) pair initial=vm::pop<pair>(Stack); realarray2 * data=vm::pop<realarray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 359 "runpicture.in" - array *(*copyarray)(array *a)=copy ? copyArray: nop; - array *(*copyarray2)(array *a)=copy ? copyArray2: nop; +#line 381 "runpicture.in" + array *(*copyarray)(array *a)=copy ? copyArray : nop; + array *(*copyarray2)(array *a)=copy ? copyArray2 : nop; f->append(new drawPaletteImage(*copyarray2(data),*copyarray(palette), t*matrix(initial,final),antialias)); } -#line 366 "runpicture.in" +#line 388 "runpicture.in" // void _image(picture *f, penarray2 *data, pair initial, pair final, transform t=identity, bool copy=true, bool antialias=false); void gen_runpicture37(stack *Stack) { @@ -635,13 +657,13 @@ void gen_runpicture37(stack *Stack) pair initial=vm::pop<pair>(Stack); penarray2 * data=vm::pop<penarray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 368 "runpicture.in" - array *(*copyarray2)(array *a)=copy ? copyArray2: nop; +#line 390 "runpicture.in" + array *(*copyarray2)(array *a)=copy ? copyArray2 : nop; f->append(new drawNoPaletteImage(*copyarray2(data),t*matrix(initial,final), antialias)); } -#line 374 "runpicture.in" +#line 396 "runpicture.in" // void _image(picture *f, callablePen *F, Int width, Int height, pair initial, pair final, transform t=identity, bool antialias=false); void gen_runpicture38(stack *Stack) { @@ -653,63 +675,60 @@ void gen_runpicture38(stack *Stack) Int width=vm::pop<Int>(Stack); callablePen * F=vm::pop<callablePen *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 376 "runpicture.in" +#line 398 "runpicture.in" f->append(new drawFunctionImage(Stack,F,width,height, t*matrix(initial,final),antialias)); } -#line 381 "runpicture.in" +#line 403 "runpicture.in" // string nativeformat(); void gen_runpicture39(stack *Stack) { -#line 382 "runpicture.in" +#line 404 "runpicture.in" {Stack->push<string>(nativeformat()); return;} } -#line 386 "runpicture.in" +#line 408 "runpicture.in" // bool latex(); void gen_runpicture40(stack *Stack) { -#line 387 "runpicture.in" +#line 409 "runpicture.in" {Stack->push<bool>(latex(getSetting<string>("tex"))); return;} } -#line 391 "runpicture.in" +#line 413 "runpicture.in" // bool pdf(); void gen_runpicture41(stack *Stack) { -#line 392 "runpicture.in" +#line 414 "runpicture.in" {Stack->push<bool>(pdf(getSetting<string>("tex"))); return;} } -#line 396 "runpicture.in" -// void shipout(string prefix=emptystring, picture *f, picture *preamble=NULL, string format=emptystring, bool wait=false, bool view=true, callableTransform *xform); +#line 418 "runpicture.in" +// void _shipout(string prefix=emptystring, picture *f, picture *preamble=NULL, string format=emptystring, bool wait=false, bool view=true, transform T=identity); void gen_runpicture42(stack *Stack) { - callableTransform * xform=vm::pop<callableTransform *>(Stack); + transform T=vm::pop<transform>(Stack,identity); bool view=vm::pop<bool>(Stack,true); bool wait=vm::pop<bool>(Stack,false); string format=vm::pop<string>(Stack,emptystring); picture * preamble=vm::pop<picture *>(Stack,NULL); picture * f=vm::pop<picture *>(Stack); string prefix=vm::pop<string>(Stack,emptystring); -#line 399 "runpicture.in" +#line 421 "runpicture.in" if(prefix.empty()) prefix=outname(); picture *result=new picture; unsigned level=0; picture::nodelist::iterator p; - - // If null is given as an xform, just use the identity transformation. - bool xformIsNull = xform == nullfunc::instance(); + + xmap_t xmap=processData().xmap; + transform Tinv=inverse(T); for(p = f->nodes.begin(); p != f->nodes.end(); ++p) { - if (!xformIsNull) - xform->call(Stack); - transform t=xformIsNull ? camp::identity : pop<transform>(Stack); - - static transform Zero=transform(0.0,0.0,0.0,0.0,0.0,0.0); - bool Delete=(t == Zero); + transform t=getTransform(xmap,p); + bool Delete=(t == ZeroTransform); + if(!Delete && !t.isIdentity()) t=T*t*Tinv; picture *group=new picture; assert(*p); if((*p)->endgroup()) error(nobegin); @@ -739,10 +758,10 @@ void gen_runpicture42(stack *Stack) } } - result->shipout(preamble,prefix,format,0.0,wait,view); + result->shipout(preamble,prefix,format,wait,view); } -#line 448 "runpicture.in" +#line 467 "runpicture.in" // void shipout3(string prefix, picture *f, string format=emptystring, real width, real height, real angle, real zoom, triple m, triple M, pair shift, realarray2 *t, realarray *background, triplearray *lights, realarray2 *diffuse, realarray2 *ambient, realarray2 *specular, bool viewportlighting, bool view=true); void gen_runpicture43(stack *Stack) { @@ -764,7 +783,7 @@ void gen_runpicture43(stack *Stack) string format=vm::pop<string>(Stack,emptystring); picture * f=vm::pop<picture *>(Stack); string prefix=vm::pop<string>(Stack); -#line 454 "runpicture.in" +#line 473 "runpicture.in" size_t n=checkArrays(lights,diffuse); checkEqual(n,checkArray(ambient)); checkEqual(n,checkArray(specular)); @@ -786,188 +805,154 @@ void gen_runpicture43(stack *Stack) delete[] T; } -#line 476 "runpicture.in" +#line 495 "runpicture.in" // void shipout3(string prefix, picture *f); void gen_runpicture44(stack *Stack) { picture * f=vm::pop<picture *>(Stack); string prefix=vm::pop<string>(Stack); -#line 477 "runpicture.in" +#line 496 "runpicture.in" f->shipout3(prefix); } -#line 481 "runpicture.in" -// void deconstruct(picture *f, picture *preamble=NULL, real magnification=1, callableTransform *xform); +#line 500 "runpicture.in" +// void xmap(string key, transform t=identity); void gen_runpicture45(stack *Stack) { - callableTransform * xform=vm::pop<callableTransform *>(Stack); - real magnification=vm::pop<real>(Stack,1); + transform t=vm::pop<transform>(Stack,identity); + string key=vm::pop<string>(Stack); +#line 501 "runpicture.in" + xmap_t &xmap=processData().xmap; + xmap_t::iterator p=xmap.find(key); + if(p != xmap.end()) + p->second.push_back(t); + else { + xtransform_t *v=new xtransform_t(); + v->push_back(t); + xmap[key]=*v; + } +} + +#line 513 "runpicture.in" +// void deconstruct(picture *f, picture *preamble=NULL, transform T=identity); +void gen_runpicture46(stack *Stack) +{ + transform T=vm::pop<transform>(Stack,identity); picture * preamble=vm::pop<picture *>(Stack,NULL); picture * f=vm::pop<picture *>(Stack); -#line 483 "runpicture.in" +#line 514 "runpicture.in" unsigned level=0; - unsigned n=0; string prefix=outname(); - const string xformat="png"; + const string xformat="svg"; - static long arg_max=sysconf(_SC_ARG_MAX); - const unsigned maxargs=::min(arg_max/(prefix.size()+xformat.size()+25ul), - 256ul); openpipeout(); - fprintf(pipeout,"%d\n",maxargs); - fflush(pipeout); - - string preformat=nativeformat(); const string Done="Done"; const string Error="Error"; - mem::vector<string> cmd; - - // Enforce ghostscript limitations. - magnification=::max(magnification,0.0001); - real res=::min(::max(magnification*72.0,2.0),8192.0); - - const char *converter=NULL, *hint=NULL; - - if(magnification > 0.0) { - mem::list<string> nameStack; - string outname; - unsigned arg=0; - unsigned batch=0; - for(picture::nodelist::iterator p=f->nodes.begin();;) { - if(p == f->nodes.end()) break; - if(arg == 0) { - cmd.clear(); - ostringstream buf; - buf << batch << "_"; - outname=buildname(prefix+buf.str()+"%d",xformat,""); - converter="gs"; - hint="Ghostscript"; - cmd.push_back(getSetting<string>(converter)); - cmd.push_back("-q"); - cmd.push_back("-dNOPAUSE"); - cmd.push_back("-dBATCH"); - cmd.push_back("-P"); - cmd.push_back("-sDEVICE=pngalpha"); - cmd.push_back("-dEPSCrop"); - if(safe) - cmd.push_back("-dSAFER"); - cmd.push_back("-r"+String(res)+"x"+String(res)); - cmd.push_back("-sOutputFile="+outname); - } - - picture *group=new picture; - xform->call(Stack); - transform t=pop<transform>(Stack); - assert(*p); - if((*p)->endgroup()) { - fprintf(pipeout,"%s\n",Error.c_str()); - fflush(pipeout); - error(nobegin); - } - if((*p)->begingroup()) { - ++level; - while(p != f->nodes.end() && level) { + unsigned arg=0; + xmap_t xmap=processData().xmap; + transform Tinv=inverse(T); + + for(picture::nodelist::iterator p=f->nodes.begin();;) { + if(p == f->nodes.end()) break; + + picture *group=new picture; + transform t=getTransform(xmap,p); + bool Delete=(t == ZeroTransform); + if(!Delete && !t.isIdentity()) t=T*t*Tinv; + + assert(*p); + if((*p)->endgroup()) { + fprintf(pipeout,"%s\n",Error.c_str()); + fflush(pipeout); + error(nobegin); + } + bool clip=false; + if((*p)->begingroup()) { + ++level; + while(p != f->nodes.end() && level) { + if(!Delete) { drawElement *e=t.isIdentity() ? *p : (*p)->transformed(t); group->append(e); - ++p; - if(p == f->nodes.end()) break; - assert(*p); - if((*p)->begingroup()) ++level; - if((*p)->endgroup()) { - if(level) --level; - else { - fprintf(pipeout,"%s\n",Error.c_str()); - fflush(pipeout); - error(nobegin); - } + if((*p)->endclip()) clip=true; + } + ++p; + if(p == f->nodes.end()) break; + assert(*p); + if((*p)->begingroup()) ++level; + if((*p)->endgroup()) { + if(level) --level; + else { + fprintf(pipeout,"%s\n",Error.c_str()); + fflush(pipeout); + error(nobegin); } } } - if(p != f->nodes.end()) { - assert(*p); + } + if(p != f->nodes.end()) { + if(!Delete) { drawElement *e=t.isIdentity() ? *p : (*p)->transformed(t); group->append(e); - bbox b; + if((*p)->endclip()) clip=true; ostringstream buf; - buf << prefix << "_" << n; - group->shipout(preamble,buf.str(),preformat,magnification,false,false); - string Preformat=group->Transparency() ? "pdf" : preformat; - string name=buildname(buf.str(),Preformat); - nameStack.push_back(name); - cmd.push_back(name); - b=group->bounds(); - b *= magnification; + buf << prefix << "_" << arg; + string outname=buildname(buf.str(),xformat); + group->shipout(preamble,outname,xformat,false,false); + bbox b=group->bounds(); + if(!b.empty) { + fprintf(pipeout,"KEY=%s%d\n",e->KEY.c_str(),clip); - const char *oldlocale=setlocale(LC_NUMERIC,NULL); - bool override=oldlocale && strcmp(oldlocale,"C") != 0; - if(override) { - oldlocale=StrdupNoGC(oldlocale); - setlocale(LC_NUMERIC,"C"); - } + const char *oldlocale=setlocale(LC_NUMERIC,NULL); + bool override=oldlocale && strcmp(oldlocale,"C") != 0; + if(override) { + oldlocale=StrdupNoGC(oldlocale); + setlocale(LC_NUMERIC,"C"); + } - fprintf(pipeout,"%g %g %g %g\n",b.left,b.right,b.bottom,b.top); + fprintf(pipeout,"%g %g %g %g\n",b.left,b.bottom,b.right,b.top); - if(override) { - setlocale(LC_NUMERIC,oldlocale); - delete[] oldlocale; - } + if(override) { + setlocale(LC_NUMERIC,oldlocale); + delete[] oldlocale; + } - fflush(pipeout); - ++n; - ++p; - ++arg; - } - - if(p == f->nodes.end() || arg >= maxargs) { - arg=0; - ++batch; - fflush(pipeout); - - int status=System(cmd,0,true,converter,hint); - if(status) { - fprintf(pipeout,"%s\n",Error.c_str()); fflush(pipeout); - error("deconstruct failed"); + ++arg; } } + ++p; } - - if(!getSetting<bool>("keep")) { - for(mem::list<string>::iterator p=nameStack.begin(); - p != nameStack.end(); ++p) - unlink(p->c_str()); - } - - fprintf(pipeout,"%s\n",Done.c_str()); - fflush(pipeout); } + + fprintf(pipeout,"%s\n",Done.c_str()); + fflush(pipeout); } // Three-dimensional picture and surface operations // Bezier curve -#line 629 "runpicture.in" +#line 609 "runpicture.in" // void _draw(picture *f, path3 g, triple center=Zero, pen p, Int interaction=0); -void gen_runpicture46(stack *Stack) +void gen_runpicture47(stack *Stack) { Int interaction=vm::pop<Int>(Stack,0); pen p=vm::pop<pen>(Stack); triple center=vm::pop<triple>(Stack,Zero); path3 g=vm::pop<path3>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 630 "runpicture.in" +#line 610 "runpicture.in" if(g.size() > 0) f->append(new drawPath3(g,center,p,(Interaction) intcast(interaction))); } // Bezier patch -#line 636 "runpicture.in" +#line 616 "runpicture.in" // void draw(picture *f, triplearray2 *P, triple center, bool straight, penarray *p, real opacity, real shininess, real PRCshininess, penarray *colors, Int interaction, bool prc=true); -void gen_runpicture47(stack *Stack) +void gen_runpicture48(stack *Stack) { bool prc=vm::pop<bool>(Stack,true); Int interaction=vm::pop<Int>(Stack); @@ -980,16 +965,16 @@ void gen_runpicture47(stack *Stack) triple center=vm::pop<triple>(Stack); triplearray2 * P=vm::pop<triplearray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 639 "runpicture.in" +#line 619 "runpicture.in" f->append(new drawBezierPatch(*P,center,straight,*p,opacity,shininess, PRCshininess,*colors, (Interaction) intcast(interaction),prc)); } // Bezier triangle -#line 646 "runpicture.in" +#line 626 "runpicture.in" // void drawbeziertriangle(picture *f, triplearray2 *P, triple center, bool straight, penarray *p, real opacity, real shininess, real PRCshininess, penarray *colors, Int interaction, bool prc=true); -void gen_runpicture48(stack *Stack) +void gen_runpicture49(stack *Stack) { bool prc=vm::pop<bool>(Stack,true); Int interaction=vm::pop<Int>(Stack); @@ -1002,30 +987,30 @@ void gen_runpicture48(stack *Stack) triple center=vm::pop<triple>(Stack); triplearray2 * P=vm::pop<triplearray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 650 "runpicture.in" +#line 630 "runpicture.in" f->append(new drawBezierTriangle(*P,center,straight,*p,opacity,shininess, PRCshininess,*colors, (Interaction) intcast(interaction),prc)); } // General NURBS curve -#line 657 "runpicture.in" +#line 637 "runpicture.in" // void draw(picture *f, triplearray *P, realarray *knot, realarray *weights=emptyarray, pen p); -void gen_runpicture49(stack *Stack) +void gen_runpicture50(stack *Stack) { pen p=vm::pop<pen>(Stack); realarray * weights=vm::pop<realarray *>(Stack,emptyarray); realarray * knot=vm::pop<realarray *>(Stack); triplearray * P=vm::pop<triplearray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 659 "runpicture.in" +#line 639 "runpicture.in" f->append(new drawNurbsPath3(*P,knot,weights,p)); } // General NURBS surface -#line 664 "runpicture.in" +#line 644 "runpicture.in" // void draw(picture *f, triplearray2 *P, realarray *uknot, realarray *vknot, realarray2 *weights=emptyarray, penarray *p, real opacity, real shininess, real PRCshininess, penarray *colors); -void gen_runpicture50(stack *Stack) +void gen_runpicture51(stack *Stack) { penarray * colors=vm::pop<penarray *>(Stack); real PRCshininess=vm::pop<real>(Stack); @@ -1037,15 +1022,15 @@ void gen_runpicture50(stack *Stack) realarray * uknot=vm::pop<realarray *>(Stack); triplearray2 * P=vm::pop<triplearray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 667 "runpicture.in" +#line 647 "runpicture.in" f->append(new drawNurbs(*P,uknot,vknot,weights,*p,opacity,shininess, PRCshininess,*colors)); } // PRC unit sphere -#line 673 "runpicture.in" +#line 653 "runpicture.in" // void drawPRCsphere(picture *f, realarray2 *t, bool half=false, penarray *p, real opacity, real shininess, Int type); -void gen_runpicture51(stack *Stack) +void gen_runpicture52(stack *Stack) { Int type=vm::pop<Int>(Stack); real shininess=vm::pop<real>(Stack); @@ -1054,42 +1039,42 @@ void gen_runpicture51(stack *Stack) bool half=vm::pop<bool>(Stack,false); realarray2 * t=vm::pop<realarray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 675 "runpicture.in" +#line 655 "runpicture.in" f->append(new drawSphere(*t,half,*p,opacity,shininess,intcast(type))); } // PRC unit cylinder -#line 680 "runpicture.in" +#line 660 "runpicture.in" // void drawPRCcylinder(picture *f, realarray2 *t, penarray *p, real opacity, real shininess); -void gen_runpicture52(stack *Stack) +void gen_runpicture53(stack *Stack) { real shininess=vm::pop<real>(Stack); real opacity=vm::pop<real>(Stack); penarray * p=vm::pop<penarray *>(Stack); realarray2 * t=vm::pop<realarray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 682 "runpicture.in" +#line 662 "runpicture.in" f->append(new drawCylinder(*t,*p,opacity,shininess)); } // PRC unit disk -#line 687 "runpicture.in" +#line 667 "runpicture.in" // void drawPRCdisk(picture *f, realarray2 *t, penarray *p, real opacity, real shininess); -void gen_runpicture53(stack *Stack) +void gen_runpicture54(stack *Stack) { real shininess=vm::pop<real>(Stack); real opacity=vm::pop<real>(Stack); penarray * p=vm::pop<penarray *>(Stack); realarray2 * t=vm::pop<realarray2 *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 689 "runpicture.in" +#line 669 "runpicture.in" f->append(new drawDisk(*t,*p,opacity,shininess)); } // General PRC tube -#line 694 "runpicture.in" +#line 674 "runpicture.in" // void drawPRCtube(picture *f, path3 center, path3 g, penarray *p, real opacity, real shininess); -void gen_runpicture54(stack *Stack) +void gen_runpicture55(stack *Stack) { real shininess=vm::pop<real>(Stack); real opacity=vm::pop<real>(Stack); @@ -1097,27 +1082,27 @@ void gen_runpicture54(stack *Stack) path3 g=vm::pop<path3>(Stack); path3 center=vm::pop<path3>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 696 "runpicture.in" +#line 676 "runpicture.in" f->append(new drawTube(center,g,*p,opacity,shininess)); } // Draw pixel -#line 701 "runpicture.in" +#line 681 "runpicture.in" // void drawpixel(picture *f, triple v, pen p, real width=1.0); -void gen_runpicture55(stack *Stack) +void gen_runpicture56(stack *Stack) { real width=vm::pop<real>(Stack,1.0); pen p=vm::pop<pen>(Stack); triple v=vm::pop<triple>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 702 "runpicture.in" +#line 682 "runpicture.in" f->append(new drawPixel(v,p,width)); } // Draw triangles -#line 707 "runpicture.in" +#line 687 "runpicture.in" // void draw(picture *f, triplearray *v, Intarray2 *vi, triplearray *n, Intarray2 *ni, penarray *p, real opacity, real shininess, real PRCshininess, penarray *c=emptyarray, Intarray2 *ci=emptyarray); -void gen_runpicture56(stack *Stack) +void gen_runpicture57(stack *Stack) { Intarray2 * ci=vm::pop<Intarray2 *>(Stack,emptyarray); penarray * c=vm::pop<penarray *>(Stack,emptyarray); @@ -1130,63 +1115,63 @@ void gen_runpicture56(stack *Stack) Intarray2 * vi=vm::pop<Intarray2 *>(Stack); triplearray * v=vm::pop<triplearray *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 711 "runpicture.in" +#line 691 "runpicture.in" f->append(new drawTriangles(*v,*vi,*n,*ni,*p,opacity,shininess,PRCshininess, *c,*ci)); } -#line 716 "runpicture.in" +#line 696 "runpicture.in" // triple min3(picture *f); -void gen_runpicture57(stack *Stack) +void gen_runpicture58(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 717 "runpicture.in" +#line 697 "runpicture.in" {Stack->push<triple>(f->bounds3().Min()); return;} } -#line 721 "runpicture.in" +#line 701 "runpicture.in" // triple max3(picture *f); -void gen_runpicture58(stack *Stack) +void gen_runpicture59(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 722 "runpicture.in" +#line 702 "runpicture.in" {Stack->push<triple>(f->bounds3().Max()); return;} } -#line 726 "runpicture.in" +#line 706 "runpicture.in" // triple size3(picture *f); -void gen_runpicture59(stack *Stack) +void gen_runpicture60(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 727 "runpicture.in" +#line 707 "runpicture.in" bbox3 b=f->bounds3(); {Stack->push<triple>(b.Max()-b.Min()); return;} } -#line 732 "runpicture.in" +#line 712 "runpicture.in" // pair minratio(picture *f); -void gen_runpicture60(stack *Stack) +void gen_runpicture61(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 733 "runpicture.in" +#line 713 "runpicture.in" {Stack->push<pair>(f->ratio(::min)); return;} } -#line 737 "runpicture.in" +#line 717 "runpicture.in" // pair maxratio(picture *f); -void gen_runpicture61(stack *Stack) +void gen_runpicture62(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 738 "runpicture.in" +#line 718 "runpicture.in" {Stack->push<pair>(f->ratio(::max)); return;} } -#line 742 "runpicture.in" +#line 722 "runpicture.in" // bool is3D(picture *f); -void gen_runpicture62(stack *Stack) +void gen_runpicture63(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 743 "runpicture.in" +#line 723 "runpicture.in" {Stack->push<bool>(f->have3D()); return;} } @@ -1196,132 +1181,134 @@ namespace trans { void gen_runpicture_venv(venv &ve) { -#line 104 "runpicture.in" +#line 126 "runpicture.in" REGISTER_BLTIN(run::newPicture,"newPicture"); -#line 109 "runpicture.in" +#line 131 "runpicture.in" addFunc(ve, run::gen_runpicture1, primBoolean(), SYM(empty), formal(primPicture(), SYM(f), false, false)); -#line 114 "runpicture.in" +#line 136 "runpicture.in" addFunc(ve, run::gen_runpicture2, primVoid(), SYM(erase), formal(primPicture(), SYM(f), false, false)); -#line 119 "runpicture.in" +#line 141 "runpicture.in" addFunc(ve, run::gen_runpicture3, primPair(), SYM(min), formal(primPicture(), SYM(f), false, false)); -#line 124 "runpicture.in" +#line 146 "runpicture.in" addFunc(ve, run::gen_runpicture4, primPair(), SYM(max), formal(primPicture(), SYM(f), false, false)); -#line 129 "runpicture.in" +#line 151 "runpicture.in" addFunc(ve, run::gen_runpicture5, primPair(), SYM(size), formal(primPicture(), SYM(f), false, false)); -#line 135 "runpicture.in" +#line 157 "runpicture.in" addFunc(ve, run::gen_runpicture6, primVoid(), SYM(_draw), formal(primPicture(), SYM(f), false, false), formal(primPath(), SYM(g), false, false), formal(primPen(), SYM(p), false, false)); -#line 140 "runpicture.in" +#line 162 "runpicture.in" addFunc(ve, run::gen_runpicture7, primVoid(), SYM(fill), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primPen(), SYM(p), true, false), formal(primBoolean(), SYM(copy), true, false)); -#line 146 "runpicture.in" +#line 168 "runpicture.in" addFunc(ve, run::gen_runpicture8, primVoid(), SYM(latticeshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(penArray2() , SYM(p), false, false), formal(primTransform(), SYM(t), true, false), formal(primBoolean(), SYM(copy), true, false)); -#line 155 "runpicture.in" +#line 177 "runpicture.in" addFunc(ve, run::gen_runpicture9, primVoid(), SYM(axialshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(pena), false, false), formal(primPair(), SYM(a), false, false), formal(primBoolean(), SYM(extenda), true, false), formal(primPen(), SYM(penb), false, false), formal(primPair(), SYM(b), false, false), formal(primBoolean(), SYM(extendb), true, false), formal(primBoolean(), SYM(copy), true, false)); -#line 164 "runpicture.in" +#line 186 "runpicture.in" addFunc(ve, run::gen_runpicture10, primVoid(), SYM(radialshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(pena), false, false), formal(primPair(), SYM(a), false, false), formal(primReal(), SYM(ra), false, false), formal(primBoolean(), SYM(extenda), true, false), formal(primPen(), SYM(penb), false, false), formal(primPair(), SYM(b), false, false), formal(primReal(), SYM(rb), false, false), formal(primBoolean(), SYM(extendb), true, false), formal(primBoolean(), SYM(copy), true, false)); -#line 173 "runpicture.in" +#line 195 "runpicture.in" addFunc(ve, run::gen_runpicture11, primVoid(), SYM(gouraudshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(penArray() , SYM(p), false, false), formal(pairArray(), SYM(z), false, false), formal(IntArray(), SYM(edges), false, false), formal(primBoolean(), SYM(copy), true, false)); -#line 184 "runpicture.in" +#line 206 "runpicture.in" addFunc(ve, run::gen_runpicture12, primVoid(), SYM(gouraudshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(penArray() , SYM(p), false, false), formal(IntArray(), SYM(edges), false, false), formal(primBoolean(), SYM(copy), true, false)); -#line 208 "runpicture.in" +#line 230 "runpicture.in" addFunc(ve, run::gen_runpicture13, primVoid(), SYM(tensorshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(penArray2() , SYM(p), false, false), formal(pathArray() , SYM(b), true, false), formal(pairArray2(), SYM(z), true, false), formal(primBoolean(), SYM(copy), true, false)); -#line 223 "runpicture.in" +#line 245 "runpicture.in" addFunc(ve, run::gen_runpicture14, primVoid(), SYM(functionshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(primString() , SYM(shader), true, false), formal(primBoolean(), SYM(copy), true, false)); -#line 231 "runpicture.in" +#line 253 "runpicture.in" addFunc(ve, run::gen_runpicture15, primVoid(), SYM(clip), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(primBoolean(), SYM(copy), true, false)); -#line 241 "runpicture.in" +#line 263 "runpicture.in" addFunc(ve, run::gen_runpicture16, primVoid(), SYM(beginclip), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(primBoolean(), SYM(copy), true, false)); -#line 248 "runpicture.in" +#line 270 "runpicture.in" addFunc(ve, run::gen_runpicture17, primVoid(), SYM(endclip), formal(primPicture(), SYM(f), false, false)); -#line 253 "runpicture.in" +#line 275 "runpicture.in" addFunc(ve, run::gen_runpicture18, primVoid(), SYM(gsave), formal(primPicture(), SYM(f), false, false)); -#line 258 "runpicture.in" +#line 280 "runpicture.in" addFunc(ve, run::gen_runpicture19, primVoid(), SYM(grestore), formal(primPicture(), SYM(f), false, false)); -#line 263 "runpicture.in" +#line 285 "runpicture.in" addFunc(ve, run::gen_runpicture20, primVoid(), SYM(begingroup), formal(primPicture(), SYM(f), false, false)); -#line 268 "runpicture.in" +#line 290 "runpicture.in" addFunc(ve, run::gen_runpicture21, primVoid(), SYM(endgroup), formal(primPicture(), SYM(f), false, false)); -#line 273 "runpicture.in" +#line 295 "runpicture.in" addFunc(ve, run::gen_runpicture22, primVoid(), SYM(_begingroup3), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(name), false, false), formal(primReal(), SYM(compression), false, false), formal(primReal(), SYM(granularity), false, false), formal(primBoolean(), SYM(closed), false, false), formal(primBoolean(), SYM(tessellate), false, false), formal(primBoolean(), SYM(dobreak), false, false), formal(primBoolean(), SYM(nobreak), false, false), formal(primTriple(), SYM(center), false, false), formal(primInt(), SYM(interaction), false, false)); -#line 282 "runpicture.in" +#line 304 "runpicture.in" addFunc(ve, run::gen_runpicture23, primVoid(), SYM(endgroup3), formal(primPicture(), SYM(f), false, false)); -#line 287 "runpicture.in" +#line 309 "runpicture.in" addFunc(ve, run::gen_runpicture24, primVoid(), SYM(add), formal(primPicture(), SYM(dest), false, false), formal(primPicture(), SYM(src), false, false)); -#line 292 "runpicture.in" +#line 314 "runpicture.in" addFunc(ve, run::gen_runpicture25, primVoid(), SYM(prepend), formal(primPicture(), SYM(dest), false, false), formal(primPicture(), SYM(src), false, false)); -#line 297 "runpicture.in" +#line 319 "runpicture.in" addFunc(ve, run::gen_runpicture26, primVoid(), SYM(postscript), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(s), false, false)); -#line 302 "runpicture.in" +#line 324 "runpicture.in" addFunc(ve, run::gen_runpicture27, primVoid(), SYM(tex), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(s), false, false)); -#line 307 "runpicture.in" +#line 329 "runpicture.in" addFunc(ve, run::gen_runpicture28, primVoid(), SYM(postscript), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(s), false, false), formal(primPair(), SYM(min), false, false), formal(primPair(), SYM(max), false, false)); -#line 312 "runpicture.in" +#line 334 "runpicture.in" addFunc(ve, run::gen_runpicture29, primVoid(), SYM(tex), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(s), false, false), formal(primPair(), SYM(min), false, false), formal(primPair(), SYM(max), false, false)); -#line 317 "runpicture.in" +#line 339 "runpicture.in" addFunc(ve, run::gen_runpicture30, primVoid(), SYM(texpreamble), formal(primString() , SYM(s), false, false)); -#line 325 "runpicture.in" +#line 347 "runpicture.in" addFunc(ve, run::gen_runpicture31, primVoid(), SYM(deletepreamble)); -#line 332 "runpicture.in" +#line 354 "runpicture.in" addFunc(ve, run::gen_runpicture32, primVoid(), SYM(_labelpath), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(s), false, false), formal(primString() , SYM(size), false, false), formal(primPath(), SYM(g), false, false), formal(primString() , SYM(justify), false, false), formal(primPair(), SYM(offset), false, false), formal(primPen(), SYM(p), false, false)); -#line 338 "runpicture.in" +#line 360 "runpicture.in" addFunc(ve, run::gen_runpicture33, primVoid(), SYM(texreset)); -#line 346 "runpicture.in" +#line 368 "runpicture.in" addFunc(ve, run::gen_runpicture34, primVoid(), SYM(layer), formal(primPicture(), SYM(f), false, false)); -#line 351 "runpicture.in" +#line 373 "runpicture.in" addFunc(ve, run::gen_runpicture35, primVoid(), SYM(newpage), formal(primPicture(), SYM(f), false, false)); -#line 356 "runpicture.in" +#line 378 "runpicture.in" addFunc(ve, run::gen_runpicture36, primVoid(), SYM(_image), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(data), false, false), formal(primPair(), SYM(initial), false, false), formal(primPair(), SYM(final), false, false), formal(penArray() , SYM(palette), true, false), formal(primTransform(), SYM(t), true, false), formal(primBoolean(), SYM(copy), true, false), formal(primBoolean(), SYM(antialias), true, false)); -#line 366 "runpicture.in" +#line 388 "runpicture.in" addFunc(ve, run::gen_runpicture37, primVoid(), SYM(_image), formal(primPicture(), SYM(f), false, false), formal(penArray2() , SYM(data), false, false), formal(primPair(), SYM(initial), false, false), formal(primPair(), SYM(final), false, false), formal(primTransform(), SYM(t), true, false), formal(primBoolean(), SYM(copy), true, false), formal(primBoolean(), SYM(antialias), true, false)); -#line 374 "runpicture.in" +#line 396 "runpicture.in" addFunc(ve, run::gen_runpicture38, primVoid(), SYM(_image), formal(primPicture(), SYM(f), false, false), formal(penFunction(), SYM(f), false, false), formal(primInt(), SYM(width), false, false), formal(primInt(), SYM(height), false, false), formal(primPair(), SYM(initial), false, false), formal(primPair(), SYM(final), false, false), formal(primTransform(), SYM(t), true, false), formal(primBoolean(), SYM(antialias), true, false)); -#line 381 "runpicture.in" +#line 403 "runpicture.in" addFunc(ve, run::gen_runpicture39, primString() , SYM(nativeformat)); -#line 386 "runpicture.in" +#line 408 "runpicture.in" addFunc(ve, run::gen_runpicture40, primBoolean(), SYM(latex)); -#line 391 "runpicture.in" +#line 413 "runpicture.in" addFunc(ve, run::gen_runpicture41, primBoolean(), SYM(pdf)); -#line 396 "runpicture.in" - addFunc(ve, run::gen_runpicture42, primVoid(), SYM(shipout), formal(primString() , SYM(prefix), true, false), formal(primPicture(), SYM(f), false, false), formal(primPicture(), SYM(preamble), true, false), formal(primString() , SYM(format), true, false), formal(primBoolean(), SYM(wait), true, false), formal(primBoolean(), SYM(view), true, false), formal(transformFunction(), SYM(xform), false, false)); -#line 448 "runpicture.in" +#line 418 "runpicture.in" + addFunc(ve, run::gen_runpicture42, primVoid(), SYM(_shipout), formal(primString() , SYM(prefix), true, false), formal(primPicture(), SYM(f), false, false), formal(primPicture(), SYM(preamble), true, false), formal(primString() , SYM(format), true, false), formal(primBoolean(), SYM(wait), true, false), formal(primBoolean(), SYM(view), true, false), formal(primTransform(), SYM(t), true, false)); +#line 467 "runpicture.in" addFunc(ve, run::gen_runpicture43, primVoid(), SYM(shipout3), formal(primString() , SYM(prefix), false, false), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(format), true, false), formal(primReal(), SYM(width), false, false), formal(primReal(), SYM(height), false, false), formal(primReal(), SYM(angle), false, false), formal(primReal(), SYM(zoom), false, false), formal(primTriple(), SYM(m), false, false), formal(primTriple(), SYM(m), false, false), formal(primPair(), SYM(shift), false, false), formal(realArray2(), SYM(t), false, false), formal(realArray(), SYM(background), false, false), formal(tripleArray(), SYM(lights), false, false), formal(realArray2(), SYM(diffuse), false, false), formal(realArray2(), SYM(ambient), false, false), formal(realArray2(), SYM(specular), false, false), formal(primBoolean(), SYM(viewportlighting), false, false), formal(primBoolean(), SYM(view), true, false)); -#line 476 "runpicture.in" +#line 495 "runpicture.in" addFunc(ve, run::gen_runpicture44, primVoid(), SYM(shipout3), formal(primString() , SYM(prefix), false, false), formal(primPicture(), SYM(f), false, false)); -#line 481 "runpicture.in" - addFunc(ve, run::gen_runpicture45, primVoid(), SYM(deconstruct), formal(primPicture(), SYM(f), false, false), formal(primPicture(), SYM(preamble), true, false), formal(primReal(), SYM(magnification), true, false), formal(transformFunction(), SYM(xform), false, false)); +#line 500 "runpicture.in" + addFunc(ve, run::gen_runpicture45, primVoid(), SYM(xmap), formal(primString() , SYM(key), false, false), formal(primTransform(), SYM(t), true, false)); +#line 513 "runpicture.in" + addFunc(ve, run::gen_runpicture46, primVoid(), SYM(deconstruct), formal(primPicture(), SYM(f), false, false), formal(primPicture(), SYM(preamble), true, false), formal(primTransform(), SYM(t), true, false)); +#line 605 "runpicture.in" + addFunc(ve, run::gen_runpicture47, primVoid(), SYM(_draw), formal(primPicture(), SYM(f), false, false), formal(primPath3(), SYM(g), false, false), formal(primTriple(), SYM(center), true, false), formal(primPen(), SYM(p), false, false), formal(primInt(), SYM(interaction), true, false)); +#line 615 "runpicture.in" + addFunc(ve, run::gen_runpicture48, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(center), false, false), formal(primBoolean(), SYM(straight), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(prcshininess), false, false), formal(penArray() , SYM(colors), false, false), formal(primInt(), SYM(interaction), false, false), formal(primBoolean(), SYM(prc), true, false)); #line 625 "runpicture.in" - addFunc(ve, run::gen_runpicture46, primVoid(), SYM(_draw), formal(primPicture(), SYM(f), false, false), formal(primPath3(), SYM(g), false, false), formal(primTriple(), SYM(center), true, false), formal(primPen(), SYM(p), false, false), formal(primInt(), SYM(interaction), true, false)); -#line 635 "runpicture.in" - addFunc(ve, run::gen_runpicture47, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(center), false, false), formal(primBoolean(), SYM(straight), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(prcshininess), false, false), formal(penArray() , SYM(colors), false, false), formal(primInt(), SYM(interaction), false, false), formal(primBoolean(), SYM(prc), true, false)); -#line 645 "runpicture.in" - addFunc(ve, run::gen_runpicture48, primVoid(), SYM(drawbeziertriangle), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(center), false, false), formal(primBoolean(), SYM(straight), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(prcshininess), false, false), formal(penArray() , SYM(colors), false, false), formal(primInt(), SYM(interaction), false, false), formal(primBoolean(), SYM(prc), true, false)); -#line 656 "runpicture.in" - addFunc(ve, run::gen_runpicture49, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray(), SYM(p), false, false), formal(realArray(), SYM(knot), false, false), formal(realArray(), SYM(weights), true, false), formal(primPen(), SYM(p), false, false)); -#line 663 "runpicture.in" - addFunc(ve, run::gen_runpicture50, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(realArray(), SYM(uknot), false, false), formal(realArray(), SYM(vknot), false, false), formal(realArray2(), SYM(weights), true, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(prcshininess), false, false), formal(penArray() , SYM(colors), false, false)); -#line 672 "runpicture.in" - addFunc(ve, run::gen_runpicture51, primVoid(), SYM(drawPRCsphere), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(primBoolean(), SYM(half), true, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primInt(), SYM(type), false, false)); -#line 679 "runpicture.in" - addFunc(ve, run::gen_runpicture52, primVoid(), SYM(drawPRCcylinder), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false)); + addFunc(ve, run::gen_runpicture49, primVoid(), SYM(drawbeziertriangle), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(center), false, false), formal(primBoolean(), SYM(straight), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(prcshininess), false, false), formal(penArray() , SYM(colors), false, false), formal(primInt(), SYM(interaction), false, false), formal(primBoolean(), SYM(prc), true, false)); +#line 636 "runpicture.in" + addFunc(ve, run::gen_runpicture50, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray(), SYM(p), false, false), formal(realArray(), SYM(knot), false, false), formal(realArray(), SYM(weights), true, false), formal(primPen(), SYM(p), false, false)); +#line 643 "runpicture.in" + addFunc(ve, run::gen_runpicture51, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(realArray(), SYM(uknot), false, false), formal(realArray(), SYM(vknot), false, false), formal(realArray2(), SYM(weights), true, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(prcshininess), false, false), formal(penArray() , SYM(colors), false, false)); +#line 652 "runpicture.in" + addFunc(ve, run::gen_runpicture52, primVoid(), SYM(drawPRCsphere), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(primBoolean(), SYM(half), true, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primInt(), SYM(type), false, false)); +#line 659 "runpicture.in" + addFunc(ve, run::gen_runpicture53, primVoid(), SYM(drawPRCcylinder), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false)); +#line 666 "runpicture.in" + addFunc(ve, run::gen_runpicture54, primVoid(), SYM(drawPRCdisk), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false)); +#line 673 "runpicture.in" + addFunc(ve, run::gen_runpicture55, primVoid(), SYM(drawPRCtube), formal(primPicture(), SYM(f), false, false), formal(primPath3(), SYM(center), false, false), formal(primPath3(), SYM(g), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false)); +#line 680 "runpicture.in" + addFunc(ve, run::gen_runpicture56, primVoid(), SYM(drawpixel), formal(primPicture(), SYM(f), false, false), formal(primTriple(), SYM(v), false, false), formal(primPen(), SYM(p), false, false), formal(primReal(), SYM(width), true, false)); #line 686 "runpicture.in" - addFunc(ve, run::gen_runpicture53, primVoid(), SYM(drawPRCdisk), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false)); -#line 693 "runpicture.in" - addFunc(ve, run::gen_runpicture54, primVoid(), SYM(drawPRCtube), formal(primPicture(), SYM(f), false, false), formal(primPath3(), SYM(center), false, false), formal(primPath3(), SYM(g), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false)); -#line 700 "runpicture.in" - addFunc(ve, run::gen_runpicture55, primVoid(), SYM(drawpixel), formal(primPicture(), SYM(f), false, false), formal(primTriple(), SYM(v), false, false), formal(primPen(), SYM(p), false, false), formal(primReal(), SYM(width), true, false)); + addFunc(ve, run::gen_runpicture57, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray(), SYM(v), false, false), formal(IntArray2(), SYM(vi), false, false), formal(tripleArray(), SYM(n), false, false), formal(IntArray2(), SYM(ni), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(prcshininess), false, false), formal(penArray() , SYM(c), true, false), formal(IntArray2(), SYM(ci), true, false)); +#line 696 "runpicture.in" + addFunc(ve, run::gen_runpicture58, primTriple(), SYM(min3), formal(primPicture(), SYM(f), false, false)); +#line 701 "runpicture.in" + addFunc(ve, run::gen_runpicture59, primTriple(), SYM(max3), formal(primPicture(), SYM(f), false, false)); #line 706 "runpicture.in" - addFunc(ve, run::gen_runpicture56, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray(), SYM(v), false, false), formal(IntArray2(), SYM(vi), false, false), formal(tripleArray(), SYM(n), false, false), formal(IntArray2(), SYM(ni), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(prcshininess), false, false), formal(penArray() , SYM(c), true, false), formal(IntArray2(), SYM(ci), true, false)); -#line 716 "runpicture.in" - addFunc(ve, run::gen_runpicture57, primTriple(), SYM(min3), formal(primPicture(), SYM(f), false, false)); -#line 721 "runpicture.in" - addFunc(ve, run::gen_runpicture58, primTriple(), SYM(max3), formal(primPicture(), SYM(f), false, false)); -#line 726 "runpicture.in" - addFunc(ve, run::gen_runpicture59, primTriple(), SYM(size3), formal(primPicture(), SYM(f), false, false)); -#line 732 "runpicture.in" - addFunc(ve, run::gen_runpicture60, primPair(), SYM(minratio), formal(primPicture(), SYM(f), false, false)); -#line 737 "runpicture.in" - addFunc(ve, run::gen_runpicture61, primPair(), SYM(maxratio), formal(primPicture(), SYM(f), false, false)); -#line 742 "runpicture.in" - addFunc(ve, run::gen_runpicture62, primBoolean(), SYM(is3D), formal(primPicture(), SYM(f), false, false)); + addFunc(ve, run::gen_runpicture60, primTriple(), SYM(size3), formal(primPicture(), SYM(f), false, false)); +#line 712 "runpicture.in" + addFunc(ve, run::gen_runpicture61, primPair(), SYM(minratio), formal(primPicture(), SYM(f), false, false)); +#line 717 "runpicture.in" + addFunc(ve, run::gen_runpicture62, primPair(), SYM(maxratio), formal(primPicture(), SYM(f), false, false)); +#line 722 "runpicture.in" + addFunc(ve, run::gen_runpicture63, primBoolean(), SYM(is3D), formal(primPicture(), SYM(f), false, false)); } } // namespace trans |