Doxygen
Toggle main menu visibility
Loading...
Searching...
No Matches
mermaid.h
Go to the documentation of this file.
1
/******************************************************************************
2
*
3
* Copyright (C) 1997-2026 by Dimitri van Heesch.
4
*
5
* Permission to use, copy, modify, and distribute this software and its
6
* documentation under the terms of the GNU General Public License is hereby
7
* granted. No representations are made about the suitability of this software
8
* for any purpose. It is provided "as is" without express or implied warranty.
9
* See the GNU General Public License for more details.
10
*
11
* Documents produced by Doxygen are derivative works derived from the
12
* input used in their production; they are not affected by this license.
13
*
14
*/
15
16
#ifndef MERMAID_H
17
#define MERMAID_H
18
19
#include <map>
20
#include <string>
21
#include <vector>
22
23
#include "
containers.h
"
24
#include "
qcstring.h
"
25
26
struct
MermaidDiagramInfo
27
{
28
MermaidDiagramInfo
(
const
QCString
&baseName_,
const
QCString
&content_,
29
const
QCString
&outDir_,
const
QCString
&srcFile_,
int
srcLine_)
30
:
baseName
(baseName_),
content
(content_),
outDir
(outDir_),
31
srcFile
(srcFile_),
srcLine
(srcLine_) {}
32
QCString
baseName
;
33
QCString
content
;
34
QCString
outDir
;
35
QCString
srcFile
;
36
int
srcLine
;
37
};
38
39
/** Singleton that manages Mermaid diagram rendering via the mmdc CLI tool. */
40
class
MermaidManager
41
{
42
public
:
43
/** Mermaid output image formats */
44
enum class
OutputFormat
{
HTML
,
LaTeX
,
RTF
,
Docbook
};
45
enum class
ImageFormat
{
PNG
,
SVG
,
PDF
};
46
47
static
MermaidManager
&
instance
();
48
49
/** Run mmdc tool for all collected diagrams */
50
void
run
();
51
52
/** Write a Mermaid source file and register it for CLI rendering.
53
* @param[in] outDirArg the output directory to write the file to.
54
* @param[in] fileName the name of the file. If empty a name will be chosen automatically.
55
* @param[in] content the Mermaid diagram source.
56
* @param[in] format the image format to generate.
57
* @param[in] srcFile the source file resulting in the write command.
58
* @param[in] srcLine the line number resulting in the write command.
59
* @returns The base name of the generated file (without extension).
60
*/
61
QCString
writeMermaidSource
(
const
QCString
&outDirArg,
const
QCString
&fileName,
62
const
QCString
&content,
ImageFormat
format,
63
const
QCString
&srcFile,
int
srcLine);
64
65
/** Register a generated Mermaid image with the index.
66
* @param[in] baseName the name of the generated file (as returned by writeMermaidSource())
67
* @param[in] outDir the directory containing the resulting image.
68
* @param[in] format the image format that was generated.
69
* @param[in] toIndex add the file to the index lists for htmlhelp / qhc etc.
70
*/
71
void
generateMermaidOutput
(
const
QCString
&baseName,
const
QCString
&outDir,
ImageFormat
format,
bool
toIndex);
72
73
struct
MermaidDiagram
74
{
75
MermaidDiagram
(
ImageFormat
fmt
,
MermaidDiagramInfo
&&inf) :
imageFormat
(
fmt
),
info
(std::move(inf)) {}
76
ImageFormat
imageFormat
;
77
MermaidDiagramInfo
info
;
78
};
79
using
DiagramList
= std::vector<MermaidDiagram>;
80
81
static
QCString
imageExtension
(
ImageFormat
imageFormat);
82
static
ImageFormat
convertToImageFormat
(
OutputFormat
outputFormat);
83
84
private
:
85
MermaidManager
();
86
87
DiagramList
m_diagrams
;
88
};
89
90
#endif
MermaidManager
Singleton that manages Mermaid diagram rendering via the mmdc CLI tool.
Definition
mermaid.h:41
MermaidManager::run
void run()
Run mmdc tool for all collected diagrams.
Definition
mermaid.cpp:245
MermaidManager::OutputFormat
OutputFormat
Mermaid output image formats.
Definition
mermaid.h:44
MermaidManager::OutputFormat::HTML
@ HTML
Definition
mermaid.h:44
MermaidManager::OutputFormat::LaTeX
@ LaTeX
Definition
mermaid.h:44
MermaidManager::OutputFormat::Docbook
@ Docbook
Definition
mermaid.h:44
MermaidManager::OutputFormat::RTF
@ RTF
Definition
mermaid.h:44
MermaidManager::generateMermaidOutput
void generateMermaidOutput(const QCString &baseName, const QCString &outDir, ImageFormat format, bool toIndex)
Register a generated Mermaid image with the index.
Definition
mermaid.cpp:117
MermaidManager::MermaidManager
MermaidManager()
Definition
mermaid.cpp:39
MermaidManager::imageExtension
static QCString imageExtension(ImageFormat imageFormat)
Definition
mermaid.cpp:43
MermaidManager::instance
static MermaidManager & instance()
Definition
mermaid.cpp:33
MermaidManager::m_diagrams
DiagramList m_diagrams
Definition
mermaid.h:87
MermaidManager::convertToImageFormat
static ImageFormat convertToImageFormat(OutputFormat outputFormat)
Definition
mermaid.cpp:54
MermaidManager::DiagramList
std::vector< MermaidDiagram > DiagramList
Definition
mermaid.h:79
MermaidManager::ImageFormat
ImageFormat
Definition
mermaid.h:45
MermaidManager::ImageFormat::PNG
@ PNG
Definition
mermaid.h:45
MermaidManager::ImageFormat::PDF
@ PDF
Definition
mermaid.h:45
MermaidManager::ImageFormat::SVG
@ SVG
Definition
mermaid.h:45
MermaidManager::writeMermaidSource
QCString writeMermaidSource(const QCString &outDirArg, const QCString &fileName, const QCString &content, ImageFormat format, const QCString &srcFile, int srcLine)
Write a Mermaid source file and register it for CLI rendering.
Definition
mermaid.cpp:70
QCString
This is an alternative implementation of QCString.
Definition
qcstring.h:101
containers.h
fmt
Definition
message.h:144
qcstring.h
MermaidDiagramInfo
Definition
mermaid.h:27
MermaidDiagramInfo::srcFile
QCString srcFile
Definition
mermaid.h:35
MermaidDiagramInfo::MermaidDiagramInfo
MermaidDiagramInfo(const QCString &baseName_, const QCString &content_, const QCString &outDir_, const QCString &srcFile_, int srcLine_)
Definition
mermaid.h:28
MermaidDiagramInfo::content
QCString content
Definition
mermaid.h:33
MermaidDiagramInfo::baseName
QCString baseName
Definition
mermaid.h:32
MermaidDiagramInfo::srcLine
int srcLine
Definition
mermaid.h:36
MermaidDiagramInfo::outDir
QCString outDir
Definition
mermaid.h:34
MermaidManager::MermaidDiagram::info
MermaidDiagramInfo info
Definition
mermaid.h:77
MermaidManager::MermaidDiagram::MermaidDiagram
MermaidDiagram(ImageFormat fmt, MermaidDiagramInfo &&inf)
Definition
mermaid.h:75
MermaidManager::MermaidDiagram::imageFormat
ImageFormat imageFormat
Definition
mermaid.h:76
src
mermaid.h
Generated by
1.17.0