summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2020-02-17 19:31:52 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2020-02-17 19:31:52 (GMT)
commit597d113d52a25d5185c8fb1c1d3d3d7b8f1f4a90 (patch)
treebb38adc10e3de570266856371bfc211e14762ce2
parentf39ee0710bff1d788a690d982a2e1312861c0f73 (diff)
parentdf3a465d0938aef44e8fc5d12a62ee16bc2420de (diff)
downloadDoxygen-597d113d52a25d5185c8fb1c1d3d3d7b8f1f4a90.zip
Doxygen-597d113d52a25d5185c8fb1c1d3d3d7b8f1f4a90.tar.gz
Doxygen-597d113d52a25d5185c8fb1c1d3d3d7b8f1f4a90.tar.bz2
Merge branch 'master' of github.com:doxygen/doxygen
-rw-r--r--src/config.xml3
-rw-r--r--src/formula.cpp51
-rw-r--r--src/portable.cpp14
-rw-r--r--src/portable.h1
4 files changed, 40 insertions, 29 deletions
diff --git a/src/config.xml b/src/config.xml
index 4e28961..8258415 100644
--- a/src/config.xml
+++ b/src/config.xml
@@ -2362,7 +2362,8 @@ The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
<docs>
<![CDATA[
If the \c HTML_FORMULA_FORMAT option is set to \c svg, doxygen will use the pdf2svg
- tool (see https://github.com/dawbarton/pdf2svg) to generate formulas as SVG images instead of
+ tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see https://inkscape.org)
+ to generate formulas as SVG images instead of
PNGs for the HTML output. These images will generally look nicer at scaled resolutions.
]]>
</docs>
diff --git a/src/formula.cpp b/src/formula.cpp
index 92647ed..de004ed 100644
--- a/src/formula.cpp
+++ b/src/formula.cpp
@@ -38,15 +38,6 @@
#define RM_TMP_FILES (true)
//#define RM_TMP_FILES (false)
-// for SVG output choose which tool to use
-#define USE_PDF2SVG 1
-#define USE_INKSCAPE 0
-
-#if (USE_PDF2SVG+USE_INKSCAPE!=1)
-#error "Invalid configuration: either USE_PDF2SVG or USE_INKSCAPE should be 1"
-#endif
-
-
struct FormulaManager::Private
{
void storeDisplaySize(int id,int w,int h)
@@ -303,31 +294,37 @@ void FormulaManager::generateImages(const char *path,Format format,HighDPI hd) c
}
Portable::sysTimerStop();
-#if USE_PDF2SVG
- sprintf(args,"%s_tmp.pdf form_%d.svg",formBase.data(),pageNum);
- Portable::sysTimerStart();
- if (Portable::system("pdf2svg",args)!=0)
+ if (Portable::checkForExecutable("pdf2svg"))
{
- err("Problems running pdf2svg. Check your installation!\n");
+ sprintf(args,"%s_tmp.pdf form_%d.svg",formBase.data(),pageNum);
+ Portable::sysTimerStart();
+ if (Portable::system("pdf2svg",args)!=0)
+ {
+ err("Problems running pdf2svg. Check your installation!\n");
+ Portable::sysTimerStop();
+ QDir::setCurrent(oldDir);
+ return;
+ }
Portable::sysTimerStop();
- QDir::setCurrent(oldDir);
- return;
}
- Portable::sysTimerStop();
-#endif
-
-#if USE_INKSCAPE // alternative using inkscape (does seem to work very well on my system)
- sprintf(args,"-l -z %s_tmp.pdf -o form_%d.svg 2>%s",formBase.data(),pageNum,Portable::devNull());
- Portable::sysTimerStart();
- if (Portable::system("inkscape",args)!=0)
+ else if (Portable::checkForExecutable("inkscape"))
{
- err("Problems running inkscape. Check your installation!\n");
+ sprintf(args,"-l form_%d.svg -z %s_tmp.pdf 2>%s",pageNum,formBase.data(),Portable::devNull());
+ Portable::sysTimerStart();
+ if (Portable::system("inkscape",args)!=0)
+ {
+ err("Problems running inkscape. Check your installation!\n");
+ Portable::sysTimerStop();
+ QDir::setCurrent(oldDir);
+ return;
+ }
Portable::sysTimerStop();
- QDir::setCurrent(oldDir);
+ }
+ else
+ {
+ err("Neither 'pdf2svg' nor 'inkscape' present for conversion of formula to 'svg'\n");
return;
}
- Portable::sysTimerStop();
-#endif
if (RM_TMP_FILES)
{
diff --git a/src/portable.cpp b/src/portable.cpp
index 8ceb7d6..8c941b6 100644
--- a/src/portable.cpp
+++ b/src/portable.cpp
@@ -348,7 +348,6 @@ char Portable::pathListSeparator(void)
#endif
}
-#if defined(_WIN32) && !defined(__CYGWIN__)
static const bool ExistsOnPath(const char *fileName)
{
QFileInfo fi1(fileName);
@@ -380,7 +379,20 @@ static const bool ExistsOnPath(const char *fileName)
}
return false;
}
+
+const bool Portable::checkForExecutable(const char *fileName)
+{
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ char *extensions[] = {".bat",".com",".exe"};
+ for (int i = 0; i < sizeof(extensions) / sizeof(*extensions); i++)
+ {
+ if (ExistsOnPath(QCString(fileName) + extensions[i])) return true;
+ }
+ return false;
+#else
+ return ExistsOnPath(fileName);
#endif
+}
const char *Portable::ghostScriptCommand(void)
{
diff --git a/src/portable.h b/src/portable.h
index 956ae41..6c215a8 100644
--- a/src/portable.h
+++ b/src/portable.h
@@ -44,6 +44,7 @@ namespace Portable
void setShortDir(void);
const char * strnstr(const char *haystack, const char *needle, size_t haystack_len);
const char * devNull();
+ const bool checkForExecutable(const char *fileName);
}