diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2002-02-24 18:57:25 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2002-02-24 18:57:25 (GMT) |
commit | 837e4e86e7d2735cd7106efec6e4512db82d5e7a (patch) | |
tree | 81d72027898b1a75221b9ca82b04075277821a9f /src/dot.cpp | |
parent | fa7e820834f7e7648a24accbbaa998092034c80f (diff) | |
download | Doxygen-837e4e86e7d2735cd7106efec6e4512db82d5e7a.zip Doxygen-837e4e86e7d2735cd7106efec6e4512db82d5e7a.tar.gz Doxygen-837e4e86e7d2735cd7106efec6e4512db82d5e7a.tar.bz2 |
Release-1.2.14-20020224
Diffstat (limited to 'src/dot.cpp')
-rw-r--r-- | src/dot.cpp | 57 |
1 files changed, 50 insertions, 7 deletions
diff --git a/src/dot.cpp b/src/dot.cpp index 3c8360d..77faf6e 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -178,6 +178,39 @@ static bool isLeaf(ClassDef *cd) return TRUE; } +// since dot silently reproduces the input file when it does not +// support the PNG format, we need to check the result. +static void checkDotResult(const QCString &imgName) +{ + if (Config_getEnum("DOT_IMAGE_FORMAT")=="png") + { + QFile f(imgName); + if (f.open(IO_ReadOnly)) + { + char data[4]; + if (f.readBlock(data,4)==4) + { + if (!(data[1]=='P' && data[2]=='N' && data[3]=='G')) + { + err("Error! Image `%s' produced by dot is not a valid PNG!\n" + "You should either select a different format " + "(DOT_IMAGE_FORMAT in the config file) or install a more " + "recent version of graphviz (1.7+)\n",imgName.data() + ); + } + } + else + { + err("Error: Could not read image `%s' generated by dot!\n",imgName.data()); + } + } + else + { + err("Error: Could not open image `%s' generated by dot!\n",imgName.data()); + } + } +} + //-------------------------------------------------------------------- class DotNodeList : public QList<DotNode> @@ -719,6 +752,7 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) out << "</table>" << endl; return; } + checkDotResult(imgName); dotArgs.sprintf("-Timap \"%s\" -o \"%s\"",dotName.data(),mapName.data()); //printf("Running: dot -Timap %s -o %s\n",dotName.data(),mapName.data()); if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) @@ -1300,14 +1334,16 @@ QCString DotClassGraph::writeGraph(QTextStream &out, { QCString dotArgs(4096); QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT"); - dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s.%s\"", - imgExt.data(),baseName.data(),baseName.data(),imgExt.data()); + QCString imgName = baseName+"."+imgExt; + dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s\"", + imgExt.data(),baseName.data(),imgName.data()); if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) { err("Error: Problems running dot. Check your installation!\n"); QDir::setCurrent(oldDir); return baseName; } + checkDotResult(imgName); if (generateImageMap) { // run dot again to create an image map @@ -1529,14 +1565,16 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out, // run dot to create a bitmap image QCString dotArgs(4096); QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT"); - dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s.%s\"", - imgExt.data(),baseName.data(),baseName.data(),imgExt.data()); + QCString imgName=baseName+"."+imgExt; + dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s\"", + imgExt.data(),baseName.data(),imgName.data()); if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) { err("Problems running dot. Check your installation!\n"); QDir::setCurrent(oldDir); return baseName; } + checkDotResult(imgName); if (generateImageMap) { @@ -1674,13 +1712,15 @@ void generateGraphLegend(const char *path) // run dot to generate the a bitmap image from the graph QCString dotArgs(4096); QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT"); - dotArgs.sprintf("-T%s graph_legend.dot -o graph_legend.%s",imgExt.data(),imgExt.data()); + QCString imgName = "graph_legend."+imgExt; + dotArgs.sprintf("-T%s graph_legend.dot -o %s",imgExt.data(),imgName.data()); if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) { err("Problems running dot. Check your installation!\n"); QDir::setCurrent(oldDir); return; } + checkDotResult(imgName); QDir::setCurrent(oldDir); } @@ -1690,10 +1730,11 @@ void writeDotGraphFromFile(const char *inFile,const char *outFile, { QCString dotArgs(4096); QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT"); + QCString imgName = (QCString)outFile+"."+imgExt; if (format==BITMAP) { - dotArgs.sprintf("-T%s \"%s\" -o \"%s.%s\"",imgExt.data(), - inFile,outFile,imgExt.data()); + dotArgs.sprintf("-T%s \"%s\" -o \"%s\"",imgExt.data(), + inFile,imgName.data()); } else // format==EPS { @@ -1705,4 +1746,6 @@ void writeDotGraphFromFile(const char *inFile,const char *outFile, { err("Problems running dot. Check your installation!\n"); } + if (format==BITMAP) checkDotResult(imgName); } + |