From 10b2b8fc694b60a17ccd2642f3a40c851e33b9da Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Wed, 12 Feb 2020 21:08:11 +0100 Subject: Improve formula handling and rendering. Also added option HTML_FORMULA_FORMAT to generate SVG files for images (requires pdf2svg) --- src/commentscan.l | 21 +-- src/config.xml | 11 ++ src/docparser.cpp | 12 +- src/doxygen.cpp | 136 ++++---------- src/doxygen.h | 3 - src/formula.cpp | 483 ++++++++++++++++++++++++++++++------------------- src/formula.h | 58 +++--- src/htmldocvisitor.cpp | 24 ++- src/portable.cpp | 9 + src/portable.h | 1 + 10 files changed, 406 insertions(+), 352 deletions(-) diff --git a/src/commentscan.l b/src/commentscan.l index 411f5a7..597246e 100644 --- a/src/commentscan.l +++ b/src/commentscan.l @@ -17,6 +17,9 @@ %option prefix="commentscanYY" %option reentrant %option extra-type="struct commentscanYY_state *" +%top{ +#include +} %{ @@ -2862,21 +2865,9 @@ static QCString addFormula(yyscan_t yyscanner) struct yyguts_t *yyg = (struct yyguts_t*)yyscanner; QCString formLabel; QCString fText=yyextra->formulaText.simplifyWhiteSpace(); - Formula *f=0; - if ((f=Doxygen::formulaDict->find(fText))==0) - { - f = new Formula(fText); - Doxygen::formulaList->append(f); - Doxygen::formulaDict->insert(fText,f); - formLabel.sprintf("\\_form#%d",f->getId()); - Doxygen::formulaNameDict->insert(formLabel,f); - } - else - { - formLabel.sprintf("\\_form#%d",f->getId()); - } - int i; - for (i=0;iformulaNewLines;i++) formLabel+="@_fakenl"; // add fake newlines to + int id = FormulaManager::instance().addFormula(fText); + formLabel.sprintf("\\_form#%d",id); + for (int i=0;iformulaNewLines;i++) formLabel+="@_fakenl"; // add fake newlines to // keep the warnings // correctly aligned. return formLabel; diff --git a/src/config.xml b/src/config.xml index f40744d..fec21b6 100644 --- a/src/config.xml +++ b/src/config.xml @@ -2357,6 +2357,17 @@ The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. ]]> +