Doxygen
Loading...
Searching...
No Matches
RTFDocVisitor Class Referencefinal

Concrete visitor implementation for RTF output. More...

#include <src/rtfdocvisitor.h>

Inheritance diagram for RTFDocVisitor:
Collaboration diagram for RTFDocVisitor:

Classes

struct  RTFListItemInfo

Public Member Functions

 RTFDocVisitor (TextStream &t, OutputCodeList &ci, const DString &langExt, int hierarchyLevel=0)
void operator() (const DocWord &)
void operator() (const DocLinkedWord &)
void operator() (const DocWhiteSpace &)
void operator() (const DocSymbol &)
void operator() (const DocEmoji &)
void operator() (const DocURL &)
void operator() (const DocLineBreak &)
void operator() (const DocHorRuler &)
void operator() (const DocStyleChange &)
void operator() (const DocVerbatim &)
void operator() (const DocAnchor &)
void operator() (const DocInclude &)
void operator() (const DocIncOperator &)
void operator() (const DocFormula &)
void operator() (const DocIndexEntry &)
void operator() (const DocSimpleSectSep &)
void operator() (const DocCite &)
void operator() (const DocSeparator &)
void operator() (const DocAutoList &)
void operator() (const DocAutoListItem &)
void operator() (const DocPara &)
void operator() (const DocRoot &)
void operator() (const DocSimpleSect &)
void operator() (const DocTitle &)
void operator() (const DocSimpleList &)
void operator() (const DocSimpleListItem &)
void operator() (const DocSection &s)
void operator() (const DocHtmlList &s)
void operator() (const DocHtmlListItem &)
void operator() (const DocHtmlDescList &)
void operator() (const DocHtmlDescTitle &)
void operator() (const DocHtmlDescData &)
void operator() (const DocHtmlTable &t)
void operator() (const DocHtmlCaption &)
void operator() (const DocHtmlRow &)
void operator() (const DocHtmlCell &)
void operator() (const DocInternal &)
void operator() (const DocHRef &)
void operator() (const DocHtmlSummary &)
void operator() (const DocHtmlDetails &)
void operator() (const DocHtmlHeader &)
void operator() (const DocImage &)
void operator() (const DocDotFile &)
void operator() (const DocMscFile &)
void operator() (const DocDiaFile &)
void operator() (const DocPlantUmlFile &)
void operator() (const DocMermaidFile &)
void operator() (const DocLink &)
void operator() (const DocRef &ref)
void operator() (const DocSecRefItem &)
void operator() (const DocSecRefList &)
void operator() (const DocParamSect &)
void operator() (const DocParamList &)
void operator() (const DocXRefItem &)
void operator() (const DocInternalRef &)
void operator() (const DocText &)
void operator() (const DocHtmlBlockQuote &)
void operator() (const DocVhdlFlow &)
void operator() (const DocParBlock &)
Public Member Functions inherited from DocVisitor
 DocVisitor ()
virtual ~DocVisitor ()
CodeParserInterfacegetCodeParser (const DString &langExt)
void pushHidden (bool hide)
bool popHidden ()

Private Member Functions

template<class T>
void visitChildren (const T &t)
void filter (const DString &str, bool verbatim=false, const bool citeEntry=false)
void startLink (const DString &ref, const DString &file, const DString &anchor)
void endLink (const DString &ref)
DString getStyle (const DString &name)
DString getListTable (const int id)
int indentLevel () const
void incIndentLevel ()
void decIndentLevel ()
void includePicturePreRTF (const DString &name, bool isTypeRTF, bool hasCaption, bool inlineImage=false)
void includePicturePostRTF (bool isTypeRTF, bool hasCaption, bool inlineImage=false)
void writeDotFile (const DString &fileName, bool hasCaption, const DString &srcFile, int srcLine, bool newFile=true)
void writeMscFile (const DString &fileName, bool hasCaption, const DString &srcFile, int srcLine, bool newFile=true)
void writeDiaFile (const DString &fileName, bool hasCaption, const DString &srcFile, int srcLine, bool newFile=true)
void writePlantUMLFile (const DString &fileName, bool hasCaption)
void writeMermaidFile (const DString &fileName, bool hasCaption)

Private Attributes

TextStreamm_t
OutputCodeListm_ci
bool m_insidePre = false
bool m_hide = false
bool m_lastIsPara = false
DString m_langExt
int m_indentLevel = 0
int m_hierarchyLevel = 0
RTFListItemInfo m_listItemInfo [maxIndentLevels]

Static Private Attributes

static const int maxIndentLevels = 13

Detailed Description

Concrete visitor implementation for RTF output.

Definition at line 31 of file rtfdocvisitor.h.

Constructor & Destructor Documentation

◆ RTFDocVisitor()

RTFDocVisitor::RTFDocVisitor ( TextStream & t,
OutputCodeList & ci,
const DString & langExt,
int hierarchyLevel = 0 )

Definition at line 59 of file rtfdocvisitor.cpp.

61 : m_t(t), m_ci(ci), m_langExt(langExt), m_hierarchyLevel(hierarchyLevel)
62{
63}
OutputCodeList & m_ci
TextStream & m_t

References m_ci, m_hierarchyLevel, m_langExt, and m_t.

Member Function Documentation

◆ decIndentLevel()

void RTFDocVisitor::decIndentLevel ( )
private

◆ endLink()

void RTFDocVisitor::endLink ( const DString & ref)
private

Definition at line 1761 of file rtfdocvisitor.cpp.

1762{
1763 if (ref.empty() && Config_getBool(RTF_HYPERLINKS))
1764 {
1765 m_t << "}}}";
1766 }
1767 else
1768 {
1769 m_t << "}";
1770 }
1771 m_lastIsPara=false;
1772}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:153
#define Config_getBool(name)
Definition config.h:33

References Config_getBool, DString::empty(), m_lastIsPara, and m_t.

Referenced by operator()(), operator()(), operator()(), operator()(), and operator()().

◆ filter()

void RTFDocVisitor::filter ( const DString & str,
bool verbatim = false,
const bool citeEntry = false )
private

Definition at line 1695 of file rtfdocvisitor.cpp.

1696{
1697 if (!str.empty())
1698 {
1699 const char *p=str.data();
1700 while (*p)
1701 {
1702 char c=*p++;
1703 switch (c)
1704 {
1705 case '{': m_t << "\\{"; break;
1706 case '}': m_t << "\\}"; break;
1707 case '\\': m_t << "\\\\"; break;
1708 case '&': // possibility to have a special symbol
1709 if (!citeEntry) { m_t << c; break;}
1711 m_t,
1712 p-1,
1713 [](HtmlEntityMapper::SymType symType) { return HtmlEntityMapper::instance().rtf(symType); },
1714 "&");
1715 break;
1716 case '\n': if (verbatim)
1717 {
1718 m_t << "\\par\n";
1719 }
1720 else
1721 {
1722 m_t << '\n';
1723 }
1724 break;
1725 default: m_t << c;
1726 }
1727 }
1728 }
1729}
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
Definition dstring.h:162
const char * writeHtmlEntity(T &result, const char *s, HtmlEntityMapperFunc &&mapper, const char *fallback)
Definition htmlentity.h:127
static HtmlEntityMapper & instance()
Returns the one and only instance of the HTML entity mapper.
const char * rtf(SymType symb) const
Access routine to the RTF code of the HTML entity.

References DString::data(), DString::empty(), HtmlEntityMapper::instance(), m_t, HtmlEntityMapper::rtf(), and HtmlEntityMapper::writeHtmlEntity().

Referenced by operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), and operator()().

◆ getListTable()

DString RTFDocVisitor::getListTable ( const int id)
private

Definition at line 72 of file rtfdocvisitor.cpp.

73{
74 for (int i=0 ; rtf_Table_Default[i].definition ; i++ )
75 {
76 if ((id == rtf_Table_Default[i].id) && (m_indentLevel == rtf_Table_Default[i].lvl))
77 {
78 return rtf_Table_Default[i].place;
79 }
80 }
81 ASSERT(0);
82 return "";
83}
#define ASSERT(x)
Definition dstring.h:29
Rtf_Table_Default rtf_Table_Default[]
Definition rtfstyle.cpp:245
const char * definition
Definition rtfstyle.h:50
const char * place
Definition rtfstyle.h:51

References ASSERT, Rtf_Table_Default::definition, m_indentLevel, Rtf_Table_Default::place, and rtf_Table_Default.

Referenced by operator()().

◆ getStyle()

DString RTFDocVisitor::getStyle ( const DString & name)
private

Definition at line 65 of file rtfdocvisitor.cpp.

66{
67 DString n = name + DString().setNum(indentLevel());
68 StyleData &sd = rtf_Style[n.str()];
69 return sd.reference();
70}
DString & setNum(short n)
Definition dstring.h:541
DString()=default
const std::string & str() const
Definition dstring.h:634
int indentLevel() const
StyleDataMap rtf_Style
Definition rtfstyle.cpp:361
DString reference() const
Definition rtfstyle.h:69

References DString::DString(), indentLevel(), StyleData::reference(), rtf_Style, DString::setNum(), and DString::str().

Referenced by operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), and operator()().

◆ incIndentLevel()

void RTFDocVisitor::incIndentLevel ( )
private

Definition at line 90 of file rtfdocvisitor.cpp.

91{
94 {
95 err("Maximum indent level ({}) exceeded while generating RTF output!\n",maxIndentLevels-1);
96 }
97}
static const int maxIndentLevels
#define err(fmt,...)
Definition message.h:127

References err, m_indentLevel, and maxIndentLevels.

Referenced by operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), and operator()().

◆ includePicturePostRTF()

void RTFDocVisitor::includePicturePostRTF ( bool isTypeRTF,
bool hasCaption,
bool inlineImage = false )
private

Definition at line 1222 of file rtfdocvisitor.cpp.

1223{
1224 if (isTypeRTF)
1225 {
1226 if (m_hide) return;
1227 if (inlineImage)
1228 {
1229 if (hasCaption) m_t << " }";
1230 }
1231 else
1232 {
1233 if (hasCaption)
1234 {
1235 m_t << "}\n";
1236 m_t << "\\par}\n";
1237 }
1238 else
1239 {
1240 m_t << "}\n";
1241 }
1242 }
1243 }
1244 else
1245 {
1246 m_hide = popHidden();
1247 }
1248}
bool popHidden()

References m_hide, m_t, and DocVisitor::popHidden().

Referenced by operator()(), operator()(), operator()(), operator()(), operator()(), operator()(), and operator()().

◆ includePicturePreRTF()

void RTFDocVisitor::includePicturePreRTF ( const DString & name,
bool isTypeRTF,
bool hasCaption,
bool inlineImage = false )
private

Definition at line 1185 of file rtfdocvisitor.cpp.

1186{
1187 if (isTypeRTF)
1188 {
1189 if (!inlineImage)
1190 {
1191 m_t << "\\par\n";
1192 m_t << "{\n";
1193 m_t << rtf_Style_Reset << "\n";
1194 if (hasCaption || m_lastIsPara) m_t << "\\par\n";
1195 m_t << "\\pard \\qc ";
1196 }
1197 m_t << "{ \\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"";
1198 m_t << name;
1199 m_t << "\" \\\\d \\\\*MERGEFORMAT}{\\fldrslt Image}}\n";
1200 if (!inlineImage)
1201 {
1202 m_t << "\\par\n";
1203 if (hasCaption)
1204 {
1205 m_t << "\\pard \\qc \\b";
1206 m_t << "{Image \\field\\flddirty{\\*\\fldinst { SEQ Image \\\\*Arabic }}{\\fldrslt {\\noproof 1}} ";
1207 }
1208 m_lastIsPara=true;
1209 }
1210 else
1211 {
1212 if (hasCaption) m_t << "{\\comment "; // to prevent caption to be shown
1213 }
1214 }
1215 else // other format -> skip
1216 {
1218 m_hide=true;
1219 }
1220}
void pushHidden(bool hide)
char rtf_Style_Reset[]
Definition rtfstyle.cpp:49

References m_hide, m_lastIsPara, m_t, DocVisitor::pushHidden(), and rtf_Style_Reset.

Referenced by operator()(), writeDiaFile(), writeDotFile(), writeMermaidFile(), writeMscFile(), and writePlantUMLFile().

◆ indentLevel()

int RTFDocVisitor::indentLevel ( ) const
private

Definition at line 85 of file rtfdocvisitor.cpp.

86{
87 return std::min(m_indentLevel,maxIndentLevels-1);
88}

References m_indentLevel, and maxIndentLevels.

Referenced by getStyle(), operator()(), operator()(), operator()(), operator()(), and operator()().

◆ operator()() [1/59]

void RTFDocVisitor::operator() ( const DocAnchor & anc)

Definition at line 421 of file rtfdocvisitor.cpp.

422{
423 if (m_hide) return;
424 DBG_RTF("{\\comment RTFDocVisitor::visit(DocAnchor)}\n");
425 DString anchor;
426 if (!anc.file().empty())
427 {
428 anchor+=stripPath(anc.file());
429 }
430 if (!anc.file().empty() && !anc.anchor().empty())
431 {
432 anchor+="_";
433 }
434 if (!anc.anchor().empty())
435 {
436 anchor+=anc.anchor();
437 }
438 m_t << "{\\bkmkstart " << rtfFormatBmkStr(anchor) << "}\n";
439 m_t << "{\\bkmkend " << rtfFormatBmkStr(anchor) << "}\n";
440 m_lastIsPara=false;
441}
DString anchor() const
Definition docnode.h:232
DString file() const
Definition docnode.h:233
#define DBG_RTF(x)
DString rtfFormatBmkStr(const DString &name)
Definition rtfgen.cpp:2873
DString stripPath(const DString &s)
Definition util.cpp:4289

References DocAnchor::anchor(), DBG_RTF, DString::empty(), DocAnchor::file(), m_hide, m_lastIsPara, m_t, rtfFormatBmkStr(), and stripPath().

◆ operator()() [2/59]

void RTFDocVisitor::operator() ( const DocAutoList & l)

Definition at line 644 of file rtfdocvisitor.cpp.

645{
646 if (m_hide) return;
647 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocAutoList &)}\n");
648 m_t << "{\n";
649 int level = indentLevel();
650 m_listItemInfo[level].isEnum = l.isEnumList();
652 m_listItemInfo[level].type = '1';
653 m_listItemInfo[level].number = 1;
654 m_lastIsPara=false;
655 visitChildren(l);
656 if (!m_lastIsPara) m_t << "\\par";
657 m_t << "}\n";
658 m_lastIsPara=true;
659 if (!l.isCheckedList() && indentLevel()==0) m_t << "\\par\n";
660}
bool isCheckedList() const
Definition docnode.h:582
bool isEnumList() const
Definition docnode.h:580
void visitChildren(const T &t)
RTFListItemInfo m_listItemInfo[maxIndentLevels]

References DBG_RTF, indentLevel(), RTFDocVisitor::RTFListItemInfo::isCheck, DocAutoList::isCheckedList(), RTFDocVisitor::RTFListItemInfo::isEnum, DocAutoList::isEnumList(), m_hide, m_lastIsPara, m_listItemInfo, m_t, RTFDocVisitor::RTFListItemInfo::number, RTFDocVisitor::RTFListItemInfo::type, and visitChildren().

◆ operator()() [3/59]

void RTFDocVisitor::operator() ( const DocAutoListItem & li)

Definition at line 662 of file rtfdocvisitor.cpp.

663{
664 static int prevLevel = -1;
665 if (m_hide) return;
666 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocAutoListItem &)}\n");
667 int level = indentLevel();
668 if ((level != prevLevel-1) &&
669 (!(level==prevLevel && level != 0 && m_listItemInfo[level].isCheck)) &&
670 (!m_lastIsPara))
671 m_t << "\\par\n";
672 prevLevel= level;
674 if (m_listItemInfo[level].isEnum)
675 {
676 m_t << getStyle("ListEnum") << "\n";
677 m_t << m_listItemInfo[level].number << ".\\tab ";
678 m_listItemInfo[level].number++;
679 }
680 else
681 {
682 switch (li.itemNumber())
683 {
684 case DocAutoList::Unchecked: // unchecked
685 m_t << getListTable(2) << "\n";
686 break;
687 case DocAutoList::Checked_x: // checked with x
688 case DocAutoList::Checked_X: // checked with X
689 m_t << getListTable(3) << "\n";
690 break;
691 default:
692 m_t << getListTable(1) << "\n";
693 break;
694 }
695 }
697 m_lastIsPara=false;
698 visitChildren(li);
700}
int itemNumber() const
Definition docnode.h:598
DString getListTable(const int id)
DString getStyle(const DString &name)

References DocAutoList::Checked_X, DocAutoList::Checked_x, DBG_RTF, decIndentLevel(), getListTable(), getStyle(), incIndentLevel(), indentLevel(), DocAutoListItem::itemNumber(), m_hide, m_lastIsPara, m_listItemInfo, m_t, RTFDocVisitor::RTFListItemInfo::number, rtf_Style_Reset, DocAutoList::Unchecked, and visitChildren().

◆ operator()() [4/59]

void RTFDocVisitor::operator() ( const DocCite & cite)

Definition at line 616 of file rtfdocvisitor.cpp.

617{
618 if (m_hide) return;
619 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocCite &)}\n");
620 auto opt = cite.option();
621 if (!cite.file().empty())
622 {
623 if (!opt.noCite()) startLink(cite.ref(),cite.file(),cite.anchor());
624
625 filter(cite.getText(),false, true);
626
627 if (!opt.noCite()) endLink(cite.ref());
628 }
629 else
630 {
631 m_t << "{\\b";
632 if (!opt.noPar()) filter("[");
633 filter(cite.target());
634 if (!opt.noPar()) filter("]");
635 m_t << "}";
636 }
637}
DString ref() const
Definition docnode.h:250
DString getText() const
Definition docnode.cpp:976
DString anchor() const
Definition docnode.h:251
CiteInfoOption option() const
Definition docnode.h:253
DString target() const
Definition docnode.h:252
DString file() const
Definition docnode.h:248
void startLink(const DString &ref, const DString &file, const DString &anchor)
void endLink(const DString &ref)
void filter(const DString &str, bool verbatim=false, const bool citeEntry=false)

References DocCite::anchor(), DBG_RTF, DString::empty(), endLink(), DocCite::file(), filter(), DocCite::getText(), m_hide, m_t, DocCite::option(), DocCite::ref(), startLink(), and DocCite::target().

◆ operator()() [5/59]

void RTFDocVisitor::operator() ( const DocDiaFile & df)

Definition at line 1298 of file rtfdocvisitor.cpp.

1299{
1300 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocDiaFile &)}\n");
1301 bool exists = false;
1302 std::string inBuf;
1303 if (readInputFile(df.file(),inBuf))
1304 {
1305 auto fileName = writeInlineGraph(Config_getString(RTF_OUTPUT)+"/"+stripPath(df.file())+"_", // baseName
1306 ".dia", // extension
1307 inBuf, // contents
1308 exists);
1309 if (!fileName.empty())
1310 {
1311 writeDiaFile(fileName, df.hasCaption(), df.srcFile(), df.srcLine(), !exists);
1312 visitChildren(df);
1314 }
1315 }
1316}
DString file() const
Definition docnode.h:685
DString srcFile() const
Definition docnode.h:691
int srcLine() const
Definition docnode.h:692
bool hasCaption() const
Definition docnode.h:687
void writeDiaFile(const DString &fileName, bool hasCaption, const DString &srcFile, int srcLine, bool newFile=true)
void includePicturePostRTF(bool isTypeRTF, bool hasCaption, bool inlineImage=false)
#define Config_getString(name)
Definition config.h:32
DString writeInlineGraph(const DString &baseName, const DString &extension, const DString &content, bool &exists)
Definition util.cpp:6155
bool readInputFile(const DString &fileName, std::string &contents, bool filter, bool isSourceCode)
read a file name fileName and optionally filter and transcode it
Definition util.cpp:4874

References Config_getString, DBG_RTF, DocDiagramFileBase::file(), DocDiagramFileBase::hasCaption(), includePicturePostRTF(), readInputFile(), DocDiagramFileBase::srcFile(), DocDiagramFileBase::srcLine(), stripPath(), visitChildren(), writeDiaFile(), and writeInlineGraph().

◆ operator()() [6/59]

void RTFDocVisitor::operator() ( const DocDotFile & df)

Definition at line 1259 of file rtfdocvisitor.cpp.

1260{
1261 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocDotFile &)}\n");
1262 bool exists = false;
1263 std::string inBuf;
1264 if (readInputFile(df.file(),inBuf))
1265 {
1266 auto fileName = writeInlineGraph(Config_getString(RTF_OUTPUT)+"/"+stripPath(df.file())+"_", // baseName
1267 ".dot", // extension
1268 inBuf, // contents
1269 exists);
1270 if (!fileName.empty())
1271 {
1272 writeDotFile(fileName, df.hasCaption(), df.srcFile(), df.srcLine(), !exists);
1273 visitChildren(df);
1275 }
1276 }
1277}
void writeDotFile(const DString &fileName, bool hasCaption, const DString &srcFile, int srcLine, bool newFile=true)

References Config_getString, DBG_RTF, DocDiagramFileBase::file(), DocDiagramFileBase::hasCaption(), includePicturePostRTF(), readInputFile(), DocDiagramFileBase::srcFile(), DocDiagramFileBase::srcLine(), stripPath(), visitChildren(), writeDotFile(), and writeInlineGraph().

◆ operator()() [7/59]

void RTFDocVisitor::operator() ( const DocEmoji & s)

Definition at line 157 of file rtfdocvisitor.cpp.

158{
159 if (m_hide) return;
160 DBG_RTF("{\\comment RTFDocVisitor::visit(DocEmoji)}\n");
161 const char *res = EmojiEntityMapper::instance().unicode(s.index());
162 if (res)
163 {
164 const char *p = res;
165 int val = 0;
166 int val1 = 0;
167 while (*p)
168 {
169 switch(*p)
170 {
171 case '&': case '#': case 'x':
172 break;
173 case ';':
174 val1 = val;
175 val = 0xd800 + ( ( val1 - 0x10000 ) & 0xffc00 ) / 0x400 - 0x10000;
176 m_t << "\\u" << val << "?";
177 val = 0xdC00 + ( ( val1 - 0x10000 ) & 0x3ff ) - 0x10000 ;
178 m_t << "\\u" << val << "?";
179 val = 0;
180 break;
181 case '0': case '1': case '2': case '3': case '4':
182 case '5': case '6': case '7': case '8': case '9':
183 val = val * 16 + *p - '0';
184 break;
185 case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
186 val = val * 16 + *p - 'a' + 10;
187 break;
188 }
189 p++;
190 }
191 }
192 else
193 {
194 m_t << s.name();
195 }
196 m_lastIsPara=false;
197}
int index() const
Definition docnode.h:345
DString name() const
Definition docnode.h:344
const char * unicode(int index) const
Access routine to the unicode sequence for the Emoji entity.
Definition emoji.cpp:2016
static EmojiEntityMapper & instance()
Returns the one and only instance of the Emoji entity mapper.
Definition emoji.cpp:1978

References DBG_RTF, DocEmoji::index(), EmojiEntityMapper::instance(), m_hide, m_lastIsPara, m_t, DocEmoji::name(), and EmojiEntityMapper::unicode().

◆ operator()() [8/59]

void RTFDocVisitor::operator() ( const DocFormula & f)

Definition at line 583 of file rtfdocvisitor.cpp.

584{
585 if (m_hide) return;
586 DBG_RTF("{\\comment RTFDocVisitor::visit(DocFormula)}\n");
587 bool bDisplay = !f.isInline();
588 if (bDisplay)
589 {
590 m_t << "\\par";
591 m_t << "{";
592 m_t << "\\pard\\plain";
593 m_t << "\\pard";
594 m_t << "\\qc";
595 }
596 m_t << "{ \\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"" << f.relPath() << f.name() << ".png\" \\\\d \\\\*MERGEFORMAT}{\\fldrslt Image}}";
597 if (bDisplay)
598 {
599 m_t << "\\par}";
600 }
601 m_lastIsPara=false;
602}
DString relPath() const
Definition docnode.h:534
bool isInline() const
Definition docnode.h:536
DString name() const
Definition docnode.h:532

References DBG_RTF, DocFormula::isInline(), m_hide, m_lastIsPara, m_t, DocFormula::name(), and DocFormula::relPath().

◆ operator()() [9/59]

void RTFDocVisitor::operator() ( const DocHorRuler & )

Definition at line 237 of file rtfdocvisitor.cpp.

238{
239 if (m_hide) return;
240 DBG_RTF("{\\comment RTFDocVisitor::visit(DocHorRuler)}\n");
241 m_t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw5\\brsp20 \\adjustright \\par}\n";
242 m_lastIsPara=true;
243}

References DBG_RTF, m_hide, m_lastIsPara, and m_t.

◆ operator()() [10/59]

void RTFDocVisitor::operator() ( const DocHRef & href)

Definition at line 1084 of file rtfdocvisitor.cpp.

1085{
1086 if (m_hide) return;
1087 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocHRef &)}\n");
1088 if (Config_getBool(RTF_HYPERLINKS))
1089 {
1090 if (href.url().startsWith("#"))
1091 {
1092 // when starting with # so a local link
1093 DString cite;
1094 cite = href.file() + "_" + href.url().right(href.url().length()-1);
1095 m_t << "{\\field "
1096 "{\\*\\fldinst "
1097 "{ HYPERLINK \\\\l \"" << rtfFormatBmkStr(cite) << "\" "
1098 "}{}"
1099 "}"
1100 "{\\fldrslt "
1101 "{\\cs37\\ul\\cf2 ";
1102 }
1103 else
1104 {
1105 m_t << "{\\field "
1106 "{\\*\\fldinst "
1107 "{ HYPERLINK \"" << href.url() << "\" "
1108 "}{}"
1109 "}"
1110 "{\\fldrslt "
1111 "{\\cs37\\ul\\cf2 ";
1112 }
1113 }
1114 else
1115 {
1116 m_t << "{\\f2 ";
1117 }
1118 m_lastIsPara=false;
1119 visitChildren(href);
1120 if (Config_getBool(RTF_HYPERLINKS))
1121 {
1122 m_t << "}"
1123 "}"
1124 "}";
1125 }
1126 else
1127 {
1128 m_t << "}";
1129 }
1130 m_lastIsPara=false;
1131}
DString right(size_t len) const
Definition dstring.h:316
bool startsWith(const char *s) const
Definition dstring.h:589
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition dstring.h:156
DString file() const
Definition docnode.h:840
DString url() const
Definition docnode.h:839

References Config_getBool, DBG_RTF, DocHRef::file(), DString::length(), m_hide, m_lastIsPara, m_t, DString::right(), rtfFormatBmkStr(), DString::startsWith(), DocHRef::url(), and visitChildren().

◆ operator()() [11/59]

void RTFDocVisitor::operator() ( const DocHtmlBlockQuote & q)

Definition at line 1662 of file rtfdocvisitor.cpp.

1663{
1664 if (m_hide) return;
1665 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocHtmlBlockQuote &)}\n");
1666 if (!m_lastIsPara) m_t << "\\par\n";
1667 m_t << "{"; // start desc
1669 m_t << rtf_Style_Reset << getStyle("DescContinue");
1670 visitChildren(q);
1671 if (!m_lastIsPara) m_t << "\\par\n";
1673 m_t << "}"; // end desc
1674 m_lastIsPara=true;
1675}

References DBG_RTF, decIndentLevel(), getStyle(), incIndentLevel(), m_hide, m_lastIsPara, m_t, rtf_Style_Reset, and visitChildren().

◆ operator()() [12/59]

void RTFDocVisitor::operator() ( const DocHtmlCaption & c)

Definition at line 1026 of file rtfdocvisitor.cpp.

1027{
1028 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocHtmlCaption &)}\n");
1029 visitChildren(c);
1030 m_t << "}\n\\par\n";
1031}

References DBG_RTF, m_t, and visitChildren().

◆ operator()() [13/59]

void RTFDocVisitor::operator() ( const DocHtmlCell & c)

Definition at line 1067 of file rtfdocvisitor.cpp.

1068{
1069 if (m_hide) return;
1070 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocHtmlCell &)}\n");
1071 m_t << "{" << align(c);
1072 m_lastIsPara=false;
1073 visitChildren(c);
1074 m_t << "\\cell }";
1075 m_lastIsPara=false;
1076}
static DString align(const DocHtmlCell &cell)

References align(), DBG_RTF, m_hide, m_lastIsPara, m_t, and visitChildren().

◆ operator()() [14/59]

void RTFDocVisitor::operator() ( const DocHtmlDescData & dd)

Definition at line 989 of file rtfdocvisitor.cpp.

990{
991 if (m_hide) return;
992 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocHtmlDescData &)}\n");
994 m_t << "{" << rtf_Style_Reset << getStyle("DescContinue");
995 visitChildren(dd);
996 m_t << "\\par";
997 m_t << "}\n";
999 m_lastIsPara=true;
1000}

References DBG_RTF, decIndentLevel(), getStyle(), incIndentLevel(), m_hide, m_lastIsPara, m_t, rtf_Style_Reset, and visitChildren().

◆ operator()() [15/59]

void RTFDocVisitor::operator() ( const DocHtmlDescList & dl)

Definition at line 962 of file rtfdocvisitor.cpp.

963{
964 if (m_hide) return;
965 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocHtmlDescList &)}\n");
966 //m_t << "{\n";
967 //m_t << rtf_Style_Reset << getStyle("ListContinue");
968 //m_lastIsPara=false;
969 visitChildren(dl);
970 //m_t << "}\n";
971 //m_t << "\\par\n";
972 //m_lastIsPara=true;
973}

References DBG_RTF, m_hide, and visitChildren().

◆ operator()() [16/59]

void RTFDocVisitor::operator() ( const DocHtmlDescTitle & dt)

Definition at line 975 of file rtfdocvisitor.cpp.

976{
977 if (m_hide) return;
978 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocHtmlDescTitle &)}\n");
979 //m_t << "\\par\n";
980 //m_t << "{\\b ";
981 m_t << "{" << rtf_Style["Heading5"].reference() << "\n";
982 m_lastIsPara=false;
983 visitChildren(dt);
984 m_t << "\\par\n";
985 m_t << "}\n";
986 m_lastIsPara=true;
987}

References DBG_RTF, m_hide, m_lastIsPara, m_t, rtf_Style, and visitChildren().

◆ operator()() [17/59]

void RTFDocVisitor::operator() ( const DocHtmlDetails & d)

Definition at line 1141 of file rtfdocvisitor.cpp.

1142{
1143 if (m_hide) return;
1144 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocHtmlDetails &)}\n");
1145 if (!m_lastIsPara) m_t << "\\par\n";
1146 auto summary = d.summary();
1147 if (summary)
1148 {
1149 std::visit(*this,*summary);
1150 m_t << "{"; // start desc
1152 m_t << rtf_Style_Reset << getStyle("DescContinue");
1153 }
1154 visitChildren(d);
1155 if (!m_lastIsPara) m_t << "\\par\n";
1156 if (summary)
1157 {
1159 m_t << "}"; // end desc
1160 }
1161 m_lastIsPara=true;
1162}
const DocNodeVariant * summary() const
Definition docnode.h:873

References DBG_RTF, decIndentLevel(), getStyle(), incIndentLevel(), m_hide, m_lastIsPara, m_t, rtf_Style_Reset, DocHtmlDetails::summary(), and visitChildren().

◆ operator()() [18/59]

void RTFDocVisitor::operator() ( const DocHtmlHeader & header)

Definition at line 1164 of file rtfdocvisitor.cpp.

1165{
1166 if (m_hide) return;
1167 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocHtmlHeader &)}\n");
1168 m_t << "{" // start section
1169 << rtf_Style_Reset;
1170 DString heading;
1171 int level = std::clamp(header.level()+m_hierarchyLevel,SectionType::MinLevel,SectionType::MaxLevel);
1172 heading.sprintf("Heading%d",level);
1173 // set style
1174 m_t << rtf_Style[heading.str()].reference();
1175 // make open table of contents entry that will be closed in visitPost method
1176 m_t << "{\\tc\\tcl" << level << " ";
1177 m_lastIsPara=false;
1178 visitChildren(header);
1179 // close open table of contents entry
1180 m_t << "} \\par";
1181 m_t << "}\n"; // end section
1182 m_lastIsPara=true;
1183}
DString & sprintf(const char *format,...)
Definition dstring.cpp:29
int level() const
Definition docnode.h:886
static constexpr int MaxLevel
Definition section.h:39
static constexpr int MinLevel
Definition section.h:32

References DBG_RTF, DocHtmlHeader::level(), m_hide, m_hierarchyLevel, m_lastIsPara, m_t, SectionType::MaxLevel, SectionType::MinLevel, rtf_Style, rtf_Style_Reset, DString::sprintf(), DString::str(), and visitChildren().

◆ operator()() [19/59]

void RTFDocVisitor::operator() ( const DocHtmlList & s)

Definition at line 879 of file rtfdocvisitor.cpp.

880{
881 if (m_hide) return;
882 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocHtmlList &)}\n");
883 m_t << "{\n";
884 int level = indentLevel();
885 m_listItemInfo[level].isEnum = l.type()==DocHtmlList::Ordered;
886 m_listItemInfo[level].isCheck = false;
887 m_listItemInfo[level].number = 1;
888 m_listItemInfo[level].type = '1';
889 for (const auto &opt : l.attribs())
890 {
891 if (opt.name=="type")
892 {
893 m_listItemInfo[level].type = opt.value[0];
894 }
895 if (opt.name=="start")
896 {
897 bool ok = false;
898 int val = opt.value.toInt(&ok);
899 if (ok) m_listItemInfo[level].number = val;
900 }
901 }
902 m_lastIsPara=false;
903 visitChildren(l);
904 m_t << "\\par" << "}\n";
905 m_lastIsPara=true;
906}

References DocHtmlList::attribs(), DBG_RTF, indentLevel(), RTFDocVisitor::RTFListItemInfo::isCheck, RTFDocVisitor::RTFListItemInfo::isEnum, m_hide, m_lastIsPara, m_listItemInfo, m_t, RTFDocVisitor::RTFListItemInfo::number, DocHtmlList::Ordered, DocHtmlList::type(), RTFDocVisitor::RTFListItemInfo::type, and visitChildren().

◆ operator()() [20/59]

void RTFDocVisitor::operator() ( const DocHtmlListItem & l)

Definition at line 908 of file rtfdocvisitor.cpp.

909{
910 if (m_hide) return;
911 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocHtmlListItem &)}\n");
912 m_t << "\\par\n";
914 int level = indentLevel();
915 if (m_listItemInfo[level].isEnum)
916 {
917 for (const auto &opt : l.attribs())
918 {
919 if (opt.name=="value")
920 {
921 bool ok = false;
922 int val = opt.value.toInt(&ok);
923 if (ok) m_listItemInfo[level].number = val;
924 }
925 }
926 m_t << getStyle("ListEnum") << "\n";
927 switch (m_listItemInfo[level].type)
928 {
929 case '1':
930 m_t << m_listItemInfo[level].number;
931 break;
932 case 'a':
933 m_t << DString::integerToAlpha(m_listItemInfo[level].number,false);
934 break;
935 case 'A':
937 break;
938 case 'i':
939 m_t << DString::integerToRoman(m_listItemInfo[level].number,false);
940 break;
941 case 'I':
943 break;
944 default:
945 m_t << m_listItemInfo[level].number;
946 break;
947 }
948 m_t << ".\\tab ";
949 m_listItemInfo[level].number++;
950 }
951 else
952 {
953 m_t << getStyle("ListBullet") << "\n";
954 }
956 m_lastIsPara=false;
957 visitChildren(l);
959 DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocHtmlListItem)}\n");
960}
static DString integerToAlpha(int n, bool upper=true)
Definition dstring.cpp:617
static DString integerToRoman(int n, bool upper=true)
Definition dstring.cpp:633
const HtmlAttribList & attribs() const
Definition docnode.h:1175

References DocHtmlListItem::attribs(), DBG_RTF, decIndentLevel(), getStyle(), incIndentLevel(), indentLevel(), DString::integerToAlpha(), DString::integerToRoman(), m_hide, m_lastIsPara, m_listItemInfo, m_t, RTFDocVisitor::RTFListItemInfo::number, rtf_Style_Reset, and visitChildren().

◆ operator()() [21/59]

void RTFDocVisitor::operator() ( const DocHtmlRow & r)

Definition at line 1033 of file rtfdocvisitor.cpp.

1034{
1035 if (m_hide) return;
1036 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocHtmlRow &)}\n");
1037 size_t columnWidth=r.numCells()>0 ? rtf_pageWidth/r.numCells() : 10;
1038 m_t << "\\trowd \\trgaph108\\trleft-108"
1039 "\\trbrdrt\\brdrs\\brdrw10 "
1040 "\\trbrdrl\\brdrs\\brdrw10 "
1041 "\\trbrdrb\\brdrs\\brdrw10 "
1042 "\\trbrdrr\\brdrs\\brdrw10 "
1043 "\\trbrdrh\\brdrs\\brdrw10 "
1044 "\\trbrdrv\\brdrs\\brdrw10 \n";
1045 for (size_t i=0;i<r.numCells();i++)
1046 {
1047 if (r.isHeading())
1048 {
1049 m_t << "\\clcbpat16"; // set cell shading to light grey (color 16 in the clut)
1050 }
1051 m_t << "\\clvertalt\\clbrdrt\\brdrs\\brdrw10 "
1052 "\\clbrdrl\\brdrs\\brdrw10 "
1053 "\\clbrdrb\\brdrs\\brdrw10 "
1054 "\\clbrdrr \\brdrs\\brdrw10 "
1055 "\\cltxlrtb "
1056 "\\cellx" << ((i+1)*columnWidth) << "\n";
1057 }
1058 m_t << "\\pard \\widctlpar\\intbl\\adjustright\n";
1059 m_lastIsPara=false;
1060 visitChildren(r);
1061 m_t << "\n";
1062 m_t << "\\pard \\widctlpar\\intbl\\adjustright\n";
1063 m_t << "{\\row }\n";
1064 m_lastIsPara=false;
1065}
bool isHeading() const
Definition docnode.cpp:2004
size_t numCells() const
Definition docnode.h:1256
const int rtf_pageWidth
Definition rtfstyle.h:26

References DBG_RTF, DocHtmlRow::isHeading(), m_hide, m_lastIsPara, m_t, DocHtmlRow::numCells(), rtf_pageWidth, and visitChildren().

◆ operator()() [22/59]

void RTFDocVisitor::operator() ( const DocHtmlSummary & s)

Definition at line 1133 of file rtfdocvisitor.cpp.

1134{
1135 if (m_hide) return;
1136 m_t << "{\\b ";
1137 visitChildren(s);
1138 m_t << "}\\par ";
1139}

References m_hide, m_t, and visitChildren().

◆ operator()() [23/59]

void RTFDocVisitor::operator() ( const DocHtmlTable & t)

Definition at line 1002 of file rtfdocvisitor.cpp.

1003{
1004 if (m_hide) return;
1005 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocHtmlTable &)}\n");
1006 if (!m_lastIsPara) m_t << "\\par\n";
1007 m_lastIsPara=true;
1008 if (t.caption())
1009 {
1010 const DocHtmlCaption &c = std::get<DocHtmlCaption>(*t.caption());
1011 m_t << "\\pard \\qc \\b";
1012 if (!c.file().empty())
1013 {
1014 m_t << "{\\bkmkstart " << rtfFormatBmkStr(stripPath(c.file())+"_"+c.anchor()) << "}\n";
1015 m_t << "{\\bkmkend " << rtfFormatBmkStr(stripPath(c.file())+"_"+c.anchor()) << "}\n";
1016 }
1017 m_t << "{Table \\field\\flddirty{\\*\\fldinst { SEQ Table \\\\*Arabic }}{\\fldrslt {\\noproof 1}} ";
1018 std::visit(*this,*t.caption());
1019 }
1020 visitChildren(t);
1021 m_t << "\\pard\\plain\n";
1022 m_t << "\\par\n";
1023 m_lastIsPara=true;
1024}
DString file() const
Definition docnode.h:1239
DString anchor() const
Definition docnode.h:1240
const DocNodeVariant * caption() const
Definition docnode.cpp:2252

References DocHtmlCaption::anchor(), DocHtmlTable::caption(), DBG_RTF, DString::empty(), DocHtmlCaption::file(), m_hide, m_lastIsPara, m_t, rtfFormatBmkStr(), stripPath(), and visitChildren().

◆ operator()() [24/59]

void RTFDocVisitor::operator() ( const DocImage & img)

Definition at line 1250 of file rtfdocvisitor.cpp.

1251{
1252 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocImage &)}\n");
1254 visitChildren(img);
1256}
Type type() const
Definition docnode.h:647
DString name() const
Definition docnode.h:648
bool isInlineImage() const
Definition docnode.h:654
bool hasCaption() const
Definition docnode.h:649
void includePicturePreRTF(const DString &name, bool isTypeRTF, bool hasCaption, bool inlineImage=false)

References DBG_RTF, DocImage::hasCaption(), includePicturePostRTF(), includePicturePreRTF(), DocImage::isInlineImage(), DocImage::name(), DocImage::Rtf, DocImage::type(), and visitChildren().

◆ operator()() [25/59]

void RTFDocVisitor::operator() ( const DocInclude & inc)

Definition at line 443 of file rtfdocvisitor.cpp.

444{
445 if (m_hide) return;
447 DBG_RTF("{\\comment RTFDocVisitor::visit(DocInclude)}\n");
448 switch(inc.type())
449 {
451 {
452 m_t << "{\n";
453 m_t << "\\par\n";
454 m_t << rtf_Style_Reset << getStyle("CodeExample");
455 FileInfo cfi( inc.file().str() );
456 auto fd = createFileDef( cfi.dirPath(), cfi.fileName() );
458 inc.text(),
459 langExt,
460 inc.stripCodeComments(),
461 CodeParserOptions()
462 .setExample(inc.isExample(),inc.exampleFile())
463 .setFileDef(fd.get())
464 .setInlineFragment(true)
465 );
466 m_t << "\\par";
467 m_t << "}\n";
468 }
469 break;
471 m_t << "{\n";
472 m_t << "\\par\n";
473 m_t << rtf_Style_Reset << getStyle("CodeExample");
475 inc.text(),langExt,
476 inc.stripCodeComments(),
477 CodeParserOptions()
478 .setExample(inc.isExample(),inc.exampleFile())
479 .setInlineFragment(true)
480 .setShowLineNumbers(false)
481 );
482 m_t << "\\par";
483 m_t << "}\n";
484 break;
492 break;
494 m_t << inc.text();
495 break;
497 m_t << "{\n";
498 m_t << "\\par\n";
499 m_t << rtf_Style_Reset << getStyle("CodeExample");
500 filter(inc.text());
501 m_t << "\\par";
502 m_t << "}\n";
503 break;
506 m_t << "{\n";
507 if (!m_lastIsPara) m_t << "\\par\n";
508 m_t << rtf_Style_Reset << getStyle("CodeExample");
510 inc.file(),
511 inc.blockId(),
512 inc.context(),
514 inc.trimLeft(),
516 );
517 m_t << "}";
518 break;
519 }
520 m_lastIsPara=true;
521}
static CodeFragmentManager & instance()
void parseCodeFragment(OutputCodeList &codeOutList, const DString &fileName, const DString &blockId, const DString &scopeName, bool showLineNumbers, bool trimLeft, bool stripCodeComments)
virtual void parseCode(OutputCodeList &codeOutList, const DString &scopeName, const DString &input, SrcLangExt lang, bool stripCodeComments, const CodeParserOptions &options)=0
Parses a source file or fragment with the goal to produce highlighted and cross-referenced output.
bool stripCodeComments() const
Definition docnode.h:455
DString blockId() const
Definition docnode.h:454
@ LatexInclude
Definition docnode.h:437
@ SnippetWithLines
Definition docnode.h:438
@ DontIncWithLines
Definition docnode.h:439
@ IncWithLines
Definition docnode.h:438
@ HtmlInclude
Definition docnode.h:437
@ VerbInclude
Definition docnode.h:437
@ DontInclude
Definition docnode.h:437
@ DocbookInclude
Definition docnode.h:439
DString context() const
Definition docnode.h:453
Type type() const
Definition docnode.h:451
DString exampleFile() const
Definition docnode.h:457
DString text() const
Definition docnode.h:452
DString file() const
Definition docnode.h:449
DString extension() const
Definition docnode.h:450
bool trimLeft() const
Definition docnode.h:459
bool isExample() const
Definition docnode.h:456
CodeParserInterface & getCodeParser(const DString &langExt)
std::unique_ptr< FileDef > createFileDef(const DString &p, const DString &n, const DString &ref, const DString &dn)
Definition filedef.cpp:268
SrcLangExt
Definition types.h:207
SrcLangExt getLanguageFromFileName(const DString &fileName, SrcLangExt defLang)
Definition util.cpp:4536

References DocInclude::blockId(), DocInclude::context(), createFileDef(), DBG_RTF, FileInfo::dirPath(), DocInclude::DocbookInclude, DocInclude::DontInclude, DocInclude::DontIncWithLines, DocInclude::exampleFile(), DocInclude::extension(), DocInclude::file(), FileInfo::fileName(), filter(), DocVisitor::getCodeParser(), getLanguageFromFileName(), getStyle(), DocInclude::HtmlInclude, DocInclude::Include, DocInclude::IncWithLines, CodeFragmentManager::instance(), DocInclude::isExample(), DocInclude::LatexInclude, m_ci, m_hide, m_lastIsPara, m_t, DocInclude::ManInclude, CodeParserInterface::parseCode(), CodeFragmentManager::parseCodeFragment(), rtf_Style_Reset, DocInclude::RtfInclude, CodeParserOptions::setFileDef(), CodeParserOptions::setInlineFragment(), CodeParserOptions::setShowLineNumbers(), DocInclude::Snippet, DocInclude::SnippetWithLines, DString::str(), DocInclude::stripCodeComments(), DocInclude::text(), DocInclude::trimLeft(), DocInclude::type(), DocInclude::VerbInclude, and DocInclude::XmlInclude.

◆ operator()() [26/59]

void RTFDocVisitor::operator() ( const DocIncOperator & op)

Definition at line 523 of file rtfdocvisitor.cpp.

524{
525 //printf("DocIncOperator: type=%d first=%d, last=%d text='%s'\n",
526 // op.type(),op.isFirst(),op.isLast(),qPrint(op.text()));
527 DBG_RTF("{\\comment RTFDocVisitor::visit(DocIncOperator)}\n");
528 DString locLangExt = getFileNameExtension(op.includeFileName());
529 if (locLangExt.empty()) locLangExt = m_langExt;
530 SrcLangExt langExt = getLanguageFromFileName(locLangExt);
531 if (op.isFirst())
532 {
533 if (!m_hide)
534 {
535 m_t << "{\n";
536 m_t << "\\par\n";
537 m_t << rtf_Style_Reset << getStyle("CodeExample");
538 }
540 m_hide = true;
541 }
542 if (op.type()!=DocIncOperator::Skip)
543 {
544 m_hide = popHidden();
545 if (!m_hide)
546 {
547 std::unique_ptr<FileDef> fd = nullptr;
548 if (!op.includeFileName().empty())
549 {
550 FileInfo cfi( op.includeFileName().str() );
551 fd = createFileDef( cfi.dirPath(), cfi.fileName() );
552 }
553
554 getCodeParser(locLangExt).parseCode(m_ci,op.context(),op.text(),langExt,
556 CodeParserOptions()
557 .setExample(op.isExample(),op.exampleFile())
558 .setFileDef(fd.get())
559 .setStartLine(op.line())
560 .setShowLineNumbers(op.showLineNo())
561 );
562 }
564 m_hide=true;
565 }
566 if (op.isLast())
567 {
568 m_hide = popHidden();
569 if (!m_hide)
570 {
571 m_t << "\\par";
572 m_t << "}\n";
573 }
574 m_lastIsPara=true;
575 }
576 else
577 {
578 if (!m_hide) m_t << "\n";
579 m_lastIsPara=false;
580 }
581}
bool stripCodeComments() const
Definition docnode.h:506
bool isLast() const
Definition docnode.h:503
DString text() const
Definition docnode.h:499
DString context() const
Definition docnode.h:501
DString exampleFile() const
Definition docnode.h:508
DString includeFileName() const
Definition docnode.h:509
int line() const
Definition docnode.h:497
Type type() const
Definition docnode.h:485
bool isFirst() const
Definition docnode.h:502
bool showLineNo() const
Definition docnode.h:498
bool isExample() const
Definition docnode.h:507
DString getFileNameExtension(const DString &fn)
Definition util.cpp:4578

References DocIncOperator::context(), createFileDef(), DBG_RTF, FileInfo::dirPath(), DString::empty(), DocIncOperator::exampleFile(), FileInfo::fileName(), DocVisitor::getCodeParser(), getFileNameExtension(), getLanguageFromFileName(), getStyle(), DocIncOperator::includeFileName(), DocIncOperator::isExample(), DocIncOperator::isFirst(), DocIncOperator::isLast(), DocIncOperator::line(), m_ci, m_hide, m_langExt, m_lastIsPara, m_t, CodeParserInterface::parseCode(), DocVisitor::popHidden(), DocVisitor::pushHidden(), rtf_Style_Reset, CodeParserOptions::setFileDef(), CodeParserOptions::setShowLineNumbers(), CodeParserOptions::setStartLine(), DocIncOperator::showLineNo(), DocIncOperator::Skip, DString::str(), DocIncOperator::stripCodeComments(), DocIncOperator::text(), and DocIncOperator::type().

◆ operator()() [27/59]

void RTFDocVisitor::operator() ( const DocIndexEntry & i)

Definition at line 604 of file rtfdocvisitor.cpp.

605{
606 if (m_hide) return;
607 DBG_RTF("{\\comment RTFDocVisitor::visit(DocIndexEntry)}\n");
608 m_t << "{\\xe \\v " << i.entry() << "}\n";
609 m_lastIsPara=false;
610}
DString entry() const
Definition docnode.h:559

References DBG_RTF, DocIndexEntry::entry(), m_hide, m_lastIsPara, and m_t.

◆ operator()() [28/59]

void RTFDocVisitor::operator() ( const DocInternal & i)

Definition at line 1078 of file rtfdocvisitor.cpp.

1079{
1080 if (m_hide) return;
1081 visitChildren(i);
1082}

References m_hide, and visitChildren().

◆ operator()() [29/59]

void RTFDocVisitor::operator() ( const DocInternalRef & ref)

Definition at line 1645 of file rtfdocvisitor.cpp.

1646{
1647 if (m_hide) return;
1648 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocInternalRef &)}\n");
1649 startLink("",ref.file(),ref.anchor());
1650 visitChildren(ref);
1651 endLink("");
1652 m_t << " ";
1653}
DString anchor() const
Definition docnode.h:822
DString file() const
Definition docnode.h:820

References DocInternalRef::anchor(), DBG_RTF, endLink(), DocInternalRef::file(), m_hide, m_t, startLink(), and visitChildren().

◆ operator()() [30/59]

void RTFDocVisitor::operator() ( const DocLineBreak & )

Definition at line 229 of file rtfdocvisitor.cpp.

230{
231 if (m_hide) return;
232 DBG_RTF("{\\comment RTFDocVisitor::visit(DocLineBreak)}\n");
233 m_t << "\\par\n";
234 m_lastIsPara=true;
235}

References DBG_RTF, m_hide, m_lastIsPara, and m_t.

◆ operator()() [31/59]

void RTFDocVisitor::operator() ( const DocLink & lnk)

Definition at line 1354 of file rtfdocvisitor.cpp.

1355{
1356 if (m_hide) return;
1357 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocLink &)}\n");
1358 startLink(lnk.ref(),lnk.file(),lnk.anchor());
1359 visitChildren(lnk);
1360 endLink(lnk.ref());
1361}

References DocLink::anchor(), DBG_RTF, endLink(), DocLink::file(), m_hide, DocLink::ref(), startLink(), and visitChildren().

◆ operator()() [32/59]

void RTFDocVisitor::operator() ( const DocLinkedWord & w)

Definition at line 116 of file rtfdocvisitor.cpp.

117{
118 if (m_hide) return;
119 DBG_RTF("{\\comment RTFDocVisitor::visit(DocLinkedWord)}\n");
120 startLink(w.ref(),w.file(),w.anchor());
121 filter(w.word());
122 endLink(w.ref());
123 m_lastIsPara=false;
124}
DString word() const
Definition docnode.h:170
DString anchor() const
Definition docnode.h:174
DString ref() const
Definition docnode.h:173
DString file() const
Definition docnode.h:171

References DocLinkedWord::anchor(), DBG_RTF, endLink(), DocLinkedWord::file(), filter(), m_hide, m_lastIsPara, DocLinkedWord::ref(), startLink(), and DocLinkedWord::word().

◆ operator()() [33/59]

void RTFDocVisitor::operator() ( const DocMermaidFile & df)

Definition at line 1336 of file rtfdocvisitor.cpp.

1337{
1338 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocMermaidFile &)}\n");
1339 if (Config_getBool(MERMAID_RENDER_MODE)==MERMAID_RENDER_MODE_t::CLIENT_SIDE) return;
1340 if (!Config_getBool(DOT_CLEANUP)) copyFile(df.file(),Config_getString(RTF_OUTPUT)+"/"+stripPath(df.file()));
1341 std::string inBuf;
1342 readInputFile(df.file(),inBuf);
1343 auto rtfOutput = Config_getString(RTF_OUTPUT);
1344 auto outputFormat = MermaidManager::OutputFormat::RTF;
1345 auto imageFormat = MermaidManager::convertToImageFormat(outputFormat);
1347 rtfOutput,DString(),inBuf,imageFormat,
1348 df.srcFile(),df.srcLine());
1349 writeMermaidFile(baseName, df.hasCaption());
1350 visitChildren(df);
1352}
static MermaidManager & instance()
Definition mermaid.cpp:33
static ImageFormat convertToImageFormat(OutputFormat outputFormat)
Definition mermaid.cpp:54
DString writeMermaidSource(const DString &outDirArg, const DString &fileName, const DString &content, ImageFormat format, const DString &srcFile, int srcLine)
Write a Mermaid source file and register it for CLI rendering.
Definition mermaid.cpp:70
void writeMermaidFile(const DString &fileName, bool hasCaption)
bool copyFile(const DString &src, const DString &dest)
Copies the contents of file with name src to the newly created file with name dest.
Definition util.cpp:5179

References Config_getBool, Config_getString, MermaidManager::convertToImageFormat(), copyFile(), DBG_RTF, DString::DString(), DocDiagramFileBase::file(), DocDiagramFileBase::hasCaption(), includePicturePostRTF(), MermaidManager::instance(), readInputFile(), MermaidManager::RTF, DocDiagramFileBase::srcFile(), DocDiagramFileBase::srcLine(), stripPath(), visitChildren(), writeMermaidFile(), and MermaidManager::writeMermaidSource().

◆ operator()() [34/59]

void RTFDocVisitor::operator() ( const DocMscFile & df)

Definition at line 1278 of file rtfdocvisitor.cpp.

1279{
1280 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocMscFile &)}\n");
1281 bool exists = false;
1282 std::string inBuf;
1283 if (readInputFile(df.file(),inBuf))
1284 {
1285 auto fileName = writeInlineGraph(Config_getString(RTF_OUTPUT)+"/"+stripPath(df.file())+"_", // baseName
1286 ".msc", // extension
1287 inBuf, // contents
1288 exists);
1289 if (!fileName.empty())
1290 {
1291 writeMscFile(fileName, df.hasCaption(), df.srcFile(), df.srcLine(), !exists);
1292 visitChildren(df);
1294 }
1295 }
1296}
void writeMscFile(const DString &fileName, bool hasCaption, const DString &srcFile, int srcLine, bool newFile=true)

References Config_getString, DBG_RTF, DocDiagramFileBase::file(), DocDiagramFileBase::hasCaption(), includePicturePostRTF(), readInputFile(), DocDiagramFileBase::srcFile(), DocDiagramFileBase::srcLine(), stripPath(), visitChildren(), writeInlineGraph(), and writeMscFile().

◆ operator()() [35/59]

void RTFDocVisitor::operator() ( const DocPara & p)

Definition at line 702 of file rtfdocvisitor.cpp.

703{
704 if (m_hide) return;
705 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocPara &)}\n");
706 visitChildren(p);
707 if (!m_lastIsPara &&
708 !p.isLast() && // omit <p> for last paragraph
709 !(p.parent() && // and for parameters & sections
710 std::get_if<DocParamSect>(p.parent())
711 )
712 )
713 {
714 m_t << "\\par\n";
715 m_lastIsPara=true;
716 }
717}
DocNodeVariant * parent()
Definition docnode.h:90
bool isLast() const
Definition docnode.h:1097

References DBG_RTF, DocPara::isLast(), m_hide, m_lastIsPara, m_t, DocNode::parent(), and visitChildren().

◆ operator()() [36/59]

void RTFDocVisitor::operator() ( const DocParamList & pl)

Definition at line 1453 of file rtfdocvisitor.cpp.

1454{
1455 static int columnPos[4][5] =
1456 { { 2, 25, 100, 100, 100 }, // no inout, no type
1457 { 3, 14, 35, 100, 100 }, // inout, no type
1458 { 3, 25, 50, 100, 100 }, // no inout, type
1459 { 4, 14, 35, 55, 100 }, // inout, type
1460 };
1461 int config=0;
1462 if (m_hide) return;
1463 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocParamList &)}\n");
1464
1466 const DocParamSect *sect = std::get_if<DocParamSect>(pl.parent());
1467 if (sect)
1468 {
1469 parentType = sect->type();
1470 }
1471 bool useTable = parentType==DocParamSect::Param ||
1472 parentType==DocParamSect::RetVal ||
1473 parentType==DocParamSect::Exception ||
1474 parentType==DocParamSect::TemplateParam;
1475 if (sect && sect->hasInOutSpecifier()) config+=1;
1476 if (sect && sect->hasTypeSpecifier()) config+=2;
1477 if (useTable)
1478 {
1479 m_t << "\\trowd \\trgaph108\\trleft426\\tblind426"
1480 "\\trbrdrt\\brdrs\\brdrw10\\brdrcf15 "
1481 "\\trbrdrl\\brdrs\\brdrw10\\brdrcf15 "
1482 "\\trbrdrb\\brdrs\\brdrw10\\brdrcf15 "
1483 "\\trbrdrr\\brdrs\\brdrw10\\brdrcf15 "
1484 "\\trbrdrh\\brdrs\\brdrw10\\brdrcf15 "
1485 "\\trbrdrv\\brdrs\\brdrw10\\brdrcf15 "<< "\n";
1486 for (int i=0;i<columnPos[config][0];i++)
1487 {
1488 m_t << "\\clvertalt\\clbrdrt\\brdrs\\brdrw10\\brdrcf15 "
1489 "\\clbrdrl\\brdrs\\brdrw10\\brdrcf15 "
1490 "\\clbrdrb\\brdrs\\brdrw10\\brdrcf15 "
1491 "\\clbrdrr \\brdrs\\brdrw10\\brdrcf15 "
1492 "\\cltxlrtb "
1493 "\\cellx" << (rtf_pageWidth*columnPos[config][i+1]/100) << "\n";
1494 }
1495 m_t << "\\pard \\widctlpar\\intbl\\adjustright\n";
1496 }
1497
1498 if (sect && sect->hasInOutSpecifier())
1499 {
1500 if (useTable)
1501 {
1502 m_t << "{";
1503 }
1504
1505 // Put in the direction: in/out/in,out if specified.
1507 {
1508 if (pl.direction()==DocParamSect::In)
1509 {
1510 m_t << "in";
1511 }
1512 else if (pl.direction()==DocParamSect::Out)
1513 {
1514 m_t << "out";
1515 }
1516 else if (pl.direction()==DocParamSect::InOut)
1517 {
1518 m_t << "in,out";
1519 }
1520 }
1521
1522 if (useTable)
1523 {
1524 m_t << "\\cell }";
1525 }
1526 }
1527
1528 if (sect && sect->hasTypeSpecifier())
1529 {
1530 if (useTable)
1531 {
1532 m_t << "{";
1533 }
1534 for (const auto &type : pl.paramTypes())
1535 {
1536 std::visit(*this,type);
1537 }
1538 if (useTable)
1539 {
1540 m_t << "\\cell }";
1541 }
1542 }
1543
1544
1545 if (useTable)
1546 {
1547 m_t << "{";
1548 }
1549
1550 m_t << "{\\i ";
1551 bool first=true;
1552 for (const auto &param : pl.parameters())
1553 {
1554 if (!first) m_t << ","; else first=false;
1555 std::visit(*this,param);
1556 }
1557 m_t << "} ";
1558
1559 if (useTable)
1560 {
1561 m_t << "\\cell }{";
1562 }
1563 m_lastIsPara=true;
1564
1565 for (const auto &par : pl.paragraphs())
1566 {
1567 std::visit(*this,par);
1568 }
1569
1570 if (useTable)
1571 {
1572 m_t << "\\cell }\n";
1573 //m_t << "\\pard \\widctlpar\\intbl\\adjustright\n";
1574 m_t << "{\\row }\n";
1575 }
1576 else
1577 {
1578 m_t << "\\par\n";
1579 }
1580
1581 m_lastIsPara=true;
1582}
const DocNodeList & parameters() const
Definition docnode.h:1134
const DocNodeList & paramTypes() const
Definition docnode.h:1135
DocParamSect::Direction direction() const
Definition docnode.h:1138
const DocNodeList & paragraphs() const
Definition docnode.h:1136
bool hasInOutSpecifier() const
Definition docnode.h:1078
bool hasTypeSpecifier() const
Definition docnode.h:1079
Type type() const
Definition docnode.h:1077

References DBG_RTF, DocParamList::direction(), DocParamSect::Exception, DocParamSect::hasInOutSpecifier(), DocParamSect::hasTypeSpecifier(), DocParamSect::In, DocParamSect::InOut, m_hide, m_lastIsPara, m_t, DocParamSect::Out, DocParamList::paragraphs(), DocParamSect::Param, DocParamList::parameters(), DocParamList::paramTypes(), DocNode::parent(), DocParamSect::RetVal, rtf_pageWidth, DocParamSect::TemplateParam, DocParamSect::type(), DocParamSect::Unknown, and DocParamSect::Unspecified.

◆ operator()() [37/59]

void RTFDocVisitor::operator() ( const DocParamSect & s)

Definition at line 1406 of file rtfdocvisitor.cpp.

1407{
1408 if (m_hide) return;
1409 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocParamSect &)}\n");
1410 m_t << "{"; // start param list
1411 if (!m_lastIsPara) m_t << "\\par\n";
1412 //m_t << "{\\b "; // start bold
1413 m_t << "{" << rtf_Style["Heading5"].reference() << "\n";
1414 switch(s.type())
1415 {
1417 m_t << theTranslator->trParameters(); break;
1419 m_t << theTranslator->trReturnValues(); break;
1421 m_t << theTranslator->trExceptions(); break;
1424 default:
1425 ASSERT(0);
1426 }
1427 m_t << "\\par";
1428 m_t << "}\n";
1429 bool useTable = s.type()==DocParamSect::Param ||
1433 if (!useTable)
1434 {
1436 }
1437 m_t << rtf_Style_Reset << getStyle("DescContinue");
1438 m_lastIsPara=true;
1439 visitChildren(s);
1440 //m_t << "\\par\n";
1441 if (!useTable)
1442 {
1444 }
1445 m_t << "}\n";
1446}
virtual DString trExceptions()=0
virtual DString trParameters()=0
virtual DString trReturnValues()=0
virtual DString trTemplateParameters()=0
Translator * theTranslator
Definition language.cpp:71

References ASSERT, DBG_RTF, decIndentLevel(), DocParamSect::Exception, getStyle(), incIndentLevel(), m_hide, m_lastIsPara, m_t, DocParamSect::Param, DocParamSect::RetVal, rtf_Style, rtf_Style_Reset, DocParamSect::TemplateParam, theTranslator, Translator::trExceptions(), Translator::trParameters(), Translator::trReturnValues(), Translator::trTemplateParameters(), DocParamSect::type(), and visitChildren().

◆ operator()() [38/59]

void RTFDocVisitor::operator() ( const DocParBlock & pb)

Definition at line 1681 of file rtfdocvisitor.cpp.

1682{
1683 if (m_hide) return;
1684 visitChildren(pb);
1685}

References m_hide, and visitChildren().

◆ operator()() [39/59]

void RTFDocVisitor::operator() ( const DocPlantUmlFile & df)

Definition at line 1318 of file rtfdocvisitor.cpp.

1319{
1320 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocPlantUmlFile &)}\n");
1321 if (!Config_getBool(DOT_CLEANUP)) copyFile(df.file(),Config_getString(RTF_OUTPUT)+"/"+stripPath(df.file()));
1322 DString rtfOutput = Config_getString(RTF_OUTPUT);
1323 std::string inBuf;
1324 readInputFile(df.file(),inBuf);
1325 auto baseNameVector = PlantumlManager::instance().writePlantUMLSource(
1326 rtfOutput,DString(),inBuf,PlantumlManager::PUML_BITMAP,
1327 DString(),df.srcFile(),df.srcLine(),false);
1328 for(const auto &baseName: baseNameVector)
1329 {
1330 writePlantUMLFile(baseName, df.hasCaption());
1331 visitChildren(df);
1333 }
1334}
StringVector writePlantUMLSource(const DString &outDirArg, const DString &fileName, const DString &content, OutputFormat format, const DString &engine, const DString &srcFile, int srcLine, bool inlineCode)
Write a PlantUML compatible file.
Definition plantuml.cpp:31
static PlantumlManager & instance()
Definition plantuml.cpp:230
void writePlantUMLFile(const DString &fileName, bool hasCaption)

References Config_getBool, Config_getString, copyFile(), DBG_RTF, DString::DString(), DocDiagramFileBase::file(), DocDiagramFileBase::hasCaption(), includePicturePostRTF(), PlantumlManager::instance(), PlantumlManager::PUML_BITMAP, readInputFile(), DocDiagramFileBase::srcFile(), DocDiagramFileBase::srcLine(), stripPath(), visitChildren(), writePlantUMLFile(), and PlantumlManager::writePlantUMLSource().

◆ operator()() [40/59]

void RTFDocVisitor::operator() ( const DocRef & ref)

Definition at line 1363 of file rtfdocvisitor.cpp.

1364{
1365 if (m_hide) return;
1366 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocRef &)}\n");
1367 // when ref.isSubPage()==true we use ref.file() for HTML and
1368 // ref.anchor() for LaTeX/RTF
1369 if (ref.isSubPage())
1370 {
1371 startLink(ref.ref(),DString(),ref.anchor());
1372 }
1373 else
1374 {
1375 if (!ref.file().empty()) startLink(ref.ref(),ref.file(),ref.anchor());
1376 }
1377 if (!ref.hasLinkText()) filter(ref.targetTitle());
1378 visitChildren(ref);
1379 if (!ref.file().empty()) endLink(ref.ref());
1380 //m_t << " ";
1381}
DString ref() const
Definition docnode.h:793
DString file() const
Definition docnode.h:791
bool isSubPage() const
Definition docnode.h:801
DString anchor() const
Definition docnode.h:794
bool hasLinkText() const
Definition docnode.h:797
DString targetTitle() const
Definition docnode.h:795

References DocRef::anchor(), DBG_RTF, DString::empty(), endLink(), DocRef::file(), filter(), DocRef::hasLinkText(), DocRef::isSubPage(), m_hide, DocRef::ref(), startLink(), DocRef::targetTitle(), and visitChildren().

◆ operator()() [41/59]

void RTFDocVisitor::operator() ( const DocRoot & r)

Definition at line 719 of file rtfdocvisitor.cpp.

720{
721 if (m_hide) return;
722 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocRoot &)}\n");
723 if (r.indent()) incIndentLevel();
724 m_t << "{" << rtf_Style["BodyText"].reference() << "\n";
725 visitChildren(r);
726 if (!m_lastIsPara && !r.singleLine()) m_t << "\\par\n";
727 m_t << "}";
728 m_lastIsPara=true;
729 if (r.indent()) decIndentLevel();
730}
bool singleLine() const
Definition docnode.h:1324
bool indent() const
Definition docnode.h:1323

References DBG_RTF, decIndentLevel(), incIndentLevel(), DocRoot::indent(), m_hide, m_lastIsPara, m_t, rtf_Style, DocRoot::singleLine(), and visitChildren().

◆ operator()() [42/59]

void RTFDocVisitor::operator() ( const DocSecRefItem & ref)

Definition at line 1384 of file rtfdocvisitor.cpp.

1385{
1386 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocSecRefItem &)}\n");
1387 visitChildren(ref);
1388}

References DBG_RTF, and visitChildren().

◆ operator()() [43/59]

void RTFDocVisitor::operator() ( const DocSecRefList & l)

Definition at line 1390 of file rtfdocvisitor.cpp.

1391{
1392 if (m_hide) return;
1393 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocSecRefList &)}\n");
1394 m_t << "{\n";
1396 m_t << rtf_Style_Reset << getStyle("LatexTOC") << "\n";
1397 m_t << "\\par\n";
1398 m_lastIsPara=true;
1399 visitChildren(l);
1401 m_t << "\\par";
1402 m_t << "}\n";
1403 m_lastIsPara=true;
1404}

References DBG_RTF, decIndentLevel(), getStyle(), incIndentLevel(), m_hide, m_lastIsPara, m_t, rtf_Style_Reset, and visitChildren().

◆ operator()() [44/59]

void RTFDocVisitor::operator() ( const DocSection & s)

Definition at line 845 of file rtfdocvisitor.cpp.

846{
847 if (m_hide) return;
848 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocSection &)}\n");
849 if (!m_lastIsPara) m_t << "\\par\n";
850 m_t << "{\\bkmkstart " << rtfFormatBmkStr(stripPath(s.file())+"_"+s.anchor()) << "}\n";
851 m_t << "{\\bkmkend " << rtfFormatBmkStr(stripPath(s.file())+"_"+s.anchor()) << "}\n";
852 m_t << "{{" // start section
854 DString heading;
855 int level = std::min(s.level()+2+m_hierarchyLevel,4);
856 if (level <= 0)
857 level = 1;
858 heading.sprintf("Heading%d",level);
859 // set style
860 m_t << rtf_Style[heading.str()].reference() << "\n";
861 // make table of contents entry
862 if (s.title())
863 {
864 std::visit(*this,*s.title());
865 }
866 m_t << "\n\\par" << "}\n";
867 m_t << "{\\tc\\tcl" << level << " \\v ";
868 if (s.title())
869 {
870 std::visit(*this,*s.title());
871 }
872 m_t << "}\n";
873 m_lastIsPara=true;
874 visitChildren(s);
875 m_t << "\\par}\n"; // end section
876 m_lastIsPara=true;
877}
DString file() const
Definition docnode.h:931
int level() const
Definition docnode.h:927
DString anchor() const
Definition docnode.h:929
const DocNodeVariant * title() const
Definition docnode.h:928

References DocSection::anchor(), DBG_RTF, DocSection::file(), DocSection::level(), m_hide, m_hierarchyLevel, m_lastIsPara, m_t, rtf_Style, rtf_Style_Reset, rtfFormatBmkStr(), DString::sprintf(), DString::str(), stripPath(), DocSection::title(), and visitChildren().

◆ operator()() [45/59]

void RTFDocVisitor::operator() ( const DocSeparator & sep)

Definition at line 1448 of file rtfdocvisitor.cpp.

1449{
1450 m_t << " " << sep.chars() << " ";
1451}
DString chars() const
Definition docnode.h:369

References DocSeparator::chars(), and m_t.

◆ operator()() [46/59]

void RTFDocVisitor::operator() ( const DocSimpleList & l)

Definition at line 816 of file rtfdocvisitor.cpp.

817{
818 if (m_hide) return;
819 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocSimpleSect &)}\n");
820 m_t << "{\n";
823 m_lastIsPara=false;
824 visitChildren(l);
825 if (!m_lastIsPara) m_t << "\\par\n";
826 m_t << "}\n";
827 m_lastIsPara=true;
828}

References DBG_RTF, indentLevel(), RTFDocVisitor::RTFListItemInfo::isCheck, RTFDocVisitor::RTFListItemInfo::isEnum, m_hide, m_lastIsPara, m_listItemInfo, m_t, and visitChildren().

◆ operator()() [47/59]

void RTFDocVisitor::operator() ( const DocSimpleListItem & li)

Definition at line 830 of file rtfdocvisitor.cpp.

831{
832 if (m_hide) return;
833 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocSimpleListItem &)}\n");
834 m_t << "\\par" << rtf_Style_Reset << getStyle("ListBullet") << "\n";
835 m_lastIsPara=false;
837 if (li.paragraph())
838 {
839 std::visit(*this,*li.paragraph());
840 }
842 DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocSimpleListItem)}\n");
843}
const DocNodeVariant * paragraph() const
Definition docnode.h:1162

References DBG_RTF, decIndentLevel(), getStyle(), incIndentLevel(), m_hide, m_lastIsPara, m_t, DocSimpleListItem::paragraph(), and rtf_Style_Reset.

◆ operator()() [48/59]

void RTFDocVisitor::operator() ( const DocSimpleSect & s)

Definition at line 732 of file rtfdocvisitor.cpp.

733{
734 if (m_hide) return;
735 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocSimpleSect &)}\n");
736 if (!m_lastIsPara) m_t << "\\par\n";
737 m_t << "{"; // start desc
738 //m_t << "{\\b "; // start bold
739 m_t << "{" << rtf_Style["Heading5"].reference() << "\n";
740 switch(s.type())
741 {
743 m_t << theTranslator->trSeeAlso(); break;
745 m_t << theTranslator->trReturns(); break;
747 m_t << theTranslator->trAuthor(true,true); break;
749 m_t << theTranslator->trAuthor(true,false); break;
751 m_t << theTranslator->trVersion(); break;
753 m_t << theTranslator->trSince(); break;
755 m_t << theTranslator->trDate(); break;
757 m_t << theTranslator->trNote(); break;
759 m_t << theTranslator->trWarning(); break;
761 m_t << theTranslator->trPrecondition(); break;
763 m_t << theTranslator->trPostcondition(); break;
765 m_t << theTranslator->trCopyright(); break;
767 m_t << theTranslator->trInvariant(); break;
769 m_t << theTranslator->trRemarks(); break;
771 m_t << theTranslator->trAttention(); break;
773 m_t << theTranslator->trImportant(); break;
774 case DocSimpleSect::User: break;
775 case DocSimpleSect::Rcs: break;
776 case DocSimpleSect::Unknown: break;
777 }
778
781 {
782 m_t << "\\par";
783 m_t << "}"; // end bold
784 m_t << rtf_Style_Reset << getStyle("DescContinue");
785 m_t << "{\\s17 \\sa60 \\sb30\n";
786 }
787 else
788 {
789 if (s.title())
790 {
791 std::visit(*this,*s.title());
792 }
793 m_t << "\\par\n";
794 m_t << "}"; // end bold
795 m_t << rtf_Style_Reset << getStyle("DescContinue");
796 }
797 m_lastIsPara=false;
798 visitChildren(s);
799 if (!m_lastIsPara) m_t << "\\par\n";
802 {
803 m_t << "}"; // end DescContinue
804 }
805 m_t << "}"; // end desc
806 m_lastIsPara=true;
807}
Type type() const
Definition docnode.h:1035
const DocNodeVariant * title() const
Definition docnode.h:1042
virtual DString trReturns()=0
virtual DString trCopyright()=0
virtual DString trWarning()=0
virtual DString trSince()=0
virtual DString trNote()=0
virtual DString trAuthor(bool first_capital, bool singular)=0
virtual DString trVersion()=0
virtual DString trImportant()=0
virtual DString trPrecondition()=0
virtual DString trAttention()=0
virtual DString trInvariant()=0
virtual DString trRemarks()=0
virtual DString trDate()=0
virtual DString trSeeAlso()=0
virtual DString trPostcondition()=0

References DocSimpleSect::Attention, DocSimpleSect::Author, DocSimpleSect::Authors, DocSimpleSect::Copyright, DocSimpleSect::Date, DBG_RTF, decIndentLevel(), getStyle(), DocSimpleSect::Important, incIndentLevel(), DocSimpleSect::Invar, m_hide, m_lastIsPara, m_t, DocSimpleSect::Note, DocSimpleSect::Post, DocSimpleSect::Pre, DocSimpleSect::Rcs, DocSimpleSect::Remark, DocSimpleSect::Return, rtf_Style, rtf_Style_Reset, DocSimpleSect::See, DocSimpleSect::Since, theTranslator, DocSimpleSect::title(), Translator::trAttention(), Translator::trAuthor(), Translator::trCopyright(), Translator::trDate(), Translator::trImportant(), Translator::trInvariant(), Translator::trNote(), Translator::trPostcondition(), Translator::trPrecondition(), Translator::trRemarks(), Translator::trReturns(), Translator::trSeeAlso(), Translator::trSince(), Translator::trVersion(), Translator::trWarning(), DocSimpleSect::type(), DocSimpleSect::Unknown, DocSimpleSect::User, DocSimpleSect::Version, visitChildren(), and DocSimpleSect::Warning.

◆ operator()() [49/59]

void RTFDocVisitor::operator() ( const DocSimpleSectSep & )

Definition at line 612 of file rtfdocvisitor.cpp.

613{
614}

◆ operator()() [50/59]

void RTFDocVisitor::operator() ( const DocStyleChange & s)

Definition at line 245 of file rtfdocvisitor.cpp.

246{
247 if (m_hide) return;
248 m_lastIsPara=false;
249 DBG_RTF("{\\comment RTFDocVisitor::visit(DocStyleChange)}\n");
250 switch (s.style())
251 {
253 if (s.enable()) m_t << "{\\b "; else m_t << "} ";
254 break;
258 if (s.enable()) m_t << "{\\strike "; else m_t << "} ";
259 break;
262 if (s.enable()) m_t << "{\\ul "; else m_t << "} ";
263 break;
265 if (s.enable()) m_t << "{\\i "; else m_t << "} ";
266 break;
270 if (s.enable()) m_t << "{\\f2 "; else m_t << "} ";
271 break;
273 if (s.enable()) m_t << "{\\sub "; else m_t << "} ";
274 break;
276 if (s.enable()) m_t << "{\\super "; else m_t << "} ";
277 break;
279 if (s.enable()) m_t << "{\\qc "; else m_t << "} ";
280 break;
282 if (s.enable()) m_t << "{\\sub "; else m_t << "} ";
283 break;
285 if (s.enable()) m_t << "{\\i "; else m_t << "} ";
286 break;
288 if (s.enable())
289 {
290 m_t << "{\n";
291 m_t << "\\par\n";
292 m_t << rtf_Style_Reset << getStyle("CodeExample");
293 m_insidePre=true;
294 }
295 else
296 {
297 m_insidePre=false;
298 m_t << "\\par";
299 m_t << "}\n";
300 }
301 m_lastIsPara=true;
302 break;
303 case DocStyleChange::Div: /* HTML only */ break;
304 case DocStyleChange::Span: /* HTML only */ break;
305 }
306}
Style style() const
Definition docnode.h:307
bool enable() const
Definition docnode.h:309

References DocStyleChange::Bold, DocStyleChange::Center, DocStyleChange::Cite, DocStyleChange::Code, DBG_RTF, DocStyleChange::Del, DocStyleChange::Div, DocStyleChange::enable(), getStyle(), DocStyleChange::Ins, DocStyleChange::Italic, DocStyleChange::Kbd, m_hide, m_insidePre, m_lastIsPara, m_t, DocStyleChange::Preformatted, rtf_Style_Reset, DocStyleChange::S, DocStyleChange::Small, DocStyleChange::Span, DocStyleChange::Strike, DocStyleChange::style(), DocStyleChange::Subscript, DocStyleChange::Superscript, DocStyleChange::Typewriter, and DocStyleChange::Underline.

◆ operator()() [51/59]

void RTFDocVisitor::operator() ( const DocSymbol & s)

Definition at line 141 of file rtfdocvisitor.cpp.

142{
143 if (m_hide) return;
144 DBG_RTF("{\\comment RTFDocVisitor::visit(DocSymbol)}\n");
145 const char *res = HtmlEntityMapper::instance().rtf(s.symbol());
146 if (res)
147 {
148 m_t << res;
149 }
150 else
151 {
152 err("RTF: non supported HTML-entity found: {}\n",HtmlEntityMapper::instance().html(s.symbol(),true));
153 }
154 m_lastIsPara=false;
155}
HtmlEntityMapper::SymType symbol() const
Definition docnode.h:332

References DBG_RTF, err, HtmlEntityMapper::instance(), m_hide, m_lastIsPara, m_t, HtmlEntityMapper::rtf(), and DocSymbol::symbol().

◆ operator()() [52/59]

void RTFDocVisitor::operator() ( const DocText & t)

Definition at line 1655 of file rtfdocvisitor.cpp.

1656{
1657 if (m_hide) return;
1658 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocText &)}\n");
1659 visitChildren(t);
1660}

References DBG_RTF, m_hide, and visitChildren().

◆ operator()() [53/59]

void RTFDocVisitor::operator() ( const DocTitle & t)

Definition at line 809 of file rtfdocvisitor.cpp.

810{
811 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocTitle &)}\n");
812 if (m_hide) return;
813 visitChildren(t);
814}

References DBG_RTF, m_hide, and visitChildren().

◆ operator()() [54/59]

void RTFDocVisitor::operator() ( const DocURL & u)

Definition at line 199 of file rtfdocvisitor.cpp.

200{
201 if (m_hide) return;
202 DBG_RTF("{\\comment RTFDocVisitor::visit(DocURL)}\n");
203 if (Config_getBool(RTF_HYPERLINKS))
204 {
205 m_t << "{\\field "
206 "{\\*\\fldinst "
207 "{ HYPERLINK \"";
208 if (u.isEmail()) m_t << "mailto:";
209 m_t << u.url();
210 m_t << "\" }"
211 "{}";
212 m_t << "}"
213 "{\\fldrslt "
214 "{\\cs37\\ul\\cf2 ";
215 filter(u.url());
216 m_t << "}"
217 "}"
218 "}\n";
219 }
220 else
221 {
222 m_t << "{\\f2 ";
223 filter(u.url());
224 m_t << "}";
225 }
226 m_lastIsPara=false;
227}
DString url() const
Definition docnode.h:192
bool isEmail() const
Definition docnode.h:193

References Config_getBool, DBG_RTF, filter(), DocURL::isEmail(), m_hide, m_lastIsPara, m_t, and DocURL::url().

◆ operator()() [55/59]

void RTFDocVisitor::operator() ( const DocVerbatim & s)

Definition at line 308 of file rtfdocvisitor.cpp.

309{
310 if (m_hide) return;
311 DBG_RTF("{\\comment RTFDocVisitor::visit(DocVerbatim)}\n");
312 DString lang = m_langExt;
313 if (!s.language().empty()) // explicit language setting
314 {
315 lang = s.language();
316 }
317 SrcLangExt langExt = getLanguageFromCodeLang(lang);
318 switch(s.type())
319 {
321 m_t << "{\n";
322 m_t << "\\par\n";
323 m_t << rtf_Style_Reset << getStyle("CodeExample");
324 getCodeParser(lang).parseCode(m_ci,s.context(),s.text(),langExt,
325 Config_getBool(STRIP_CODE_COMMENTS),
326 CodeParserOptions().setExample(s.isExample(),s.exampleFile()));
327 //m_t << "\\par\n";
328 m_t << "}\n";
329 break;
331 filter(s.text(),true);
332 break;
334 m_t << "{\n";
335 m_t << "{\\f2 ";
336 filter(s.text(),true);
337 m_t << "}";
338 m_t << "}\n";
339 break;
341 m_t << "{\n";
342 m_t << "\\par\n";
343 m_t << rtf_Style_Reset << getStyle("CodeExample");
344 filter(s.text(),true);
345 //m_t << "\\par\n";
346 m_t << "}\n";
347 break;
349 m_t << s.text();
350 break;
356 /* nothing */
357 break;
358 case DocVerbatim::Dot:
359 {
360 bool exists = false;
361 auto fileName = writeInlineGraph(Config_getString(RTF_OUTPUT)+"/inline_dotgraph_", // baseName
362 ".dot", // extension
363 s.text(), // contents
364 exists);
365 if (!fileName.empty())
366 {
367 writeDotFile(fileName, s.hasCaption(), s.srcFile(), s.srcLine(), !exists);
368 visitChildren(s);
370 }
371 }
372 break;
373 case DocVerbatim::Msc:
374 {
375 bool exists = false;
376 auto fileName = writeInlineGraph(Config_getString(RTF_OUTPUT)+"/inline_mscgraph_", // baseName
377 ".msc", // extension
378 "msc {"+s.text()+"}", // contents
379 exists);
380 if (!fileName.empty())
381 {
382 writeMscFile(fileName, s.hasCaption(), s.srcFile(), s.srcLine(), !exists);
383 visitChildren(s);
385 }
386 }
387 break;
389 {
390 DString rtfOutput = Config_getString(RTF_OUTPUT);
391 auto baseNameVector = PlantumlManager::instance().writePlantUMLSource(
393 s.engine(),s.srcFile(),s.srcLine(),true);
394
395 for (const auto &baseName: baseNameVector)
396 {
397 writePlantUMLFile(baseName, s.hasCaption());
398 visitChildren(s);
400 }
401 }
402 break;
404 if (Config_getBool(MERMAID_RENDER_MODE)!=MERMAID_RENDER_MODE_t::CLIENT_SIDE)
405 {
406 auto rtfOutput = Config_getString(RTF_OUTPUT);
407 auto outputFormat = MermaidManager::OutputFormat::RTF;
408 auto imageFormat = MermaidManager::convertToImageFormat(outputFormat);
410 rtfOutput,s.exampleFile(),s.text(),imageFormat,
411 s.srcFile(),s.srcLine());
412 writeMermaidFile(baseName, s.hasCaption());
413 visitChildren(s);
415 }
416 break;
417 }
418 m_lastIsPara=false;
419}
DString text() const
Definition docnode.h:383
int srcLine() const
Definition docnode.h:398
bool hasCaption() const
Definition docnode.h:390
DString language() const
Definition docnode.h:388
bool isExample() const
Definition docnode.h:385
Type type() const
Definition docnode.h:382
DString exampleFile() const
Definition docnode.h:386
DString srcFile() const
Definition docnode.h:397
DString context() const
Definition docnode.h:384
DString engine() const
Definition docnode.h:393
@ JavaDocLiteral
Definition docnode.h:378
SrcLangExt getLanguageFromCodeLang(DString &fileName)
Routine to handle the language attribute of the \code command.
Definition util.cpp:4554

References DocVerbatim::Code, Config_getBool, Config_getString, DocVerbatim::context(), MermaidManager::convertToImageFormat(), DBG_RTF, DocVerbatim::DocbookOnly, DocVerbatim::Dot, DString::empty(), DocVerbatim::engine(), DocVerbatim::exampleFile(), filter(), DocVisitor::getCodeParser(), getLanguageFromCodeLang(), getStyle(), DocVerbatim::hasCaption(), DocVerbatim::HtmlOnly, includePicturePostRTF(), MermaidManager::instance(), PlantumlManager::instance(), DocVerbatim::isExample(), DocVerbatim::JavaDocCode, DocVerbatim::JavaDocLiteral, DocVerbatim::language(), DocVerbatim::LatexOnly, m_ci, m_hide, m_langExt, m_lastIsPara, m_t, DocVerbatim::ManOnly, DocVerbatim::Mermaid, DocVerbatim::Msc, CodeParserInterface::parseCode(), DocVerbatim::PlantUML, PlantumlManager::PUML_BITMAP, MermaidManager::RTF, rtf_Style_Reset, DocVerbatim::RtfOnly, DocVerbatim::srcFile(), DocVerbatim::srcLine(), DocVerbatim::text(), DocVerbatim::type(), DocVerbatim::Verbatim, visitChildren(), writeDotFile(), writeInlineGraph(), writeMermaidFile(), MermaidManager::writeMermaidSource(), writeMscFile(), writePlantUMLFile(), PlantumlManager::writePlantUMLSource(), and DocVerbatim::XmlOnly.

◆ operator()() [56/59]

void RTFDocVisitor::operator() ( const DocVhdlFlow & )

Definition at line 1677 of file rtfdocvisitor.cpp.

1678{
1679}

◆ operator()() [57/59]

void RTFDocVisitor::operator() ( const DocWhiteSpace & w)

Definition at line 126 of file rtfdocvisitor.cpp.

127{
128 if (m_hide) return;
129 DBG_RTF("{\\comment RTFDocVisitor::visit(DocWhiteSpace)}\n");
130 if (m_insidePre)
131 {
132 m_t << w.chars();
133 }
134 else
135 {
136 m_t << " ";
137 }
138 m_lastIsPara=false;
139}
DString chars() const
Definition docnode.h:358

References DocWhiteSpace::chars(), DBG_RTF, m_hide, m_insidePre, m_lastIsPara, and m_t.

◆ operator()() [58/59]

void RTFDocVisitor::operator() ( const DocWord & w)

Definition at line 108 of file rtfdocvisitor.cpp.

109{
110 if (m_hide) return;
111 DBG_RTF("{\\comment RTFDocVisitor::visit(DocWord)}\n");
112 filter(w.word());
113 m_lastIsPara=false;
114}
DString word() const
Definition docnode.h:156

References DBG_RTF, filter(), m_hide, m_lastIsPara, and DocWord::word().

◆ operator()() [59/59]

void RTFDocVisitor::operator() ( const DocXRefItem & x)

Definition at line 1584 of file rtfdocvisitor.cpp.

1585{
1586 if (m_hide) return;
1587 if (x.title().empty()) return;
1588 bool anonymousEnum = x.file()=="@";
1589 DBG_RTF("{\\comment RTFDocVisitor::operator()(const DocXRefItem &)}\n");
1590 if (!m_lastIsPara)
1591 {
1592 m_t << "\\par\n";
1593 m_lastIsPara=true;
1594 }
1595 m_t << "{"; // start param list
1596 //m_t << "{\\b "; // start bold
1597 m_t << "{" << rtf_Style["Heading5"].reference() << "\n";
1598 if (Config_getBool(RTF_HYPERLINKS) && !anonymousEnum)
1599 {
1600 DString refName;
1601 if (!x.file().empty())
1602 {
1603 refName+=stripPath(x.file());
1604 }
1605 if (!x.file().empty() && !x.anchor().empty())
1606 {
1607 refName+="_";
1608 }
1609 if (!x.anchor().empty())
1610 {
1611 refName+=x.anchor();
1612 }
1613
1614 m_t << "{\\field "
1615 "{\\*\\fldinst "
1616 "{ HYPERLINK \\\\l \"" << rtfFormatBmkStr(refName) << "\" "
1617 "}{}"
1618 "}"
1619 "{\\fldrslt "
1620 "{\\cs37\\ul\\cf2 ";
1621 filter(x.title());
1622 m_t << "}"
1623 "}"
1624 "}";
1625 }
1626 else
1627 {
1628 filter(x.title());
1629 }
1630 m_t << ":";
1631 m_t << "\\par";
1632 m_t << "}"; // end bold
1634 m_t << rtf_Style_Reset << getStyle("DescContinue");
1635 m_lastIsPara=false;
1636 visitChildren(x);
1637 if (x.title().empty()) return;
1638 DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocXRefItem)}\n");
1639 m_t << "\\par\n";
1641 m_t << "}\n"; // end xref item
1642 m_lastIsPara=true;
1643}
DString anchor() const
Definition docnode.h:625
DString file() const
Definition docnode.h:624
DString title() const
Definition docnode.h:626

References DocXRefItem::anchor(), Config_getBool, DBG_RTF, decIndentLevel(), DString::empty(), DocXRefItem::file(), filter(), getStyle(), incIndentLevel(), m_hide, m_lastIsPara, m_t, rtf_Style, rtf_Style_Reset, rtfFormatBmkStr(), stripPath(), DocXRefItem::title(), and visitChildren().

◆ startLink()

void RTFDocVisitor::startLink ( const DString & ref,
const DString & file,
const DString & anchor )
private

Definition at line 1731 of file rtfdocvisitor.cpp.

1732{
1733 if (ref.empty() && Config_getBool(RTF_HYPERLINKS))
1734 {
1735 DString refName;
1736 if (!file.empty())
1737 {
1738 refName+=stripPath(file);
1739 }
1740 if (!file.empty() && !anchor.empty())
1741 {
1742 refName+='_';
1743 }
1744 if (!anchor.empty())
1745 {
1746 refName+=anchor;
1747 }
1748
1749 m_t << "{\\field {\\*\\fldinst { HYPERLINK \\\\l \"";
1750 m_t << rtfFormatBmkStr(refName);
1751 m_t << "\" }{}";
1752 m_t << "}{\\fldrslt {\\cs37\\ul\\cf2 ";
1753 }
1754 else
1755 {
1756 m_t << "{\\b ";
1757 }
1758 m_lastIsPara=false;
1759}

References Config_getBool, DString::empty(), m_lastIsPara, m_t, rtfFormatBmkStr(), and stripPath().

Referenced by operator()(), operator()(), operator()(), operator()(), and operator()().

◆ visitChildren()

◆ writeDiaFile()

void RTFDocVisitor::writeDiaFile ( const DString & fileName,
bool hasCaption,
const DString & srcFile,
int srcLine,
bool newFile = true )
private

Definition at line 1793 of file rtfdocvisitor.cpp.

1795{
1796 DString baseName=makeBaseName(fileName,".dia");
1797 DString outDir = Config_getString(RTF_OUTPUT);
1798 if (newFile) writeDiaGraphFromFile(fileName,outDir,baseName,DiaOutputFormat::BITMAP,srcFile,srcLine,false);
1799 includePicturePreRTF(baseName + ".png", true, hasCaption);
1800}
void writeDiaGraphFromFile(const DString &inFile, const DString &outDir, const DString &outFile, DiaOutputFormat format, const DString &srcFile, int srcLine, bool toIndex)
Definition dia.cpp:28
DString makeBaseName(const DString &name, const DString &ext)
Definition util.cpp:4303

References BITMAP, Config_getString, includePicturePreRTF(), makeBaseName(), and writeDiaGraphFromFile().

Referenced by operator()().

◆ writeDotFile()

void RTFDocVisitor::writeDotFile ( const DString & fileName,
bool hasCaption,
const DString & srcFile,
int srcLine,
bool newFile = true )
private

Definition at line 1774 of file rtfdocvisitor.cpp.

1776{
1777 DString baseName=makeBaseName(filename,".dot");
1778 DString outDir = Config_getString(RTF_OUTPUT);
1779 if (newFile) writeDotGraphFromFile(filename,outDir,baseName,GraphOutputFormat::BITMAP,srcFile,srcLine,false);
1780 DString imgExt = getDotImageExtension();
1781 includePicturePreRTF(baseName + "." + imgExt, true, hasCaption);
1782}
void writeDotGraphFromFile(const DString &inFile, const DString &outDir, const DString &outFile, GraphOutputFormat format, const DString &srcFile, int srcLine, bool toIndex)
Definition dot.cpp:196
DString getDotImageExtension()
Definition util.cpp:5630

References BITMAP, Config_getString, getDotImageExtension(), includePicturePreRTF(), makeBaseName(), and writeDotGraphFromFile().

Referenced by operator()(), and operator()().

◆ writeMermaidFile()

void RTFDocVisitor::writeMermaidFile ( const DString & fileName,
bool hasCaption )
private

Definition at line 1810 of file rtfdocvisitor.cpp.

1811{
1812 if (Config_getBool(MERMAID_RENDER_MODE)==MERMAID_RENDER_MODE_t::CLIENT_SIDE) return;
1813 auto baseName = makeBaseName(fileName,".mmd");
1814 auto outDir = Config_getString(RTF_OUTPUT);
1815 auto outputFormat = MermaidManager::OutputFormat::RTF;
1816 auto imageFormat = MermaidManager::convertToImageFormat(outputFormat);
1817 auto imgExt = MermaidManager::imageExtension(imageFormat);
1818 MermaidManager::instance().generateMermaidOutput(fileName,outDir,imageFormat,false);
1819 includePicturePreRTF(baseName + "." + imgExt, true, hasCaption);
1820}
static DString imageExtension(ImageFormat imageFormat)
Definition mermaid.cpp:43
void generateMermaidOutput(const DString &baseName, const DString &outDir, ImageFormat format, bool toIndex)
Register a generated Mermaid image with the index.
Definition mermaid.cpp:116

References Config_getBool, Config_getString, MermaidManager::convertToImageFormat(), MermaidManager::generateMermaidOutput(), MermaidManager::imageExtension(), includePicturePreRTF(), MermaidManager::instance(), makeBaseName(), and MermaidManager::RTF.

Referenced by operator()(), and operator()().

◆ writeMscFile()

void RTFDocVisitor::writeMscFile ( const DString & fileName,
bool hasCaption,
const DString & srcFile,
int srcLine,
bool newFile = true )
private

Definition at line 1784 of file rtfdocvisitor.cpp.

1786{
1787 DString baseName=makeBaseName(fileName,".msc");
1788 DString outDir = Config_getString(RTF_OUTPUT);
1789 if (newFile) writeMscGraphFromFile(fileName,outDir,baseName,MscOutputFormat::BITMAP,srcFile,srcLine,false);
1790 includePicturePreRTF(baseName + ".png", true, hasCaption);
1791}
void writeMscGraphFromFile(const DString &inFile, const DString &outDir, const DString &outFile, MscOutputFormat format, const DString &srcFile, int srcLine, bool toIndex)
Definition msc.cpp:157

References BITMAP, Config_getString, includePicturePreRTF(), makeBaseName(), and writeMscGraphFromFile().

Referenced by operator()(), and operator()().

◆ writePlantUMLFile()

void RTFDocVisitor::writePlantUMLFile ( const DString & fileName,
bool hasCaption )
private

Definition at line 1802 of file rtfdocvisitor.cpp.

1803{
1804 DString baseName=makeBaseName(fileName,".pu");
1805 DString outDir = Config_getString(RTF_OUTPUT);
1807 includePicturePreRTF(baseName + ".png", true, hasCaption);
1808}
void generatePlantUMLOutput(const DString &baseName, const DString &outDir, OutputFormat format, bool toIndex)
Convert a PlantUML file to an image.
Definition plantuml.cpp:201

References Config_getString, PlantumlManager::generatePlantUMLOutput(), includePicturePreRTF(), PlantumlManager::instance(), makeBaseName(), and PlantumlManager::PUML_BITMAP.

Referenced by operator()(), and operator()().

Member Data Documentation

◆ m_ci

OutputCodeList& RTFDocVisitor::m_ci
private

Definition at line 143 of file rtfdocvisitor.h.

Referenced by operator()(), operator()(), operator()(), and RTFDocVisitor().

◆ m_hide

◆ m_hierarchyLevel

int RTFDocVisitor::m_hierarchyLevel = 0
private

Definition at line 151 of file rtfdocvisitor.h.

Referenced by operator()(), operator()(), and RTFDocVisitor().

◆ m_indentLevel

int RTFDocVisitor::m_indentLevel = 0
private

Definition at line 150 of file rtfdocvisitor.h.

Referenced by decIndentLevel(), getListTable(), incIndentLevel(), and indentLevel().

◆ m_insidePre

bool RTFDocVisitor::m_insidePre = false
private

Definition at line 144 of file rtfdocvisitor.h.

Referenced by operator()(), and operator()().

◆ m_langExt

DString RTFDocVisitor::m_langExt
private

Definition at line 147 of file rtfdocvisitor.h.

Referenced by operator()(), operator()(), and RTFDocVisitor().

◆ m_lastIsPara

◆ m_listItemInfo

RTFListItemInfo RTFDocVisitor::m_listItemInfo[maxIndentLevels]
private

Definition at line 159 of file rtfdocvisitor.h.

Referenced by operator()(), operator()(), operator()(), operator()(), and operator()().

◆ m_t

◆ maxIndentLevels

const int RTFDocVisitor::maxIndentLevels = 13
staticprivate

Definition at line 149 of file rtfdocvisitor.h.

Referenced by incIndentLevel(), and indentLevel().


The documentation for this class was generated from the following files: