Quartz UI ↗
Browse docs
On this page
Private preview · 0.57.0-devView Markdown

QuartzUIPresentation: declaration reference

0.57.0-dev · beta source documentation. Native, Blueprint, Editor and rendering examples are source-reviewed, not executed in Unreal during this scan. See validation and limits.

Pinned source (source: Source/QuartzUIRuntime/Public/QuartzUIPresentation.h) · integration recipe · practical guide

EQuartzUITextDirection

Public type. Text Direction: a declared type in culture, direction, text scale, accessibility preferences and normalization; use its exact fields/operations below.

Prerequisites / integration: Exact local player and configured app; Slate/UMG dependencies for native presentation work. Use the QuartzUIPresentation recipe in the host module QuartzUIRuntime.

Minimal example / lifecycle: SetPresentationPreferences; subscribe quartzui.presentation and apply in frontend. Native culture refresh; frontend subscription cleanup on unmount.

Avoid: Assuming standalone transport applies DOM attributes itself. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIPresentation.h#L8)

FQuartzUIPresentationContext

Public type. Per-player presentation preferences published by Unreal, never inferred in JavaScript. Wire role: payload of quartzui.presentation (state).

Prerequisites / integration: Exact local player and configured app; Slate/UMG dependencies for native presentation work. Use the QuartzUIPresentation recipe in the host module QuartzUIRuntime.

Minimal example / lifecycle: client.subscribeState('quartzui.presentation', value => { /* read this DTO */ }). Native culture refresh; frontend subscription cleanup on unmount.

Avoid: Assuming standalone transport applies DOM attributes itself. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIPresentation.h#L16)

FQuartzUIPresentationPolicy

Internal type. Validation and protocol-v1 serialization for the normalized web presentation context.

Prerequisites / integration: Exact local player and configured app; Slate/UMG dependencies for native presentation work. Use the QuartzUIPresentation recipe in the host module QuartzUIRuntime.

Minimal example / lifecycle: SetPresentationPreferences; subscribe quartzui.presentation and apply in frontend. Native culture refresh; frontend subscription cleanup on unmount.

Avoid: Assuming standalone transport applies DOM attributes itself. This named helper is runtime-owned; inspect/use it through the owner above rather than constructing it in gameplay.

Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUIPresentation.h#L55)

Complete header

Source snapshot, not an additional example. Unreal annotations distinguish exposed Blueprint nodes from native-only/private methods.

#pragma once

#include "CoreMinimal.h"

#include "QuartzUIPresentation.generated.h"

UENUM(BlueprintType, meta = (QuartzUITypeName = "QuartzUITextDirection"))
enum class EQuartzUITextDirection : uint8
{
	LeftToRight UMETA(QuartzUIValue = "ltr"),
	RightToLeft UMETA(QuartzUIValue = "rtl")
};

/** Per-player presentation preferences published by Unreal, never inferred in JavaScript. */
USTRUCT(BlueprintType, meta = (QuartzUITypeName = "QuartzUIPresentationState"))
struct QUARTZUIRUNTIME_API FQuartzUIPresentationContext
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Presentation", meta = (QuartzUIName = "language"))
	FString LanguageTag = TEXT("en");

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Presentation", meta = (QuartzUIName = "locale"))
	FString LocaleTag = TEXT("en");

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Presentation", meta = (QuartzUIName = "direction"))
	EQuartzUITextDirection TextDirection = EQuartzUITextDirection::LeftToRight;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Presentation", meta = (QuartzUIName = "textScale"))
	float TextScale = 1.0f;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Presentation", meta = (QuartzUIName = "reducedMotion"))
	bool bReducedMotion = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "QuartzUI|Presentation", meta = (QuartzUIName = "highContrast"))
	bool bHighContrast = false;

	/** Read from Slate's platform accessibility handler. */
	UPROPERTY(BlueprintReadOnly, Category = "QuartzUI|Presentation", meta = (QuartzUIName = "screenReader"))
	bool bScreenReaderActive = false;

	bool operator==(const FQuartzUIPresentationContext& Other) const
	{
		return LanguageTag == Other.LanguageTag
			&& LocaleTag == Other.LocaleTag
			&& TextDirection == Other.TextDirection
			&& FMath::IsNearlyEqual(TextScale, Other.TextScale)
			&& bReducedMotion == Other.bReducedMotion
			&& bHighContrast == Other.bHighContrast
			&& bScreenReaderActive == Other.bScreenReaderActive;
	}
};

/** Validation and protocol-v1 serialization for the normalized web presentation context. */
class QUARTZUIRUNTIME_API FQuartzUIPresentationPolicy final
{
public:
	static constexpr int32 MaxCultureTagLength = 64;
	static constexpr float MinTextScale = 0.75f;
	static constexpr float MaxTextScale = 2.0f;

	static bool IsValidCultureTag(const FString& CultureTag);
	static bool TryNormalize(
		const FQuartzUIPresentationContext& Context,
		FQuartzUIPresentationContext& OutNormalizedContext);
	static bool TrySerialize(
		const FQuartzUIPresentationContext& Context,
		FString& OutPayloadJson);
	static FQuartzUIPresentationContext MakeCurrentUnrealContext();
};