/***** Autogenerated from runpicture.in; changes will be overwritten *****/ #line 1 "runtimebase.in" /***** * runtimebase.in * Andy Hammerlindl 2009/07/28 * * Common declarations needed for all code-generating .in files. * *****/ #line 1 "runpicture.in" /***** * runpicture.in * * Runtime functions for picture operations. * *****/ #line 1 "runtimebase.in" #include "stack.h" #include "types.h" #include "builtin.h" #include "entry.h" #include "errormsg.h" #include "array.h" #include "triple.h" #include "callable.h" using vm::stack; using vm::error; using vm::array; using vm::callable; using types::formal; using types::function; using camp::triple; #define PRIMITIVE(name,Name,asyName) using types::prim##Name; #include #undef PRIMITIVE typedef double real; void unused(void *); namespace run { array *copyArray(array *a); array *copyArray2(array *a); array *copyArray3(array *a); double *copyArrayC(const array *a, size_t dim=0, GCPlacement placement=NoGC); double *copyArray2C(const array *a, bool square=true, size_t dim2=0, GCPlacement placement=NoGC); triple *copyTripleArrayC(const array *a, size_t dim=0); triple *copyTripleArray2C(const array *a, bool square=true, size_t dim2=0); double *copyTripleArray2Components(array *a, bool square=true, size_t dim2=0, GCPlacement placement=NoGC); } function *realRealFunction(); #define CURRENTPEN processData().currentpen #line 27 "runpicture.in" #include "picture.h" #include "drawelement.h" #include "path.h" #include "array.h" #include "arrayop.h" #include "drawpath.h" #include "drawfill.h" #include "drawclipbegin.h" #include "drawclipend.h" #include "drawgsave.h" #include "drawgrestore.h" #include "drawgroup.h" #include "drawverbatim.h" #include "drawlabel.h" #include "drawlayer.h" #include "drawimage.h" #include "drawpath3.h" #include "drawsurface.h" using namespace camp; using namespace settings; using namespace vm; typedef array Intarray; typedef array realarray; typedef array realarray2; typedef array pairarray; typedef array pairarray2; typedef array triplearray; typedef array triplearray2; typedef array patharray; typedef array penarray; typedef array penarray2; typedef callable callableTransform; using types::IntArray; using types::realArray; using types::realArray2; using types::pairArray; using types::pairArray2; using types::tripleArray; using types::tripleArray2; using types::pathArray; using types::penArray; using types::penArray2; function *transformFunction() { return new function(primTransform()); } // Ignore unclosed begingroups but not spurious endgroups. const char *nobegin="endgroup without matching begingroup"; array *emptyarray=new array(0); array *nop(array *a) { return a; } // Autogenerated routines: namespace run { #line 92 "runpicture.in" void newPicture(stack *Stack) { #line 93 "runpicture.in" {Stack->push(new picture()); return;} } #line 97 "runpicture.in" // bool empty(picture *f); void gen_runpicture1(stack *Stack) { picture * f=vm::pop(Stack); #line 98 "runpicture.in" {Stack->push(f->null()); return;} } #line 102 "runpicture.in" // void erase(picture *f); void gen_runpicture2(stack *Stack) { picture * f=vm::pop(Stack); #line 103 "runpicture.in" f->nodes.clear(); } #line 107 "runpicture.in" // pair min(picture *f); void gen_runpicture3(stack *Stack) { picture * f=vm::pop(Stack); #line 108 "runpicture.in" {Stack->push(f->bounds().Min()); return;} } #line 112 "runpicture.in" // pair max(picture *f); void gen_runpicture4(stack *Stack) { picture * f=vm::pop(Stack); #line 113 "runpicture.in" {Stack->push(f->bounds().Max()); return;} } #line 117 "runpicture.in" // pair size(picture *f); void gen_runpicture5(stack *Stack) { picture * f=vm::pop(Stack); #line 118 "runpicture.in" bbox b=f->bounds(); {Stack->push(b.Max()-b.Min()); return;} } #line 123 "runpicture.in" // void _draw(picture *f, path g, pen p); void gen_runpicture6(stack *Stack) { pen p=vm::pop(Stack); path g=vm::pop(Stack); picture * f=vm::pop(Stack); #line 124 "runpicture.in" f->append(new drawPath(g,p)); } #line 128 "runpicture.in" // void fill(picture *f, patharray *g, pen p=CURRENTPEN, bool copy=true); void gen_runpicture7(stack *Stack) { bool copy=vm::pop(Stack,true); pen p=vm::pop(Stack,CURRENTPEN); patharray * g=vm::pop(Stack); picture * f=vm::pop(Stack); #line 129 "runpicture.in" array *(*copyarray)(array *a)=copy ? copyArray: nop; f->append(new drawFill(*copyarray(g),false,p)); } #line 134 "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) { bool copy=vm::pop(Stack,true); transform t=vm::pop(Stack,identity); penarray2 * p=vm::pop(Stack); pen fillrule=vm::pop(Stack,CURRENTPEN); bool stroke=vm::pop(Stack,false); patharray * g=vm::pop(Stack); picture * f=vm::pop(Stack); #line 137 "runpicture.in" array *(*copyarray)(array *a)=copy ? copyArray: nop; f->append(new drawLatticeShade(*copyarray(g),stroke,fillrule,*copyarray(p), t)); } #line 143 "runpicture.in" // void axialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a, pen penb, pair b, bool copy=true); void gen_runpicture9(stack *Stack) { bool copy=vm::pop(Stack,true); pair b=vm::pop(Stack); pen penb=vm::pop(Stack); pair a=vm::pop(Stack); pen pena=vm::pop(Stack); bool stroke=vm::pop(Stack,false); patharray * g=vm::pop(Stack); picture * f=vm::pop(Stack); #line 145 "runpicture.in" array *(*copyarray)(array *a)=copy ? copyArray: nop; f->append(new drawAxialShade(*copyarray(g),stroke,pena,a,penb,b)); } #line 150 "runpicture.in" // void radialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a, real ra, pen penb, pair b, real rb, bool copy=true); void gen_runpicture10(stack *Stack) { bool copy=vm::pop(Stack,true); real rb=vm::pop(Stack); pair b=vm::pop(Stack); pen penb=vm::pop(Stack); real ra=vm::pop(Stack); pair a=vm::pop(Stack); pen pena=vm::pop(Stack); bool stroke=vm::pop(Stack,false); patharray * g=vm::pop(Stack); picture * f=vm::pop(Stack); #line 152 "runpicture.in" array *(*copyarray)(array *a)=copy ? copyArray: nop; f->append(new drawRadialShade(*copyarray(g),stroke,pena,a,ra,penb,b,rb)); } #line 157 "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) { bool copy=vm::pop(Stack,true); Intarray * edges=vm::pop(Stack); pairarray * z=vm::pop(Stack); penarray * p=vm::pop(Stack); pen fillrule=vm::pop(Stack,CURRENTPEN); bool stroke=vm::pop(Stack,false); patharray * g=vm::pop(Stack); picture * f=vm::pop(Stack); #line 160 "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 168 "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) { bool copy=vm::pop(Stack,true); Intarray * edges=vm::pop(Stack); penarray * p=vm::pop(Stack); pen fillrule=vm::pop(Stack,CURRENTPEN); bool stroke=vm::pop(Stack,false); patharray * g=vm::pop(Stack); picture * f=vm::pop(Stack); #line 171 "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); Int k=0; Int in=(Int) n; for(size_t j=0; j < m; ++j) { path *P=read(g,j); assert(P); Int stop=Min(P->size(),in-k); mem::vector& nodes=P->Nodes(); for(Int i=0; i < stop; ++i) (*z)[k++]=nodes[i].point; } checkArrays(p,z); f->append(new drawGouraudShade(*copyarray(g),stroke,fillrule,*copyarray(p), *z,*copyarray(edges))); } #line 192 "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) { bool copy=vm::pop(Stack,true); pairarray2 * z=vm::pop(Stack,emptyarray); patharray * b=vm::pop(Stack,NULL); penarray2 * p=vm::pop(Stack); pen fillrule=vm::pop(Stack,CURRENTPEN); bool stroke=vm::pop(Stack,false); patharray * g=vm::pop(Stack); picture * f=vm::pop(Stack); #line 195 "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); if(nz != 0) checkEqual(nz,n); f->append(new drawTensorShade(*copyarray(g),stroke,fillrule,*copyarray2(p), *copyarray(b),*copyarray2(z))); } #line 207 "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) { bool copy=vm::pop(Stack,true); string shader=vm::pop(Stack,emptystring); pen fillrule=vm::pop(Stack,CURRENTPEN); bool stroke=vm::pop(Stack,false); patharray * g=vm::pop(Stack); picture * f=vm::pop(Stack); #line 210 "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 217 "runpicture.in" // void clip(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, bool copy=true); void gen_runpicture15(stack *Stack) { bool copy=vm::pop(Stack,true); pen fillrule=vm::pop(Stack,CURRENTPEN); bool stroke=vm::pop(Stack,false); patharray * g=vm::pop(Stack); picture * f=vm::pop(Stack); #line 219 "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 225 "runpicture.in" // void beginclip(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, bool copy=true); void gen_runpicture16(stack *Stack) { bool copy=vm::pop(Stack,true); pen fillrule=vm::pop(Stack,CURRENTPEN); bool stroke=vm::pop(Stack,false); patharray * g=vm::pop(Stack); picture * f=vm::pop(Stack); #line 227 "runpicture.in" array *(*copyarray)(array *a)=copy ? copyArray: nop; f->append(new drawClipBegin(*copyarray(g),stroke,fillrule,false)); } #line 232 "runpicture.in" // void endclip(picture *f); void gen_runpicture17(stack *Stack) { picture * f=vm::pop(Stack); #line 233 "runpicture.in" f->append(new drawClipEnd(false)); } #line 237 "runpicture.in" // void gsave(picture *f); void gen_runpicture18(stack *Stack) { picture * f=vm::pop(Stack); #line 238 "runpicture.in" f->append(new drawGsave()); } #line 242 "runpicture.in" // void grestore(picture *f); void gen_runpicture19(stack *Stack) { picture * f=vm::pop(Stack); #line 243 "runpicture.in" f->append(new drawGrestore()); } #line 247 "runpicture.in" // void begingroup(picture *f, string name=emptystring); void gen_runpicture20(stack *Stack) { string name=vm::pop(Stack,emptystring); picture * f=vm::pop(Stack); #line 248 "runpicture.in" f->append(new drawBegin(name)); } #line 252 "runpicture.in" // void endgroup(picture *f); void gen_runpicture21(stack *Stack) { picture * f=vm::pop(Stack); #line 253 "runpicture.in" f->append(new drawEnd()); } #line 257 "runpicture.in" // void add(picture *dest, picture *src); void gen_runpicture22(stack *Stack) { picture * src=vm::pop(Stack); picture * dest=vm::pop(Stack); #line 258 "runpicture.in" dest->add(*src); } #line 262 "runpicture.in" // void prepend(picture *dest, picture *src); void gen_runpicture23(stack *Stack) { picture * src=vm::pop(Stack); picture * dest=vm::pop(Stack); #line 263 "runpicture.in" dest->prepend(*src); } #line 267 "runpicture.in" // void postscript(picture *f, string s); void gen_runpicture24(stack *Stack) { string s=vm::pop(Stack); picture * f=vm::pop(Stack); #line 268 "runpicture.in" f->append(new drawVerbatim(PostScript,s)); } #line 272 "runpicture.in" // void tex(picture *f, string s); void gen_runpicture25(stack *Stack) { string s=vm::pop(Stack); picture * f=vm::pop(Stack); #line 273 "runpicture.in" f->append(new drawVerbatim(TeX,s)); } #line 277 "runpicture.in" // void postscript(picture *f, string s, pair min, pair max); void gen_runpicture26(stack *Stack) { pair max=vm::pop(Stack); pair min=vm::pop(Stack); string s=vm::pop(Stack); picture * f=vm::pop(Stack); #line 278 "runpicture.in" f->append(new drawVerbatim(PostScript,s,min,max)); } #line 282 "runpicture.in" // void tex(picture *f, string s, pair min, pair max); void gen_runpicture27(stack *Stack) { pair max=vm::pop(Stack); pair min=vm::pop(Stack); string s=vm::pop(Stack); picture * f=vm::pop(Stack); #line 283 "runpicture.in" f->append(new drawVerbatim(TeX,s,min,max)); } #line 287 "runpicture.in" // void texpreamble(string s); void gen_runpicture28(stack *Stack) { string s=vm::pop(Stack); #line 288 "runpicture.in" string t=s+"\n"; processDataStruct &pd=processData(); pd.TeXpipepreamble.push_back(t); pd.TeXpreamble.push_back(t); } #line 295 "runpicture.in" // void deletepreamble(); void gen_runpicture29(stack *) { #line 296 "runpicture.in" if(getSetting("inlinetex")) { unlink(auxname(outname(),"pre").c_str()); } } #line 302 "runpicture.in" // void _labelpath(picture *f, string s, string size, path g, string justify, pair offset, pen p); void gen_runpicture30(stack *Stack) { pen p=vm::pop(Stack); pair offset=vm::pop(Stack); string justify=vm::pop(Stack); path g=vm::pop(Stack); string size=vm::pop(Stack); string s=vm::pop(Stack); picture * f=vm::pop(Stack); #line 304 "runpicture.in" f->append(new drawLabelPath(s,size,g,justify,offset,p)); } #line 308 "runpicture.in" // void texreset(); void gen_runpicture31(stack *) { #line 309 "runpicture.in" processDataStruct &pd=processData(); pd.TeXpipepreamble.clear(); pd.TeXpreamble.clear(); pd.tex.pipeclose(); } #line 316 "runpicture.in" // void layer(picture *f); void gen_runpicture32(stack *Stack) { picture * f=vm::pop(Stack); #line 317 "runpicture.in" f->append(new drawLayer()); } #line 321 "runpicture.in" // void newpage(picture *f); void gen_runpicture33(stack *Stack) { picture * f=vm::pop(Stack); #line 322 "runpicture.in" f->append(new drawNewPage()); } #line 326 "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_runpicture34(stack *Stack) { bool antialias=vm::pop(Stack,false); bool copy=vm::pop(Stack,true); transform t=vm::pop(Stack,identity); penarray * palette=vm::pop(Stack,NULL); pair final=vm::pop(Stack); pair initial=vm::pop(Stack); realarray2 * data=vm::pop(Stack); picture * f=vm::pop(Stack); #line 329 "runpicture.in" array *(*copyarray)(array *a)=copy ? copyArray: nop; array *(*copyarray2)(array *a)=copy ? copyArray2: nop; f->append(new drawImage(*copyarray2(data),*copyarray(palette), t*matrix(initial,final),antialias)); } #line 336 "runpicture.in" // void _image(picture *f, penarray2 *data, pair initial, pair final, transform t=identity, bool copy=true, bool antialias=false); void gen_runpicture35(stack *Stack) { bool antialias=vm::pop(Stack,false); bool copy=vm::pop(Stack,true); transform t=vm::pop(Stack,identity); pair final=vm::pop(Stack); pair initial=vm::pop(Stack); penarray2 * data=vm::pop(Stack); picture * f=vm::pop(Stack); #line 338 "runpicture.in" array *(*copyarray2)(array *a)=copy ? copyArray2: nop; f->append(new drawImage(*copyarray2(data),t*matrix(initial,final),antialias)); } #line 343 "runpicture.in" // string nativeformat(); void gen_runpicture36(stack *Stack) { #line 344 "runpicture.in" {Stack->push(nativeformat()); return;} } #line 348 "runpicture.in" // bool latex(); void gen_runpicture37(stack *Stack) { #line 349 "runpicture.in" {Stack->push(latex(getSetting("tex"))); return;} } #line 353 "runpicture.in" // bool pdf(); void gen_runpicture38(stack *Stack) { #line 354 "runpicture.in" {Stack->push(pdf(getSetting("tex"))); return;} } #line 358 "runpicture.in" // void shipout(string prefix=emptystring, picture *f, picture *preamble=NULL, string format=emptystring, bool wait=false, bool view=true, callableTransform *xform); void gen_runpicture39(stack *Stack) { callableTransform * xform=vm::pop(Stack); bool view=vm::pop(Stack,true); bool wait=vm::pop(Stack,false); string format=vm::pop(Stack,emptystring); picture * preamble=vm::pop(Stack,NULL); picture * f=vm::pop(Stack); string prefix=vm::pop(Stack,emptystring); #line 361 "runpicture.in" if(prefix.empty()) prefix=outname(); picture *result=new picture; unsigned level=0; picture::nodelist::iterator p; for(p = f->nodes.begin(); p != f->nodes.end(); ++p) { xform->call(Stack); transform t=pop(Stack); static transform Zero=transform(0.0,0.0,0.0,0.0,0.0,0.0); bool Delete=(t == Zero); picture *group=new picture; assert(*p); if((*p)->endgroup()) error(nobegin); 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 error(nobegin); } } } if(p == f->nodes.end()) break; assert(*p); if(!Delete) { drawElement *e=t.isIdentity() ? *p : (*p)->transformed(t); group->append(e); result->add(*group); } } result->shipout(preamble,prefix,format,0.0,wait,view); } #line 404 "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_runpicture40(stack *Stack) { bool view=vm::pop(Stack,true); bool viewportlighting=vm::pop(Stack); realarray2 * specular=vm::pop(Stack); realarray2 * ambient=vm::pop(Stack); realarray2 * diffuse=vm::pop(Stack); triplearray * lights=vm::pop(Stack); realarray * background=vm::pop(Stack); realarray2 * t=vm::pop(Stack); pair shift=vm::pop(Stack); triple M=vm::pop(Stack); triple m=vm::pop(Stack); real zoom=vm::pop(Stack); real angle=vm::pop(Stack); real height=vm::pop(Stack); real width=vm::pop(Stack); string format=vm::pop(Stack,emptystring); picture * f=vm::pop(Stack); string prefix=vm::pop(Stack); #line 410 "runpicture.in" size_t n=checkArrays(lights,diffuse); checkEqual(n,checkArray(ambient)); checkEqual(n,checkArray(specular)); real *T=copyArray2C(t,true,4); real* Background=copyArrayC(background); triple *Lights=copyTripleArrayC(lights); real *Diffuse=copyArray2C(diffuse,false,4,UseGC); real *Ambient=copyArray2C(ambient,false,4,UseGC); real *Specular=copyArray2C(specular,false,4,UseGC); f->shipout3(prefix,format,width,height,angle,zoom,m,M,shift,T,Background,n, Lights,Diffuse,Ambient,Specular,viewportlighting,view); delete[] Background; delete[] T; } #line 430 "runpicture.in" // void shipout3(string prefix, picture *f, Intarray *index, triplearray *center); void gen_runpicture41(stack *Stack) { triplearray * center=vm::pop(Stack); Intarray * index=vm::pop(Stack); picture * f=vm::pop(Stack); string prefix=vm::pop(Stack); #line 431 "runpicture.in" f->shipout3(prefix,index,center); } #line 435 "runpicture.in" // void deconstruct(picture *f, picture *preamble=NULL, real magnification=1, callableTransform *xform); void gen_runpicture42(stack *Stack) { callableTransform * xform=vm::pop(Stack); real magnification=vm::pop(Stack,1); picture * preamble=vm::pop(Stack,NULL); picture * f=vm::pop(Stack); #line 437 "runpicture.in" unsigned level=0; unsigned n=0; string prefix=outname(); const string xformat="png"; static long arg_max=sysconf(_SC_ARG_MAX); const unsigned maxargs=::min(arg_max/(prefix.size()+xformat.size()+25ul), 256ul); cout << maxargs << newl; string preformat=nativeformat(); const string Done="Done"; const string Error="Error"; mem::vector 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 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(converter)); cmd.push_back("-q"); cmd.push_back("-dNOPAUSE"); cmd.push_back("-dBATCH"); 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(Stack); assert(*p); if((*p)->endgroup()) { cout << Error << endl; error(nobegin); } if((*p)->begingroup()) { ++level; while(p != f->nodes.end() && level) { 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 { cout << Error << endl; error(nobegin); } } } } if(p != f->nodes.end()) { assert(*p); drawElement *e=t.isIdentity() ? *p : (*p)->transformed(t); group->append(e); bbox b; 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; cout << b << newl; ++n; ++p; ++arg; } if(p == f->nodes.end() || arg >= maxargs) { arg=0; ++batch; cout.flush(); int status=System(cmd,0,true,converter,hint); if(status) { cout << Error << endl; error("deconstruct failed"); } } } if(!getSetting("keep")) { for(mem::list::iterator p=nameStack.begin(); p != nameStack.end(); ++p) unlink(p->c_str()); } cout << Done << endl; } } // Three-dimensional picture and surface operations // Bezier curve #line 562 "runpicture.in" // void _draw(picture *f, path3 g, pen p, string name=emptystring); void gen_runpicture43(stack *Stack) { string name=vm::pop(Stack,emptystring); pen p=vm::pop(Stack); path3 g=vm::pop(Stack); picture * f=vm::pop(Stack); #line 563 "runpicture.in" if(g.size() > 0) f->append(new drawPath3(g,p,name)); } // Bezier patch #line 569 "runpicture.in" // void draw(picture *f, triplearray2 *P, triple center, bool straight, penarray *p, real opacity, real shininess, real PRCshininess, real granularity, triple normal, penarray *colors, bool lighton, string name=emptystring, Int interaction); void gen_runpicture44(stack *Stack) { Int interaction=vm::pop(Stack); string name=vm::pop(Stack,emptystring); bool lighton=vm::pop(Stack); penarray * colors=vm::pop(Stack); triple normal=vm::pop(Stack); real granularity=vm::pop(Stack); real PRCshininess=vm::pop(Stack); real shininess=vm::pop(Stack); real opacity=vm::pop(Stack); penarray * p=vm::pop(Stack); bool straight=vm::pop(Stack); triple center=vm::pop(Stack); triplearray2 * P=vm::pop(Stack); picture * f=vm::pop(Stack); #line 573 "runpicture.in" f->append(new drawSurface(*P,center,straight,*p,opacity,shininess, PRCshininess,granularity,normal,*colors,lighton, name,interaction)); } // General NURBS curve #line 580 "runpicture.in" // void draw(picture *f, triplearray *P, realarray *knot, realarray *weights=emptyarray, pen p, string name=emptystring); void gen_runpicture45(stack *Stack) { string name=vm::pop(Stack,emptystring); pen p=vm::pop(Stack); realarray * weights=vm::pop(Stack,emptyarray); realarray * knot=vm::pop(Stack); triplearray * P=vm::pop(Stack); picture * f=vm::pop(Stack); #line 582 "runpicture.in" f->append(new drawNurbsPath3(*P,knot,weights,p,name)); } // General NURBS surface #line 587 "runpicture.in" // void draw(picture *f, triplearray2 *P, realarray *uknot, realarray *vknot, realarray2 *weights=emptyarray, penarray *p, real opacity, real shininess, real PRCshininess, real granularity, penarray *colors, bool lighton, string name=emptystring); void gen_runpicture46(stack *Stack) { string name=vm::pop(Stack,emptystring); bool lighton=vm::pop(Stack); penarray * colors=vm::pop(Stack); real granularity=vm::pop(Stack); real PRCshininess=vm::pop(Stack); real shininess=vm::pop(Stack); real opacity=vm::pop(Stack); penarray * p=vm::pop(Stack); realarray2 * weights=vm::pop(Stack,emptyarray); realarray * vknot=vm::pop(Stack); realarray * uknot=vm::pop(Stack); triplearray2 * P=vm::pop(Stack); picture * f=vm::pop(Stack); #line 591 "runpicture.in" f->append(new drawNurbs(*P,uknot,vknot,weights,*p,opacity,shininess, PRCshininess,granularity,*colors,lighton,name)); } #line 596 "runpicture.in" // triple min3(picture *f); void gen_runpicture47(stack *Stack) { picture * f=vm::pop(Stack); #line 597 "runpicture.in" {Stack->push(f->bounds3().Min()); return;} } #line 601 "runpicture.in" // triple max3(picture *f); void gen_runpicture48(stack *Stack) { picture * f=vm::pop(Stack); #line 602 "runpicture.in" {Stack->push(f->bounds3().Max()); return;} } #line 606 "runpicture.in" // triple size3(picture *f); void gen_runpicture49(stack *Stack) { picture * f=vm::pop(Stack); #line 607 "runpicture.in" bbox3 b=f->bounds3(); {Stack->push(b.Max()-b.Min()); return;} } #line 612 "runpicture.in" // pair minratio(picture *f); void gen_runpicture50(stack *Stack) { picture * f=vm::pop(Stack); #line 613 "runpicture.in" {Stack->push(f->ratio(::min)); return;} } #line 617 "runpicture.in" // pair maxratio(picture *f); void gen_runpicture51(stack *Stack) { picture * f=vm::pop(Stack); #line 618 "runpicture.in" {Stack->push(f->ratio(::max)); return;} } #line 622 "runpicture.in" // bool is3D(picture *f); void gen_runpicture52(stack *Stack) { picture * f=vm::pop(Stack); #line 623 "runpicture.in" {Stack->push(f->have3D()); return;} } } // namespace run namespace trans { void gen_runpicture_venv(venv &ve) { #line 92 "runpicture.in" REGISTER_BLTIN(run::newPicture,"newPicture"); #line 97 "runpicture.in" addFunc(ve, run::gen_runpicture1, primBoolean(), "empty", formal(primPicture(), "f", false, false)); #line 102 "runpicture.in" addFunc(ve, run::gen_runpicture2, primVoid(), "erase", formal(primPicture(), "f", false, false)); #line 107 "runpicture.in" addFunc(ve, run::gen_runpicture3, primPair(), "min", formal(primPicture(), "f", false, false)); #line 112 "runpicture.in" addFunc(ve, run::gen_runpicture4, primPair(), "max", formal(primPicture(), "f", false, false)); #line 117 "runpicture.in" addFunc(ve, run::gen_runpicture5, primPair(), "size", formal(primPicture(), "f", false, false)); #line 123 "runpicture.in" addFunc(ve, run::gen_runpicture6, primVoid(), "_draw", formal(primPicture(), "f", false, false), formal(primPath(), "g", false, false), formal(primPen(), "p", false, false)); #line 128 "runpicture.in" addFunc(ve, run::gen_runpicture7, primVoid(), "fill", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primPen(), "p", true, false), formal(primBoolean(), "copy", true, false)); #line 134 "runpicture.in" addFunc(ve, run::gen_runpicture8, primVoid(), "latticeshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(penArray2() , "p", false, false), formal(primTransform(), "t", true, false), formal(primBoolean(), "copy", true, false)); #line 143 "runpicture.in" addFunc(ve, run::gen_runpicture9, primVoid(), "axialshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "pena", false, false), formal(primPair(), "a", false, false), formal(primPen(), "penb", false, false), formal(primPair(), "b", false, false), formal(primBoolean(), "copy", true, false)); #line 150 "runpicture.in" addFunc(ve, run::gen_runpicture10, primVoid(), "radialshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "pena", false, false), formal(primPair(), "a", false, false), formal(primReal(), "ra", false, false), formal(primPen(), "penb", false, false), formal(primPair(), "b", false, false), formal(primReal(), "rb", false, false), formal(primBoolean(), "copy", true, false)); #line 157 "runpicture.in" addFunc(ve, run::gen_runpicture11, primVoid(), "gouraudshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(penArray() , "p", false, false), formal(pairArray(), "z", false, false), formal(IntArray(), "edges", false, false), formal(primBoolean(), "copy", true, false)); #line 168 "runpicture.in" addFunc(ve, run::gen_runpicture12, primVoid(), "gouraudshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(penArray() , "p", false, false), formal(IntArray(), "edges", false, false), formal(primBoolean(), "copy", true, false)); #line 192 "runpicture.in" addFunc(ve, run::gen_runpicture13, primVoid(), "tensorshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(penArray2() , "p", false, false), formal(pathArray() , "b", true, false), formal(pairArray2(), "z", true, false), formal(primBoolean(), "copy", true, false)); #line 207 "runpicture.in" addFunc(ve, run::gen_runpicture14, primVoid(), "functionshade", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(primString() , "shader", true, false), formal(primBoolean(), "copy", true, false)); #line 215 "runpicture.in" addFunc(ve, run::gen_runpicture15, primVoid(), "clip", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(primBoolean(), "copy", true, false)); #line 225 "runpicture.in" addFunc(ve, run::gen_runpicture16, primVoid(), "beginclip", formal(primPicture(), "f", false, false), formal(pathArray() , "g", false, false), formal(primBoolean(), "stroke", true, false), formal(primPen(), "fillrule", true, false), formal(primBoolean(), "copy", true, false)); #line 232 "runpicture.in" addFunc(ve, run::gen_runpicture17, primVoid(), "endclip", formal(primPicture(), "f", false, false)); #line 237 "runpicture.in" addFunc(ve, run::gen_runpicture18, primVoid(), "gsave", formal(primPicture(), "f", false, false)); #line 242 "runpicture.in" addFunc(ve, run::gen_runpicture19, primVoid(), "grestore", formal(primPicture(), "f", false, false)); #line 247 "runpicture.in" addFunc(ve, run::gen_runpicture20, primVoid(), "begingroup", formal(primPicture(), "f", false, false), formal(primString() , "name", true, false)); #line 252 "runpicture.in" addFunc(ve, run::gen_runpicture21, primVoid(), "endgroup", formal(primPicture(), "f", false, false)); #line 257 "runpicture.in" addFunc(ve, run::gen_runpicture22, primVoid(), "add", formal(primPicture(), "dest", false, false), formal(primPicture(), "src", false, false)); #line 262 "runpicture.in" addFunc(ve, run::gen_runpicture23, primVoid(), "prepend", formal(primPicture(), "dest", false, false), formal(primPicture(), "src", false, false)); #line 267 "runpicture.in" addFunc(ve, run::gen_runpicture24, primVoid(), "postscript", formal(primPicture(), "f", false, false), formal(primString() , "s", false, false)); #line 272 "runpicture.in" addFunc(ve, run::gen_runpicture25, primVoid(), "tex", formal(primPicture(), "f", false, false), formal(primString() , "s", false, false)); #line 277 "runpicture.in" addFunc(ve, run::gen_runpicture26, primVoid(), "postscript", formal(primPicture(), "f", false, false), formal(primString() , "s", false, false), formal(primPair(), "min", false, false), formal(primPair(), "max", false, false)); #line 282 "runpicture.in" addFunc(ve, run::gen_runpicture27, primVoid(), "tex", formal(primPicture(), "f", false, false), formal(primString() , "s", false, false), formal(primPair(), "min", false, false), formal(primPair(), "max", false, false)); #line 287 "runpicture.in" addFunc(ve, run::gen_runpicture28, primVoid(), "texpreamble", formal(primString() , "s", false, false)); #line 295 "runpicture.in" addFunc(ve, run::gen_runpicture29, primVoid(), "deletepreamble"); #line 302 "runpicture.in" addFunc(ve, run::gen_runpicture30, primVoid(), "_labelpath", formal(primPicture(), "f", false, false), formal(primString() , "s", false, false), formal(primString() , "size", false, false), formal(primPath(), "g", false, false), formal(primString() , "justify", false, false), formal(primPair(), "offset", false, false), formal(primPen(), "p", false, false)); #line 308 "runpicture.in" addFunc(ve, run::gen_runpicture31, primVoid(), "texreset"); #line 316 "runpicture.in" addFunc(ve, run::gen_runpicture32, primVoid(), "layer", formal(primPicture(), "f", false, false)); #line 321 "runpicture.in" addFunc(ve, run::gen_runpicture33, primVoid(), "newpage", formal(primPicture(), "f", false, false)); #line 326 "runpicture.in" addFunc(ve, run::gen_runpicture34, primVoid(), "_image", formal(primPicture(), "f", false, false), formal(realArray2(), "data", false, false), formal(primPair(), "initial", false, false), formal(primPair(), "final", false, false), formal(penArray() , "palette", true, false), formal(primTransform(), "t", true, false), formal(primBoolean(), "copy", true, false), formal(primBoolean(), "antialias", true, false)); #line 336 "runpicture.in" addFunc(ve, run::gen_runpicture35, primVoid(), "_image", formal(primPicture(), "f", false, false), formal(penArray2() , "data", false, false), formal(primPair(), "initial", false, false), formal(primPair(), "final", false, false), formal(primTransform(), "t", true, false), formal(primBoolean(), "copy", true, false), formal(primBoolean(), "antialias", true, false)); #line 343 "runpicture.in" addFunc(ve, run::gen_runpicture36, primString() , "nativeformat"); #line 348 "runpicture.in" addFunc(ve, run::gen_runpicture37, primBoolean(), "latex"); #line 353 "runpicture.in" addFunc(ve, run::gen_runpicture38, primBoolean(), "pdf"); #line 358 "runpicture.in" addFunc(ve, run::gen_runpicture39, primVoid(), "shipout", formal(primString() , "prefix", true, false), formal(primPicture(), "f", false, false), formal(primPicture(), "preamble", true, false), formal(primString() , "format", true, false), formal(primBoolean(), "wait", true, false), formal(primBoolean(), "view", true, false), formal(transformFunction(), "xform", false, false)); #line 404 "runpicture.in" addFunc(ve, run::gen_runpicture40, primVoid(), "shipout3", formal(primString() , "prefix", false, false), formal(primPicture(), "f", false, false), formal(primString() , "format", true, false), formal(primReal(), "width", false, false), formal(primReal(), "height", false, false), formal(primReal(), "angle", false, false), formal(primReal(), "zoom", false, false), formal(primTriple(), "m", false, false), formal(primTriple(), "m", false, false), formal(primPair(), "shift", false, false), formal(realArray2(), "t", false, false), formal(realArray(), "background", false, false), formal(tripleArray(), "lights", false, false), formal(realArray2(), "diffuse", false, false), formal(realArray2(), "ambient", false, false), formal(realArray2(), "specular", false, false), formal(primBoolean(), "viewportlighting", false, false), formal(primBoolean(), "view", true, false)); #line 430 "runpicture.in" addFunc(ve, run::gen_runpicture41, primVoid(), "shipout3", formal(primString() , "prefix", false, false), formal(primPicture(), "f", false, false), formal(IntArray(), "index", false, false), formal(tripleArray(), "center", false, false)); #line 435 "runpicture.in" addFunc(ve, run::gen_runpicture42, primVoid(), "deconstruct", formal(primPicture(), "f", false, false), formal(primPicture(), "preamble", true, false), formal(primReal(), "magnification", true, false), formal(transformFunction(), "xform", false, false)); #line 558 "runpicture.in" addFunc(ve, run::gen_runpicture43, primVoid(), "_draw", formal(primPicture(), "f", false, false), formal(primPath3(), "g", false, false), formal(primPen(), "p", false, false), formal(primString() , "name", true, false)); #line 568 "runpicture.in" addFunc(ve, run::gen_runpicture44, primVoid(), "draw", formal(primPicture(), "f", false, false), formal(tripleArray2(), "p", false, false), formal(primTriple(), "center", false, false), formal(primBoolean(), "straight", false, false), formal(penArray() , "p", false, false), formal(primReal(), "opacity", false, false), formal(primReal(), "shininess", false, false), formal(primReal(), "prcshininess", false, false), formal(primReal(), "granularity", false, false), formal(primTriple(), "normal", false, false), formal(penArray() , "colors", false, false), formal(primBoolean(), "lighton", false, false), formal(primString() , "name", true, false), formal(primInt(), "interaction", false, false)); #line 579 "runpicture.in" addFunc(ve, run::gen_runpicture45, primVoid(), "draw", formal(primPicture(), "f", false, false), formal(tripleArray(), "p", false, false), formal(realArray(), "knot", false, false), formal(realArray(), "weights", true, false), formal(primPen(), "p", false, false), formal(primString() , "name", true, false)); #line 586 "runpicture.in" addFunc(ve, run::gen_runpicture46, primVoid(), "draw", formal(primPicture(), "f", false, false), formal(tripleArray2(), "p", false, false), formal(realArray(), "uknot", false, false), formal(realArray(), "vknot", false, false), formal(realArray2(), "weights", true, false), formal(penArray() , "p", false, false), formal(primReal(), "opacity", false, false), formal(primReal(), "shininess", false, false), formal(primReal(), "prcshininess", false, false), formal(primReal(), "granularity", false, false), formal(penArray() , "colors", false, false), formal(primBoolean(), "lighton", false, false), formal(primString() , "name", true, false)); #line 596 "runpicture.in" addFunc(ve, run::gen_runpicture47, primTriple(), "min3", formal(primPicture(), "f", false, false)); #line 601 "runpicture.in" addFunc(ve, run::gen_runpicture48, primTriple(), "max3", formal(primPicture(), "f", false, false)); #line 606 "runpicture.in" addFunc(ve, run::gen_runpicture49, primTriple(), "size3", formal(primPicture(), "f", false, false)); #line 612 "runpicture.in" addFunc(ve, run::gen_runpicture50, primPair(), "minratio", formal(primPicture(), "f", false, false)); #line 617 "runpicture.in" addFunc(ve, run::gen_runpicture51, primPair(), "maxratio", formal(primPicture(), "f", false, false)); #line 622 "runpicture.in" addFunc(ve, run::gen_runpicture52, primBoolean(), "is3D", formal(primPicture(), "f", false, false)); } } // namespace trans