diff options
Diffstat (limited to 'graphics/asymptote/runlabel.cc')
-rw-r--r-- | graphics/asymptote/runlabel.cc | 70 |
1 files changed, 26 insertions, 44 deletions
diff --git a/graphics/asymptote/runlabel.cc b/graphics/asymptote/runlabel.cc index 7611a05eb9..6605bc1b84 100644 --- a/graphics/asymptote/runlabel.cc +++ b/graphics/asymptote/runlabel.cc @@ -42,11 +42,11 @@ using camp::triple; #include <primitives.h> #undef PRIMITIVE -typedef double real; - void unused(void *); namespace run { +typedef double real; + array *copyArray(array *a); array *copyArray2(array *a); array *copyArray3(array *a); @@ -360,14 +360,13 @@ void gen_runlabel3(stack *Stack) int status=opentex(texname,prefix,!xe); - string pdfname,pdfname2,psname2; + string pdfname,psname2; bool keep=getSetting<bool>("keep"); if(!status) { if(xe) { string psdriver=getSetting<string>("psdriver"); pdfname=auxname(prefix,"pdf"); - pdfname2=auxname(prefix+"_","pdf"); psname2=auxname(prefix+"_","ps"); if(!fs::exists(pdfname)) {Stack->push<patharray2*>(new array(n)); return;} std::ofstream ps(psname.c_str(),std::ios::binary); @@ -375,34 +374,21 @@ void gen_runlabel3(stack *Stack) showpath(ps); - mem::vector<string> pcmd; - pcmd.push_back(getSetting<string>("gs")); - pcmd.push_back("-q"); - pcmd.push_back("-dNOCACHE"); - pcmd.push_back("-dNOPAUSE"); - pcmd.push_back("-dBATCH"); - if(safe) pcmd.push_back("-dSAFER"); - pcmd.push_back("-sDEVICE=pdfwrite"); - pcmd.push_back("-sOutputFile="+pdfname2); - pcmd.push_back(pdfname); - status=System(pcmd,0,true,"gs"); - if(status == 0) { - mem::vector<string> cmd; - cmd.push_back(getSetting<string>("gs")); - cmd.push_back("-q"); - cmd.push_back("-dNOCACHE"); - cmd.push_back("-dNOPAUSE"); - cmd.push_back("-dBATCH"); - if(safe) cmd.push_back("-dSAFER"); - cmd.push_back("-sDEVICE="+psdriver); - cmd.push_back("-sOutputFile="+psname2); - cmd.push_back(pdfname2); - status=System(cmd,0,true,"gs"); - - std::ifstream in(psname2.c_str()); - ps << in.rdbuf(); - ps.close(); - } + mem::vector<string> cmd; + cmd.push_back(getSetting<string>("gs")); + cmd.push_back("-q"); + cmd.push_back("-dNoOutputFonts"); + cmd.push_back("-dNOPAUSE"); + cmd.push_back("-dBATCH"); + if(safe) cmd.push_back("-dSAFER"); + cmd.push_back("-sDEVICE="+psdriver); + cmd.push_back("-sOutputFile="+psname2); + cmd.push_back(pdfname); + status=System(cmd,0,true,"gs"); + + std::ifstream in(psname2.c_str()); + ps << in.rdbuf(); + ps.close(); } else { if(!fs::exists(dviname)) {Stack->push<patharray2*>(new array(n)); return;} mem::vector<string> dcmd; @@ -424,11 +410,7 @@ void gen_runlabel3(stack *Stack) if(!getSetting<bool>("keepaux")) unlink(auxname(prefix,"aux").c_str()); unlink(auxname(prefix,"log").c_str()); - if(xe) { - unlink(pdfname.c_str()); - unlink(pdfname2.c_str()); - } else - unlink(dviname.c_str()); + unlink(xe ? pdfname.c_str() : dviname.c_str()); if(settings::context(texengine)) { unlink(auxname(prefix,"top").c_str()); unlink(auxname(prefix,"tua").c_str()); @@ -439,13 +421,13 @@ void gen_runlabel3(stack *Stack) {Stack->push<patharray2*>(xe ? readpath(psname,keep,0.1) : readpath(psname,keep,0.12,-1.0)); return;} } -#line 367 "runlabel.in" +#line 349 "runlabel.in" // patharray2* textpath(stringarray *s, penarray *p); void gen_runlabel4(stack *Stack) { penarray * p=vm::pop<penarray *>(Stack); stringarray * s=vm::pop<stringarray *>(Stack); -#line 368 "runlabel.in" +#line 350 "runlabel.in" size_t n=checkArrays(s,p); if(n == 0) {Stack->push<patharray2*>(new array(0)); return;} @@ -481,7 +463,7 @@ void gen_runlabel4(stack *Stack) mem::vector<string> cmd2; cmd2.push_back(getSetting<string>("gs")); cmd2.push_back("-q"); - cmd2.push_back("-dNOCACHE"); + cmd2.push_back("-dNoOutputFonts"); cmd2.push_back("-dNOPAUSE"); cmd2.push_back("-dBATCH"); cmd2.push_back("-P"); @@ -518,13 +500,13 @@ void gen_runlabel4(stack *Stack) {Stack->push<patharray2*>(readpath(psname,keep,0.1)); return;} } -#line 441 "runlabel.in" +#line 423 "runlabel.in" // patharray* _strokepath(path g, pen p=CURRENTPEN); void gen_runlabel5(stack *Stack) { pen p=vm::pop<pen>(Stack,CURRENTPEN); path g=vm::pop<path>(Stack); -#line 442 "runlabel.in" +#line 424 "runlabel.in" array *P=new array(0); if(g.size() == 0) {Stack->push<patharray*>(P); return;} @@ -562,9 +544,9 @@ void gen_runlabel_venv(venv &ve) addFunc(ve, run::gen_runlabel2, realArray(), SYM(texsize), formal(primString(), SYM(s), false, false), formal(primPen(), SYM(p), true, false)); #line 243 "runlabel.in" addFunc(ve, run::gen_runlabel3, pathArray2(), SYM(_texpath), formal(stringArray(), SYM(s), false, false), formal(penArray(), SYM(p), false, false)); -#line 367 "runlabel.in" +#line 349 "runlabel.in" addFunc(ve, run::gen_runlabel4, pathArray2(), SYM(textpath), formal(stringArray(), SYM(s), false, false), formal(penArray(), SYM(p), false, false)); -#line 441 "runlabel.in" +#line 423 "runlabel.in" addFunc(ve, run::gen_runlabel5, pathArray(), SYM(_strokepath), formal(primPath(), SYM(g), false, false), formal(primPen(), SYM(p), true, false)); } |