FFmpeg
Data Structures | Macros | Functions | Variables
tf_mermaid.c File Reference
#include <limits.h>
#include <stdarg.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include "avtextformat.h"
#include "tf_internal.h"
#include "tf_mermaid.h"
#include <libavutil/mem.h>
#include <libavutil/avassert.h>
#include <libavutil/bprint.h>
#include <libavutil/opt.h>

Go to the source code of this file.

Data Structures

struct  MermaidContext
 
struct  MermaidContext::section_data
 

Macros

#define OFFSET(x)   offsetof(MermaidContext, x)
 
#define MM_INDENT()   writer_printf(tfc, "%*c", mmc->indent_level * 2, ' ')
 

Functions

 DEFINE_FORMATTER_CLASS (mermaid)
 
void av_diagram_init (AVTextFormatContext *tfc, AVDiagramConfig *diagram_config)
 
static av_cold int has_link_pair (const AVTextFormatContext *tfc, const char *src, const char *dest)
 
static av_cold int mermaid_init (AVTextFormatContext *tfc)
 
static av_cold int mermaid_init_html (AVTextFormatContext *tfc)
 
static av_cold int mermaid_uninit (AVTextFormatContext *tfc)
 
static void set_str (const char **dst, const char *src)
 
static void mermaid_print_section_header (AVTextFormatContext *tfc, const void *data)
 
static void mermaid_print_section_footer (AVTextFormatContext *tfc)
 
static void mermaid_print_value (AVTextFormatContext *tfc, const char *key, const char *str, int64_t num, const int is_int)
 
static void mermaid_print_str (AVTextFormatContext *tfc, const char *key, const char *value)
 
static void mermaid_print_int (AVTextFormatContext *tfc, const char *key, int64_t value)
 

Variables

static const char * init_directive
 
static const char * init_directive_er
 
static const char * theme_css_er
 
static const AVOption mermaid_options []
 
const AVTextFormatter avtextformatter_mermaid
 
const AVTextFormatter avtextformatter_mermaidhtml
 

Macro Definition Documentation

◆ OFFSET

#define OFFSET (   x)    offsetof(MermaidContext, x)

Definition at line 161 of file tf_mermaid.c.

◆ MM_INDENT

#define MM_INDENT ( )    writer_printf(tfc, "%*c", mmc->indent_level * 2, ' ')

Definition at line 244 of file tf_mermaid.c.

Function Documentation

◆ DEFINE_FORMATTER_CLASS()

DEFINE_FORMATTER_CLASS ( mermaid  )

◆ av_diagram_init()

void av_diagram_init ( AVTextFormatContext tfc,
AVDiagramConfig diagram_config 
)

Definition at line 172 of file tf_mermaid.c.

Referenced by init_graphprint().

◆ has_link_pair()

static av_cold int has_link_pair ( const AVTextFormatContext tfc,
const char *  src,
const char *  dest 
)
static

Definition at line 178 of file tf_mermaid.c.

Referenced by mermaid_print_section_footer().

◆ mermaid_init()

static av_cold int mermaid_init ( AVTextFormatContext tfc)
static

Definition at line 194 of file tf_mermaid.c.

Referenced by mermaid_init_html().

◆ mermaid_init_html()

static av_cold int mermaid_init_html ( AVTextFormatContext tfc)
static

Definition at line 204 of file tf_mermaid.c.

◆ mermaid_uninit()

static av_cold int mermaid_uninit ( AVTextFormatContext tfc)
static

Definition at line 218 of file tf_mermaid.c.

◆ set_str()

static void set_str ( const char **  dst,
const char *  src 
)
static

Definition at line 235 of file tf_mermaid.c.

Referenced by mermaid_print_section_header(), and mermaid_print_value().

◆ mermaid_print_section_header()

static void mermaid_print_section_header ( AVTextFormatContext tfc,
const void *  data 
)
static

Definition at line 246 of file tf_mermaid.c.

◆ mermaid_print_section_footer()

static void mermaid_print_section_footer ( AVTextFormatContext tfc)
static

Definition at line 412 of file tf_mermaid.c.

◆ mermaid_print_value()

static void mermaid_print_value ( AVTextFormatContext tfc,
const char *  key,
const char *  str,
int64_t  num,
const int  is_int 
)
static

Definition at line 549 of file tf_mermaid.c.

Referenced by mermaid_print_int(), and mermaid_print_str().

◆ mermaid_print_str()

static void mermaid_print_str ( AVTextFormatContext tfc,
const char *  key,
const char *  value 
)
inlinestatic

Definition at line 641 of file tf_mermaid.c.

◆ mermaid_print_int()

static void mermaid_print_int ( AVTextFormatContext tfc,
const char *  key,
int64_t  value 
)
static

Definition at line 646 of file tf_mermaid.c.

Variable Documentation

◆ init_directive

const char* init_directive
static
Initial value:
= ""
"%%{init: {"
"\"theme\": \"base\","
"\"curve\": \"monotoneX\","
"\"rankSpacing\": 10,"
"\"nodeSpacing\": 10,"
"\"themeCSS\": \"__###__\","
"\"fontFamily\": \"Roboto,Segoe UI,sans-serif\","
"\"themeVariables\": { "
"\"clusterBkg\": \"white\", "
"\"primaryBorderColor\": \"gray\", "
"\"lineColor\": \"gray\", "
"\"secondaryTextColor\": \"gray\", "
"\"tertiaryBorderColor\": \"gray\", "
"\"primaryTextColor\": \"#666\", "
"\"secondaryTextColor\": \"red\" "
"},"
"\"flowchart\": { "
"\"subGraphTitleMargin\": { \"top\": -15, \"bottom\": 20 }, "
"\"diagramPadding\": 20, "
"\"curve\": \"monotoneX\" "
"}"
" }}%%\n\n"

Definition at line 36 of file tf_mermaid.c.

Referenced by mermaid_print_section_header().

◆ init_directive_er

const char* init_directive_er
static
Initial value:
= ""
"%%{init: {"
"\"theme\": \"base\","
"\"layout\": \"elk\","
"\"curve\": \"monotoneX\","
"\"rankSpacing\": 65,"
"\"nodeSpacing\": 60,"
"\"themeCSS\": \"__###__\","
"\"fontFamily\": \"Roboto,Segoe UI,sans-serif\","
"\"themeVariables\": { "
"\"clusterBkg\": \"white\", "
"\"primaryBorderColor\": \"gray\", "
"\"lineColor\": \"gray\", "
"\"secondaryTextColor\": \"gray\", "
"\"tertiaryBorderColor\": \"gray\", "
"\"primaryTextColor\": \"#666\", "
"\"secondaryTextColor\": \"red\" "
"},"
"\"er\": { "
"\"diagramPadding\": 12, "
"\"entityPadding\": 4, "
"\"minEntityWidth\": 150, "
"\"minEntityHeight\": 20, "
"\"curve\": \"monotoneX\" "
"}"
" }}%%\n\n"

Definition at line 60 of file tf_mermaid.c.

Referenced by mermaid_print_section_header().

◆ theme_css_er

const char* theme_css_er
static

Definition at line 87 of file tf_mermaid.c.

Referenced by mermaid_print_section_header().

◆ mermaid_options

const AVOption mermaid_options[]
static
Initial value:
= {
{ "link_coloring", "enable colored links (requires Mermaid >= 11.5)", OFFSET(enable_link_colors), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1 },
{ NULL },
}

Definition at line 163 of file tf_mermaid.c.

◆ avtextformatter_mermaid

const AVTextFormatter avtextformatter_mermaid
Initial value:
= {
.name = "mermaid",
.priv_size = sizeof(MermaidContext),
.print_section_header = mermaid_print_section_header,
.print_section_footer = mermaid_print_section_footer,
.print_integer = mermaid_print_int,
.print_string = mermaid_print_str,
.priv_class = &mermaid_class,
}

Definition at line 651 of file tf_mermaid.c.

◆ avtextformatter_mermaidhtml

const AVTextFormatter avtextformatter_mermaidhtml
Initial value:
= {
.name = "mermaidhtml",
.priv_size = sizeof(MermaidContext),
.print_section_header = mermaid_print_section_header,
.print_section_footer = mermaid_print_section_footer,
.print_integer = mermaid_print_int,
.print_string = mermaid_print_str,
.priv_class = &mermaid_class,
}

Definition at line 665 of file tf_mermaid.c.

flags
const SwsFlags flags[]
Definition: swscale.c:61
AV_TEXTFORMAT_FLAG_IS_DIAGRAM_FORMATTER
#define AV_TEXTFORMAT_FLAG_IS_DIAGRAM_FORMATTER
Definition: avtextformat.h:73
mermaid_print_int
static void mermaid_print_int(AVTextFormatContext *tfc, const char *key, int64_t value)
Definition: tf_mermaid.c:646
mermaid_print_str
static void mermaid_print_str(AVTextFormatContext *tfc, const char *key, const char *value)
Definition: tf_mermaid.c:641
mermaid_init_html
static av_cold int mermaid_init_html(AVTextFormatContext *tfc)
Definition: tf_mermaid.c:204
MermaidContext
Definition: tf_mermaid.c:133
NULL
#define NULL
Definition: coverity.c:32
OFFSET
#define OFFSET(x)
Definition: tf_mermaid.c:161
init
int(* init)(AVBSFContext *ctx)
Definition: dts2pts.c:368
mermaid_print_section_footer
static void mermaid_print_section_footer(AVTextFormatContext *tfc)
Definition: tf_mermaid.c:412
mermaid_print_section_header
static void mermaid_print_section_header(AVTextFormatContext *tfc, const void *data)
Definition: tf_mermaid.c:246
uninit
static void uninit(AVBSFContext *ctx)
Definition: pcm_rechunk.c:68
mermaid_init
static av_cold int mermaid_init(AVTextFormatContext *tfc)
Definition: tf_mermaid.c:194
mermaid_uninit
static av_cold int mermaid_uninit(AVTextFormatContext *tfc)
Definition: tf_mermaid.c:218
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Underlying C type is int.
Definition: opt.h:327