|
Packit |
1c1d7e |
/******************************************************************************
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Copyright (C) 1997-2015 by Dimitri van Heesch.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Permission to use, copy, modify, and distribute this software and its
|
|
Packit |
1c1d7e |
* documentation under the terms of the GNU General Public License is hereby
|
|
Packit |
1c1d7e |
* granted. No representations are made about the suitability of this software
|
|
Packit |
1c1d7e |
* for any purpose. It is provided "as is" without express or implied warranty.
|
|
Packit |
1c1d7e |
* See the GNU General Public License for more details.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Documents produced by Doxygen are derivative works derived from the
|
|
Packit |
1c1d7e |
* input used in their production; they are not affected by this license.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include "dia.h"
|
|
Packit |
1c1d7e |
#include "portable.h"
|
|
Packit |
1c1d7e |
#include "config.h"
|
|
Packit |
1c1d7e |
#include "message.h"
|
|
Packit |
1c1d7e |
#include "util.h"
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include <qdir.h>
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static const int maxCmdLine = 40960;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void writeDiaGraphFromFile(const char *inFile,const char *outDir,
|
|
Packit |
1c1d7e |
const char *outFile,DiaOutputFormat format)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString absOutFile = outDir;
|
|
Packit |
1c1d7e |
absOutFile+=portable_pathSeparator();
|
|
Packit |
1c1d7e |
absOutFile+=outFile;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// chdir to the output dir, so dot can find the font file.
|
|
Packit |
1c1d7e |
QCString oldDir = QDir::currentDirPath().utf8();
|
|
Packit |
1c1d7e |
// go to the html output directory (i.e. path)
|
|
Packit |
1c1d7e |
QDir::setCurrent(outDir);
|
|
Packit |
1c1d7e |
//printf("Going to dir %s\n",QDir::currentDirPath().data());
|
|
Packit |
1c1d7e |
QCString diaExe = Config_getString(DIA_PATH)+"dia"+portable_commandExtension();
|
|
Packit |
1c1d7e |
QCString diaArgs;
|
|
Packit |
1c1d7e |
QCString extension;
|
|
Packit |
1c1d7e |
diaArgs+="-n ";
|
|
Packit |
1c1d7e |
if (format==DIA_BITMAP)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
diaArgs+="-t png-libart";
|
|
Packit |
1c1d7e |
extension=".png";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (format==DIA_EPS)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
diaArgs+="-t eps";
|
|
Packit |
1c1d7e |
extension=".eps";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
diaArgs+=" -e \"";
|
|
Packit |
1c1d7e |
diaArgs+=outFile;
|
|
Packit |
1c1d7e |
diaArgs+=extension+"\"";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
diaArgs+=" \"";
|
|
Packit |
1c1d7e |
diaArgs+=inFile;
|
|
Packit |
1c1d7e |
diaArgs+="\"";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
int exitCode;
|
|
Packit |
1c1d7e |
//printf("*** running: %s %s outDir:%s %s\n",diaExe.data(),diaArgs.data(),outDir,outFile);
|
|
Packit |
1c1d7e |
portable_sysTimerStart();
|
|
Packit |
1c1d7e |
if ((exitCode=portable_system(diaExe,diaArgs,FALSE))!=0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
portable_sysTimerStop();
|
|
Packit |
1c1d7e |
goto error;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
portable_sysTimerStop();
|
|
Packit |
1c1d7e |
if ( (format==DIA_EPS) && (Config_getBool(USE_PDFLATEX)) )
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString epstopdfArgs(maxCmdLine);
|
|
Packit |
1c1d7e |
epstopdfArgs.sprintf("\"%s.eps\" --outfile=\"%s.pdf\"",
|
|
Packit |
1c1d7e |
outFile,outFile);
|
|
Packit |
1c1d7e |
portable_sysTimerStart();
|
|
Packit |
1c1d7e |
if (portable_system("epstopdf",epstopdfArgs)!=0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Problems running epstopdf. Check your TeX installation!\n");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
portable_sysTimerStop();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
error:
|
|
Packit |
1c1d7e |
QDir::setCurrent(oldDir);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|