Skip to content

Commit d40289d

Browse files
committed
Add support for markdown admonitions.
1 parent 86fbe52 commit d40289d

1 file changed

Lines changed: 47 additions & 1 deletion

File tree

profiler/src/profiler/TracyMarkdown.cpp

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,40 @@ class MarkdownContext
166166
ImGui::TextUnformatted( ". " );
167167
break;
168168
}
169+
case MD_BLOCK_ADMONITION:
170+
{
171+
Separate();
172+
ImGui::Indent();
173+
origin = ImGui::GetCursorScreenPos();
174+
auto admonition = ((MD_BLOCK_ADMONITION_DETAIL*)detail);
175+
switch( admonition->type.text[0] )
176+
{
177+
case 'n': // note
178+
color = 0xFFEB6F1F;
179+
TextColoredUnformatted( color, ICON_FA_CIRCLE_INFO " " );
180+
break;
181+
case 't': // tip
182+
color = 0xFF368623;
183+
TextColoredUnformatted( color, ICON_FA_LIGHTBULB " " );
184+
break;
185+
case 'i': // important
186+
color = 0xFFE55789;
187+
TextColoredUnformatted( color, ICON_FA_MESSAGE " " );
188+
break;
189+
case 'w': // warning
190+
color = 0xFF036A9E;
191+
TextColoredUnformatted( color, ICON_FA_TRIANGLE_EXCLAMATION " " );
192+
break;
193+
case 'c': // caution
194+
color = 0xFF3336DA;
195+
TextColoredUnformatted( color, ICON_FA_HAND " " );
196+
break;
197+
default:
198+
assert( false );
199+
}
200+
Glue();
201+
break;
202+
}
169203
default:
170204
break;
171205
}
@@ -223,6 +257,15 @@ class MarkdownContext
223257
case MD_BLOCK_FOOTNOTE_DEF:
224258
ImGui::PopFont();
225259
break;
260+
case MD_BLOCK_ADMONITION:
261+
{
262+
const auto scale = GetScale();
263+
const auto pos = ImGui::GetCursorScreenPos();
264+
const auto offset = ImVec2( 8.f * scale, 0 );
265+
ImGui::Unindent();
266+
ImGui::GetWindowDrawList()->AddLine( origin - offset, pos - offset, color, 2.f * scale );
267+
break;
268+
}
226269
default:
227270
break;
228271
}
@@ -493,6 +536,9 @@ class MarkdownContext
493536

494537
int idx = 0;
495538

539+
uint32_t color;
540+
ImVec2 origin;
541+
496542
std::vector<List> lists;
497543
std::string link;
498544

@@ -507,7 +553,7 @@ Markdown::Markdown( View* view, Worker* worker )
507553
, m_worker( worker )
508554
{
509555
memset( m_parser, 0, sizeof( MD_PARSER ) );
510-
m_parser->flags = MD_FLAG_COLLAPSEWHITESPACE | MD_FLAG_PERMISSIVEAUTOLINKS | MD_FLAG_NOHTML | MD_FLAG_TABLES | MD_FLAG_TASKLISTS | MD_FLAG_STRIKETHROUGH | MD_FLAG_FOOTNOTES;
556+
m_parser->flags = MD_FLAG_COLLAPSEWHITESPACE | MD_FLAG_PERMISSIVEAUTOLINKS | MD_FLAG_NOHTML | MD_FLAG_TABLES | MD_FLAG_TASKLISTS | MD_FLAG_STRIKETHROUGH | MD_FLAG_FOOTNOTES | MD_FLAG_ADMONITIONS;
511557
m_parser->enter_block = []( MD_BLOCKTYPE type, void* detail, void* ud ) -> int { return ((MarkdownContext*)ud)->EnterBlock( type, detail ); };
512558
m_parser->leave_block = []( MD_BLOCKTYPE type, void* detail, void* ud ) -> int { return ((MarkdownContext*)ud)->LeaveBlock( type, detail ); };
513559
m_parser->enter_span = []( MD_SPANTYPE type, void* detail, void* ud ) -> int { return ((MarkdownContext*)ud)->EnterSpan( type, detail ); };

0 commit comments

Comments
 (0)