Stream Chat Unreal SDK
Loading...
Searching...
No Matches
HtmlTextBlock.h
1// Copyright 2026 Stream.IO, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Components/RichTextBlock.h"
6#include "CoreMinimal.h"
7#include "Framework/Text/IRichTextMarkupParser.h"
8#include "HtmlElementStyle.h"
9#include "Styling/SlateStyle.h"
10
11#include "HtmlTextBlock.generated.h"
12
13class FHtmlSlateStyleSet final : public FSlateStyleSet
14{
15public:
16 explicit FHtmlSlateStyleSet(const FName& InStyleSetName, const FHtmlElementStyles& InStyles) : FSlateStyleSet{InStyleSetName}, Styles{InStyles}
17 {
18 }
19
20 virtual const FSlateWidgetStyle* GetWidgetStyleInternal(
21 const FName DesiredTypeName,
22 const FName StyleName,
23 const FSlateWidgetStyle* DefaultStyle,
24 bool bWarnIfNotFound) const override;
25
26private:
27 FHtmlElementStyles Styles;
28 mutable TMap<FName, FTextBlockStyle> CombinedStyleCache;
29};
30
34UCLASS()
35class STREAMCHATUI_API UHtmlTextBlock final : public URichTextBlock
36{
37 GENERATED_BODY()
38
39public:
40 UFUNCTION(BlueprintCallable, Category = "Widget")
41 void SetHtmlStyles(const FHtmlElementStyles& InStyles);
42
43protected:
44 UPROPERTY(EditAnywhere, Category = Appearance)
45 FHtmlElementStyles Styles;
46
47private:
48 virtual void CreateDecorators(TArray<TSharedRef<ITextDecorator>>& OutDecorators) override;
49 virtual TSharedPtr<IRichTextMarkupParser> CreateMarkupParser() override;
50 virtual void UpdateStyleData() override;
51};