summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/picture.cc
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-03-23 22:37:58 +0000
committerKarl Berry <karl@freefriends.org>2017-03-23 22:37:58 +0000
commit511d523f9c0456937f392cab51c70f0dcf6ae1bc (patch)
tree2575821a91e042c74a61c3cb6387cc769e0a0b87 /Build/source/utils/asymptote/picture.cc
parent5db9b67730d1ad8391da2e18faa01062b64d1da0 (diff)
asy 2.41 sources
git-svn-id: svn://tug.org/texlive/trunk@43590 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/asymptote/picture.cc')
-rw-r--r--Build/source/utils/asymptote/picture.cc45
1 files changed, 41 insertions, 4 deletions
diff --git a/Build/source/utils/asymptote/picture.cc b/Build/source/utils/asymptote/picture.cc
index 8799274be04..026e4fba043 100644
--- a/Build/source/utils/asymptote/picture.cc
+++ b/Build/source/utils/asymptote/picture.cc
@@ -33,10 +33,13 @@ texstream::~texstream() {
unlink((name+"aux").c_str());
unlink((name+"log").c_str());
unlink((name+"out").c_str());
- unlink((name+"m9").c_str());
- if(settings::pdf(texengine))
+ if(settings::pdf(texengine)) {
unlink((name+"pdf").c_str());
+ unlink((name+"m9").c_str());
+ } else
+ unlink((name+"pbsdat").c_str());
if(context) {
+ unlink("cont-new.log");
unlink((name+"tex").c_str());
unlink((name+"top").c_str());
unlink((name+"tua").c_str());
@@ -599,6 +602,35 @@ int picture::epstopdf(const string& epsname, const string& pdfname)
return status;
}
+int picture::pdftoeps(const string& pdfname, const string& epsname)
+{
+ 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");
+ cmd.push_back("-P");
+ if(safe)
+ cmd.push_back("-dSAFER");
+ string texengine=getSetting<string>("tex");
+ cmd.push_back("-sDEVICE="+getSetting<string>("epsdriver"));
+
+ cmd.push_back("-sOutputFile="+stripDir(epsname));
+ cmd.push_back(stripDir(pdfname));
+
+ char *oldPath=NULL;
+ string dir=stripFile(epsname);
+ if(!dir.empty()) {
+ oldPath=getPath();
+ setPath(dir.c_str());
+ }
+ int status=System(cmd,0,true,"gs","Ghostscript");
+ if(oldPath != NULL)
+ setPath(oldPath);
+ return status;
+}
+
bool picture::reloadPDF(const string& Viewer, const string& outname) const
{
static bool needReload=true;
@@ -647,6 +679,8 @@ bool picture::postprocess(const string& prename, const string& outname,
if(status != 0)
reportError("Cannot rename "+prename+" to "+outname);
} else status=epstopdf(prename,outname);
+ } else if(epsformat) {
+ status=pdftoeps(prename,outname);
} else {
mem::vector<string> cmd;
double render=fabs(getSetting<double>("render"));
@@ -678,8 +712,9 @@ bool picture::postprocess(const string& prename, const string& outname,
if(expand == 1.0)
cmd.push_back("+antialias");
push_split(cmd,getSetting<string>("convertOptions"));
- cmd.push_back("-geometry");
+ cmd.push_back("-resize");
cmd.push_back(String(100.0/expand)+"%x");
+ if(outputformat == "jpg") cmd.push_back("-flatten");
cmd.push_back(nativeformat()+":"+prename);
cmd.push_back(outputformat+":"+outname);
status=System(cmd,0,true,"convert");
@@ -1039,8 +1074,10 @@ bool picture::shipout(picture *preamble, const string& Prefix,
if(context) prename=stripDir(prename);
status=postprocess(prename,outname,outputformat,magnification,wait,
view,pdf && Labels,svgformat);
- if(pdfformat && !getSetting<bool>("keep"))
+ if(pdfformat && !getSetting<bool>("keep")) {
unlink(auxname(prefix,"m9").c_str());
+ unlink(auxname(prefix,"pbsdat").c_str());
+ }
}
}
}