2
// This unit is part of the GLScene Engine https://github.com/glscene
5
Basic editing frame for TGLTexture
7
{ TODO : Replace STImageClass with a dropdown (polymorphism) }
29
TRTextureEdit = class(TFrame)
30
CBFilteringQuality: TComboBox;
33
SBEditImage: TSpeedButton;
34
CBMagFilter: TComboBox;
37
CBMinFilter: TComboBox;
38
CBTextureMode: TComboBox;
41
CBTextureWrap: TComboBox;
42
CBDisabled: TCheckBox;
43
CBImageClass: TComboBox;
44
CBImageAlpha: TComboBox;
46
procedure CBFilteringQualityChange(Sender: TObject);
47
procedure CBMagFilterChange(Sender: TObject);
48
procedure CBMinFilterChange(Sender: TObject);
49
procedure CBTextureModeChange(Sender: TObject);
50
procedure CBTextureWrapChange(Sender: TObject);
51
procedure CBDisabledClick(Sender: TObject);
52
procedure SBEditImageClick(Sender: TObject);
53
procedure CBImageClassChange(Sender: TObject);
54
procedure CBImageAlphaChange(Sender: TObject);
57
FOnChange: TNotifyEvent;
60
procedure SetTexture(const val: TGLTexture);
61
procedure DoOnChange; dynamic;
63
constructor Create(AOwner: TComponent); override;
64
destructor Destroy; override;
65
property Texture: TGLTexture read FTexture write SetTexture;
66
property OnChange: TNotifyEvent read FOnChange write FOnChange;
70
//======================================================
72
//======================================================
76
GLTextureImageEditors, GLTextureFormat;
78
constructor TRTextureEdit.Create(AOwner: TComponent);
83
FTexture := TGLTexture.Create(Self);
85
SetGLTextureImageClassesToStrings(CBImageClass.Items);
87
for i := 0 to integer(High(TGLTextureImageAlpha)) do
88
CBImageAlpha.Items.Add(GetEnumName(TypeInfo(TGLTextureImageAlpha), i));
89
for i := 0 to integer(High(TGLMagFilter)) do
90
CBMagFilter.Items.Add(GetEnumName(TypeInfo(TGLMagFilter), i));
91
for i := 0 to integer(High(TGLMinFilter)) do
92
CBMinFilter.Items.Add(GetEnumName(TypeInfo(TGLMinFilter), i));
93
for i := 0 to Integer(High(TGLTextureFilteringQuality)) do
94
CBFilteringQuality.Items.Add(GetEnumName(TypeInfo(TGLTextureFilteringQuality), i));
95
for i := 0 to integer(High(TGLTextureMode)) do
96
CBTextureMode.Items.Add(GetEnumName(TypeInfo(TGLTextureMode), i));
97
for i := 0 to integer(High(TGLTextureWrap)) do
98
CBTextureWrap.Items.Add(GetEnumName(TypeInfo(TGLTextureWrap), i));
103
destructor TRTextureEdit.Destroy;
111
procedure TRTextureEdit.SetTexture(const val: TGLTexture);
113
FTexture.Assign(val);
117
ItemIndex := Items.IndexOfObject(Pointer(FTexture.Image.ClassType));
118
CBImageAlpha.ItemIndex := integer(FTexture.ImageAlpha);
119
CBMagFilter.ItemIndex := integer(FTexture.MagFilter);
120
CBMinFilter.ItemIndex := integer(FTexture.MinFilter);
121
CBFilteringQuality.ItemIndex:=Integer(FTexture.FilteringQuality);
122
CBTextureMode.ItemIndex := integer(FTexture.TextureMode);
123
CBTextureWrap.ItemIndex := integer(FTexture.TextureWrap);
124
CBDisabled.Checked := FTexture.Disabled;
133
procedure TRTextureEdit.DoOnChange;
135
if (not changeing) and Assigned(FOnChange) then
141
procedure TRTextureEdit.CBImageClassChange(Sender: TObject);
143
tic: TGLTextureImageClass;
146
if not changeing then
149
tic := TGLTextureImageClass(Items.Objects[ItemIndex]);
150
if FTexture.Image.ClassType <> tic then
152
ti := TGLTextureImageClass(tic).Create(FTexture);
153
FTexture.Image := ti;
162
procedure TRTextureEdit.CBImageAlphaChange(Sender: TObject);
164
FTexture.ImageAlpha := TGLTextureImageAlpha(CBImageAlpha.ItemIndex);
170
procedure TRTextureEdit.CBMagFilterChange(Sender: TObject);
172
FTexture.MagFilter := TGLMagFilter(CBMagFilter.ItemIndex);
176
procedure TRTextureEdit.CBFilteringQualityChange(Sender: TObject);
178
FTexture.FilteringQuality:=TGLTextureFilteringQuality(CBFilteringQuality.ItemIndex);
184
procedure TRTextureEdit.CBMinFilterChange(Sender: TObject);
186
FTexture.MinFilter := TGLMinFilter(CBMinFilter.ItemIndex);
190
// CBTextureModeChange
192
procedure TRTextureEdit.CBTextureModeChange(Sender: TObject);
194
FTexture.TextureMode := TGLTextureMode(CBTextureMode.ItemIndex);
198
// CBTextureWrapChange
200
procedure TRTextureEdit.CBTextureWrapChange(Sender: TObject);
202
FTexture.TextureWrap := TGLTextureWrap(CBTextureWrap.ItemIndex);
208
procedure TRTextureEdit.CBDisabledClick(Sender: TObject);
210
FTexture.Disabled := CBDisabled.Checked;
216
procedure TRTextureEdit.SBEditImageClick(Sender: TObject);
218
EditGLTextureImage(FTexture.Image);
225
{$I FRTextureEdit.lrs}