3
interface //#################################################################### ■
7
LUX, LUX.D2, LUX.Color, LUX.Map.D2;
9
type //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【型】
11
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
13
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
15
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TTexture2D
17
TTexture2D = class( TBricArray2D<TSingleRGBA> )
22
constructor Create; overload;
23
constructor Create( const FileName_:String ); overload;
25
property Gamma :Single read _Gamma write _Gamma;
27
procedure LoadFromBitmap( const Bitmap_:TBitmap );
28
procedure LoadFromFile( const FileName_:String );
29
function Interp( const X_,Y_:Single ) :TSingleRGBA; overload;
30
function Interp( const P_:TSingle2D ) :TSingleRGBA; overload;
33
//const //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【定数】
35
//var //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【変数】
37
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
39
implementation //############################################################### ■
43
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
45
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
47
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TTexture2D
49
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
51
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
53
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
55
constructor TTexture2D.Create;
62
constructor TTexture2D.Create( const FileName_:String );
66
LoadFromFile( FileName_ );
69
/////////////////////////////////////////////////////////////////////// メソッド
71
procedure TTexture2D.LoadFromBitmap( const Bitmap_:TBitmap );
80
BricX := Bitmap_.Width ;
81
BricY := Bitmap_.Height;
83
Bitmap_.Map( TMapAccess.Read, B );
85
for Y := 0 to BricY-1 do
87
P := B.GetScanline( Y );
89
for X := 0 to BricX-1 do
91
Bric[ X, Y ] := GammaCorrect( TSingleRGBA( P^ ), RecG ); Inc( P );
98
procedure TTexture2D.LoadFromFile( const FileName_:String );
104
B.LoadFromFile( FileName_ );
111
function TTexture2D.Interp( const X_,Y_:Single ) :TSingleRGBA;
113
X1, Y1, Xi, Yi :Integer;
114
X, Y, Xd, Yd :Single;
122
if X_ <= 0 then X := 0
124
if X_ >= 1 then X := X1
127
if Y_ <= 0 then Y := 0
129
if Y_ >= 1 then Y := Y1
132
Xi := Floor( X ); if Xi > X1 then Xi := X1; Xd := X - Xi;
133
Yi := Floor( Y ); if Yi > Y1 then Yi := Y1; Yd := Y - Yi;
135
C00 := Bric[ Xi+0, Yi+0 ]; C01 := Bric[ Xi+1, Yi+0 ];
136
C10 := Bric[ Xi+0, Yi+1 ]; C11 := Bric[ Xi+1, Yi+1 ];
138
C0 := ( C01 - C00 ) * Xd + C00;
139
C1 := ( C11 - C10 ) * Xd + C10;
141
Result := ( C1 - C0 ) * Yd + C0;
144
function TTexture2D.Interp( const P_:TSingle2D ) :TSingleRGBA;
146
with P_ do Result := Interp( X, Y );
149
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
151
//############################################################################## □
153
initialization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 初期化
155
finalization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 最終化
157
end. //######################################################################### ■