LZScene

Форк
0
/
O3TCImage.pas 
121 строка · 3.0 Кб
1
//
2
// This unit is part of the GLScene Engine https://github.com/glscene
3
//
4
{
5
    Good for preview picture in OpenDialog,
6
    so you may include both O3TCImage (preview) and GLFileO3TC (loading)
7

8
       23/10/10 - Yar - Removed PBuffer    
9
       23/08/10 - Yar - Changes after PBuffer upgrade
10
       21/03/10 - Yar - Added Linux support
11
                           (thanks to Rustam Asmandiarov aka Predator)
12
       24/01/10 - Yar - Improved FPC compatibility
13
       21/01/10 - Yar - Creation
14
    
15
}
16

17
unit O3TCImage;
18

19
interface
20

21
{$I GLScene.inc}
22

23
uses
24
{$IFDEF MSWINDOWS}
25
  Windows,
26
{$ENDIF}
27
  Classes,
28
  SysUtils,
29
  GLCrossPlatform,
30
  GLVectorGeometry,
31
  GLGraphics,
32
  OpenGLTokens;
33

34
type
35

36
  TO3TCImage = class(TGLBitmap)
37
  public
38
     
39
    procedure LoadFromStream(stream: TStream); override;
40
    procedure SaveToStream(stream: TStream); override;
41
  end;
42

43
implementation
44

45
uses
46
  graphtype,
47
  GLFileO3TC,
48
  GLTextureFormat;
49

50
// ------------------
51
// ------------------ TO3TCImage ------------------
52
// ------------------
53

54
// LoadFromStream
55
//
56

57
procedure TO3TCImage.LoadFromStream(stream: TStream);
58
var
59
  FullO3TC: TGLO3TCImage;
60

61
  RIMG: TRawImage;
62

63
begin
64
  FullO3TC := TGLO3TCImage.Create;
65
  try
66
    FullO3TC.LoadFromStream(stream);
67
  except
68
    FullO3TC.Free;
69
    raise;
70
  end;
71

72
  FullO3TC.Narrow;
73

74
  Width := FullO3TC.LevelWidth[0];
75
  Height := FullO3TC.LevelHeight[0];
76
  Transparent := true;
77
  PixelFormat := glpf32bit;
78

79

80
  RIMG.Init;
81
  rimg.Description.Init_BPP32_B8G8R8A8_BIO_TTB(Width, Height);
82
  rimg.Description.RedShift := 16;
83
  rimg.Description.BlueShift := 0;
84
  rimg.Description.LineOrder := riloBottomToTop;
85
  RIMG.DataSize := Width * Height * 4;
86
  rimg.Data := PByte(FullO3TC.Data);
87
  LoadFromRawImage(rimg, false);
88

89
  FullO3TC.Free;
90
end;
91

92
// SaveToStream
93
//
94

95
procedure TO3TCImage.SaveToStream(stream: TStream);
96
begin
97
  Assert(False, 'Not supported');
98
end;
99

100
// ------------------------------------------------------------------
101
// ------------------------------------------------------------------
102
// ------------------------------------------------------------------
103
initialization
104
  // ------------------------------------------------------------------
105
  // ------------------------------------------------------------------
106
  // ------------------------------------------------------------------
107

108
  TGLPicture.RegisterFileFormat(
109
    'o3tc', 'oZone3D Texture Compression', TO3TCImage);
110

111
  // ------------------------------------------------------------------
112
  // ------------------------------------------------------------------
113
  // ------------------------------------------------------------------
114
finalization
115
  // ------------------------------------------------------------------
116
  // ------------------------------------------------------------------
117
  // ------------------------------------------------------------------
118

119
  TGLPicture.UnregisterGraphicClass(TO3TCImage);
120

121
end.
122

123

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.