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

QuartzUITextureResources: 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/QuartzUITextureResources.h) · integration recipe · practical guide

FQuartzUIStaticTextureEntry

Internal type. Static Texture Entry: a declared type in view-owned static texture2d snapshots and revocable png urls; use its exact fields/operations below.

Prerequisites / integration: Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the QuartzUITextureResources recipe in the host module QuartzUIRuntime.

Minimal example / lifecycle: GetTextureResources()->RegisterTexture(loadedTexture). View retains assets/bytes; ReleaseAll/close revokes URLs.

Avoid: Treating empty URL as ready or snapshots as live GPU import. 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/QuartzUITextureResources.h#L12)

UQuartzUITextureResources

Public type. View-owned static Texture2D snapshots. HTML receives opaque same-origin PNG URLs. One bounded snapshot per tick; no asset-path loading, filesystem exports or live GPU sharing. See Documentation/TextureResources.md for formats, lifetime and performance limits.

Prerequisites / integration: Exact-player view plus native asset/source ownership; GAS additionally requires GameplayAbilities. Use the QuartzUITextureResources recipe in the host module QuartzUIRuntime.

Minimal example / lifecycle: GetTextureResources()->RegisterTexture(loadedTexture). View retains assets/bytes; ReleaseAll/close revokes URLs.

Avoid: Treating empty URL as ready or snapshots as live GPU import. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIRuntime/Public/QuartzUITextureResources.h#L25)

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 "Tickable.h"
#include "UObject/Object.h"
#include "QuartzUITextureResources.generated.h"

class UTexture2D;
class UQuartzUIView;

USTRUCT()
struct FQuartzUIStaticTextureEntry
{
	GENERATED_BODY()
	UPROPERTY(Transient) TObjectPtr<UTexture2D> Texture;
	FString Url;
	double RequestedAt = 0;
	bool bFinished = false;
};

/** View-owned static Texture2D snapshots. HTML receives opaque same-origin PNG URLs.
 * One bounded snapshot per tick; no asset-path loading, filesystem exports or live GPU sharing.
 * See Documentation/TextureResources.md for formats, lifetime and performance limits. */
UCLASS(BlueprintType)
class QUARTZUIRUNTIME_API UQuartzUITextureResources : public UObject, public FTickableGameObject
{
	GENERATED_BODY()
public:
	static constexpr int32 MaxTextures = 256;
	static constexpr int32 MaxDimension = 1024;

	/** Empty while queued/unsupported. Repeated calls reuse the same snapshot and URL. */
	UFUNCTION(BlueprintCallable, Category = "QuartzUI|Textures")
	FString RegisterTexture(UTexture2D* Texture);

	/** Revoke this set's URLs and release retained textures. Safe to call repeatedly. */
	UFUNCTION(BlueprintCallable, Category = "QuartzUI|Textures")
	void ReleaseAll();

	UFUNCTION(BlueprintPure, Category = "QuartzUI|Textures")
	int64 GetRevision() const { return Revision; }

	virtual void Tick(float DeltaTime) override;
	virtual bool IsTickable() const override;
	virtual TStatId GetStatId() const override;
	virtual void BeginDestroy() override;

	/** Browser IO-thread seam: copies ready bytes only; never touches UObjects. */
	static bool ReadImage(const FString& Url, TArray<uint8>& OutBytes, int32& OutLength, bool bHead);

private:
	void Initialize(UQuartzUIView* InView);
	bool PublishImage(FQuartzUIStaticTextureEntry& Entry, TArray<uint8>&& Bytes);
	UPROPERTY(Transient) TWeakObjectPtr<UQuartzUIView> View;
	UPROPERTY(Transient) TArray<FQuartzUIStaticTextureEntry> Entries;
	FString Origin;
	int64 Revision = 0;
	int32 NextEntry = 0;
	friend class UQuartzUIView;
	friend struct FQuartzUITextureTestAccess;
};