Skip to main content

Integration Tiers

Azimuth Markdown offers three ways to integrate, from zero-effort to full control.

Tier A: Drop-In Prebuilt Widget (Easiest)

For the fastest possible integration:

  1. In the Widget palette, search for WBP_AzimuthMarkdownBlock
  2. Drag it into your widget layout
  3. Call Set Markdown Text on it with your markdown string

That's it. The widget handles parsing, rendering, styling, and Unicode sanitization internally.

Best for: Quick prototyping, simple use cases, developers who want formatted text display with zero setup.

For more control over your UI layout while still avoiding C++:

  1. Add a URichTextBlock (or AzimuthRichTextBlock) to your widget
  2. Assign DT_AzimuthMarkdownStyles to its Text Style Set property
  3. Add AzimuthRichTextStyleDecorator to its Decorator Classes array
  4. Add AzimuthRichTextLinkDecorator to its Decorator Classes array
  5. In your Blueprint, call Convert and Sanitize Markdown from the Azimuth Markdown Library
  6. Pass the result to the RichTextBlock's Set Text function

Best for: Production use, custom UI layouts, any project that needs formatted text display integrated into existing widgets.

Tier C: Full C++ Access (Maximum Control)

For C++ projects or advanced customization:

#include "AzimuthMarkdownParserStatics.h"
#include "AzimuthMarkdownRenderer.h"
#include "AzimuthMarkdownTagMapping.h"

// Parse markdown into an Abstract Syntax Tree
TArray<FMarkdownBlock> AST = FAzimuthMarkdownParser::Parse(RawMarkdown);

// Render to tagged rich text for URichTextBlock
FString Tagged = FAzimuthMarkdownRenderer::RenderToTaggedText(AST, GetDefaultAzimuthTagMapping());

// Sanitize Unicode symbols for font compatibility
FString Safe = FAzimuthMarkdownRenderer::SanitizeUnicodeSymbols(Tagged);

// Display in your RichTextBlock
MyRichTextBlock->SetText(FText::FromString(Safe));

Best for: C++ projects, custom renderers, integration with existing parsing pipelines, projects that need access to the AST for custom processing.