/usr/src/castle-game-engine-5.0.0/images/images_dds.inc is in castle-game-engine-src 5.0.0-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | function LoadDDS(Stream: TStream;
const AllowedImageClasses: array of TCastleImageClass): TCastleImage;
var
DDS: TDDSImage;
begin
DDS := TDDSImage.Create;
try
DDS.LoadFromStream(Stream);
{ After successfully loading, DDS should always contain at least one image }
Assert(DDS.Images.Count >= 1);
if DDS.Images[0] is TCastleImage then
begin
{ This way I don't have to make a copy of DDS.Images[0] for Result,
which would be a waste of time. }
DDS.OwnsFirstImage := false;
{ TODO: make sure to honor AllowedImageClasses.
For now, I just return whatever DDS set... }
Result := TCastleImage(DDS.Images[0]);
end else
raise EImageLoadError.CreateFmt('Cannot load this way image class %s', [DDS.Images[0].ClassName]);
finally FreeAndNil(DDS) end;
end;
procedure SaveDDS(Img: TCastleImage; Stream: TStream);
var
DDS: TDDSImage;
begin
DDS := TDDSImage.Create;
try
DDS.Width := Img.Width;
DDS.Height := Img.Height;
DDS.DDSType := dtTexture;
DDS.Mipmaps := false;
DDS.MipmapsCount := 1;
DDS.Images.Count := 1;
DDS.Images[0] := Img;
DDS.OwnsFirstImage := false;
DDS.SaveToStream(Stream);
finally FreeAndNil(DDS) end;
end;
|