---
title: "QuartzUIPresentation: declaration reference"
description: "Quartz UI 0.57.0-dev: QuartzUIPresentation: declaration reference. Source-reviewed guidance, usage and limitations."
status: approved
visibility: public
sourceRevision: fe5b709ec900e282b50e58b819a25041945005f9
reviewedAt: 2026-09-24
---

# 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](https://betterbuilt.games/docs/quartz-ui/evidence).

Pinned source (source: `Source/QuartzUIRuntime/Public/QuartzUIPresentation.h`) · [integration recipe](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuipresentation) · [practical guide](https://betterbuilt.games/docs/quartz-ui/views-input)

## 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](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuipresentation) 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](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuipresentation) 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](https://betterbuilt.games/docs/quartz-ui/inventory#quartzuipresentation) 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.

```cpp
#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();
};
```

Canonical HTML: https://betterbuilt.games/docs/quartz-ui/reference-quartzuipresentation
