UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ImageTile.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "IntVectorTypes.h"
7
8namespace UE
9{
10namespace Geometry
11{
12
14{
15private:
16 FVector2i Start = FVector2i::Zero();
18 int Width = 0;
19 int Height = 0;
20
21public:
22 FImageTile() = default;
24 : Start(InStart)
25 , End(InEnd)
26 , Width(InEnd.X - InStart.X)
27 , Height(InEnd.Y - InStart.Y)
28 {
29 }
30
32 {
33 return Start;
34 }
35
37 {
38 return End;
39 }
40
42 {
43 return Width;
44 }
45
47 {
48 return Height;
49 }
50
51 int64 Num() const
52 {
53 return Width * Height;
54 }
55
57 int64 GetIndex(const int32 X, const int32 Y) const
58 {
59 return Y * Width + X;
60 }
61
64 {
65 return GetIndex(LocalCoords.X, LocalCoords.Y);
66 }
67
70 {
71 return FVector2i((int32)(LinearIdx % Width), (int32)(LinearIdx / Width));
72 }
73
75 bool Contains(const int32 X, const int32 Y) const
76 {
77 return (X >= Start.X && X < End.X && Y >= Start.Y && Y < End.Y);
78 }
79
82 {
84 return GetIndex(X - Start.X, Y - Start.Y);
85 }
86
92
95 {
96 return FVector2i(Start.X + int32(LinearIdx % Width), Start.Y + int32(LinearIdx / Width));
97 }
98
101 {
102 return FVector2i(Start.X + X, Start.Y + Y);
103 }
104
110};
111
113{
114private:
115 FImageDimensions Dimensions;
116 int32 TileWidth = 32;
117 int32 TileHeight = 32;
118
119public:
124
126 {
127 checkSlow(TileWidthIn >= 1 && TileHeightIn >= 1);
128 Dimensions = DimensionsIn;
129 TileWidth = FMath::Clamp(TileWidthIn, 1, FMath::Max(1, Dimensions.GetWidth()));
130 TileHeight = FMath::Clamp(TileHeightIn, 1, FMath::Max(1, Dimensions.GetHeight()));
131 }
132
134 {
135 return Dimensions.GetWidth() / TileWidth + (Dimensions.GetWidth() % TileWidth == 0 ? 0 : 1);
136 }
137
139 {
140 return Dimensions.GetHeight() / TileHeight + (Dimensions.GetHeight() % TileHeight == 0 ? 0 : 1);
141 }
142
143 int32 Num() const
144 {
145 return NumTilesX() * NumTilesY();
146 }
147
150 {
151 const int32 TilePadding = Padding < 0 ? 0 : Padding;
153
155 TileStart.X = FMath::Clamp(TileIndex.X * TileWidth - TilePadding, 0, Dimensions.GetWidth());
156 TileStart.Y = FMath::Clamp(TileIndex.Y * TileHeight - TilePadding, 0, Dimensions.GetHeight());
157 TileEnd.X = FMath::Clamp((TileIndex.X + 1) * TileWidth + TilePadding, 0, Dimensions.GetWidth());
158 TileEnd.Y = FMath::Clamp((TileIndex.Y + 1) * TileHeight + TilePadding, 0, Dimensions.GetHeight());
160 }
161};
162
163} // end namespace UE::Geometry
164} // end namespace UE
#define checkSlow(expr)
Definition AssertionMacros.h:332
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define X(Name, Desc)
Definition FormatStringSan.h:47
Definition ImageDimensions.h:18
int32 GetHeight() const
Definition ImageDimensions.h:40
int32 GetWidth() const
Definition ImageDimensions.h:38
Definition ImageTile.h:14
int64 GetIndexFromSourceCoords(const FVector2i &SourceCoords) const
Definition ImageTile.h:88
FVector2i GetEnd() const
Definition ImageTile.h:36
FImageTile(const FVector2i &InStart, const FVector2i &InEnd)
Definition ImageTile.h:23
FVector2i GetSourceCoords(const int64 LinearIdx) const
Definition ImageTile.h:94
FVector2i GetCoords(const int64 LinearIdx) const
Definition ImageTile.h:69
int64 Num() const
Definition ImageTile.h:51
FVector2i GetStart() const
Definition ImageTile.h:31
FVector2i GetSourceCoords(const FVector2i &LocalCoords) const
Definition ImageTile.h:106
bool Contains(const int32 X, const int32 Y) const
Definition ImageTile.h:75
FVector2i GetSourceCoords(const int32 X, const int32 Y) const
Definition ImageTile.h:100
int64 GetIndex(const FVector2i &LocalCoords) const
Definition ImageTile.h:63
int32 GetWidth() const
Definition ImageTile.h:41
int64 GetIndexFromSourceCoords(const int32 X, const int32 Y) const
Definition ImageTile.h:81
int64 GetIndex(const int32 X, const int32 Y) const
Definition ImageTile.h:57
int32 GetHeight() const
Definition ImageTile.h:46
Definition ImageTile.h:113
int32 NumTilesY() const
Definition ImageTile.h:138
int32 Num() const
Definition ImageTile.h:143
FImageTile GetTile(const int32 LinearTileIndex, const int32 Padding=0) const
Definition ImageTile.h:149
void SetTiling(const FImageDimensions DimensionsIn, const int32 TileWidthIn, const int32 TileHeightIn)
Definition ImageTile.h:125
int32 NumTilesX() const
Definition ImageTile.h:133
FImageTiling(const FImageDimensions DimensionsIn, const int32 TileWidthIn, const int32 TileHeightIn)
Definition ImageTile.h:120
Definition AdvancedWidgetsModule.cpp:13
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
Definition IntVectorTypes.h:20
int32 X
Definition IntVectorTypes.h:25
int32 Y
Definition IntVectorTypes.h:25
static constexpr FVector2i Zero()
Definition IntVectorTypes.h:99