Stream Chat Unreal SDK
Loading...
Searching...
No Matches
HtmlTextBlock.h
1// Copyright 2022 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 "Launch/Resources/Version.h"
10#include "Styling/SlateStyle.h"
11
12#include "HtmlTextBlock.generated.h"
13
14class FHtmlSlateStyleSet final : public FSlateStyleSet
15{
16public:
17 explicit FHtmlSlateStyleSet(const FName& InStyleSetName, const FHtmlElementStyles& InStyles) : FSlateStyleSet{InStyleSetName}, Styles{InStyles}
18 {
19 }
20
21#if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION <= 27
22 virtual const FSlateWidgetStyle* GetWidgetStyleInternal(const FName DesiredTypeName, const FName StyleName) const override;
23#else
24 virtual const FSlateWidgetStyle* GetWidgetStyleInternal(
25 const FName DesiredTypeName,
26 const FName StyleName,
27 const FSlateWidgetStyle* DefaultStyle,
28 bool bWarnIfNotFound) const override;
29#endif
30
31private:
32 FHtmlElementStyles Styles;
33 mutable TMap<FName, FTextBlockStyle> CombinedStyleCache;
34};
35
39UCLASS()
40class STREAMCHATUI_API UHtmlTextBlock final : public URichTextBlock
41{
42 GENERATED_BODY()
43
44public:
45 UFUNCTION(BlueprintCallable, Category = "Widget")
46 void SetHtmlStyles(const FHtmlElementStyles& InStyles);
47
48protected:
49 UPROPERTY(EditAnywhere, Category = Appearance)
50 FHtmlElementStyles Styles;
51
52private:
53 virtual void CreateDecorators(TArray<TSharedRef<ITextDecorator>>& OutDecorators) override;
54 virtual TSharedPtr<IRichTextMarkupParser> CreateMarkupParser() override;
55 virtual void UpdateStyleData() override;
56};