Subversion Repositories spacemission

Compare Revisions

No changes between revisions

Regard whitespace Rev 15 → Rev 16

/VCL_DELPHIX_D6/DelphiX200.otares
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/VCL_DELPHIX_D6/DIB.pas
28,7 → 28,9
 
uses
Windows, SysUtils, Classes, Graphics, Controls,
{$IFDEF VER17UP} Types, UITypes,{$ENDIF}
{$IFDEF VER7UP} Types, {$ENDIF}
{$IFDEF VER9UP} GraphUtil, {$ENDIF}
{$IFDEF VER17UP} UITypes,{$ENDIF}
Math;
 
type
39,6 → 41,13
 
TPaletteEntries = array[0..255] of TPaletteEntry;
 
PBGRA = ^TBGRA;
TBGRA = packed record
B, G, R, A: Byte;
end;
TLinesA = array[0..0] of TBGRA;
PLinesA = ^TLinesA;
 
PBGR = ^TBGR;
TBGR = packed record
B, G, R: Byte;
55,16 → 64,16
{ End of type's }
 
PArrayBGR = ^TArrayBGR;
TArrayBGR = array[0..10000] of TBGR;
TArrayBGR = array[0..0] of TBGR;
 
PArrayByte = ^TArrayByte;
TArrayByte = array[0..10000] of Byte;
TArrayByte = array[0..0] of Byte;
 
PArrayWord = ^TArrayWord;
TArrayWord = array[0..10000] of Word;
TArrayWord = array[0..0] of Word;
 
PArrayDWord = ^TArrayDWord;
TArrayDWord = array[0..10000] of DWord;
TArrayDWord = array[0..0] of DWord;
 
{ TDIBPixelFormat }
 
214,6 → 223,10
procedure SetPalette(Value: HPalette); override;
procedure SetWidth(Value: Integer); override;
procedure WriteData(Stream: TStream); override;
{$IFDEF VER16UP}
function GetSupportsPartialTransparency: Boolean; override;
{$ENDIF}
function GetTransparent: Boolean; override;
public
ColorTable: TRGBQuads;
PixelFormat: TDIBPixelFormat;
239,7 → 252,7
procedure Blur(ABitCount: Integer; Radius: Integer);
procedure Greyscale(ABitCount: Integer);
procedure Mirror(MirrorX, MirrorY: Boolean);
procedure Negative;
procedure Negative; {$IFDEF VER9UP}inline;{$ENDIF}
 
{ Added New Special Effect }
procedure Spray(Amount: Integer);
306,7 → 319,7
procedure DoSmoothRotate(Src: TDIB; cx, cy: Integer; Angle: Extended);
procedure DoColorize(ForeColor, BackColor: TColor);
{Simple explosion spoke effect}
procedure DoNovaEffect(sr, sg, sb, cx, cy, radius,
procedure DoNovaEffect(const sr, sg, sb, cx, cy, radius,
nspokes, randomhue, randomspok, randgauss: Integer; onProgress: TProgressEvent);
 
{Simple Mandelbrot-set drawing}
379,11 → 392,11
//
// effect for special purpose
//
procedure FadeOut(DIB2: TDIB; Step: Byte);
procedure FadeOut(DIB2: TDIB; Step: Byte); {$IFDEF VER9UP} inline; {$ENDIF}
procedure DoZoom(DIB2: TDIB; ZoomRatio: Real);
procedure DoBlur(DIB2: TDIB);
procedure FadeIn(DIB2: TDIB; Step: Byte);
procedure FillDIB8(Color: Byte);
procedure FadeIn(DIB2: TDIB; Step: Byte); {$IFDEF VER9UP} inline; {$ENDIF}
procedure FillDIB8(Color: Byte); {$IFDEF VER9UP} inline; {$ENDIF}
procedure DoRotate(DIB1: TDIB; cX, cY, Angle: Integer);
procedure Distort(DIB1: TDIB; dt: TDistortType; cX, cY, Angle: Integer; Factor: Real);
function Ink(DIB: TDIB; const SprayInit: Boolean; const AmountSpray: Integer): Boolean;
565,11 → 578,46
 
procedure MakeDib(out DIB: TDIB; const iWidth, iHeight, iBitCount: Integer; iFillColor: TColor{$IFDEF VER4UP} = clBlack{$ENDIF}); {$IFDEF VER4UP}overload; {$ENDIF}
procedure{$IFDEF VER4UP}MakeDib{$ELSE}MakeDIB2{$ENDIF}(out DIB: TDIB; iBitmap: TBitmap); {$IFDEF VER4UP}overload; {$ENDIF}
procedure MakeDIB32MaskByColor(var D: TDIB; const MaskColor: TColor{$IFDEF VER4UP} = clWhite{$ENDIF});
 
function BGR(B, G, R: Byte): Integer; {$IFDEF VER9UP}inline;{$ENDIF}
 
implementation
 
uses DXConsts, {$IFDEF PNG_GRAPHICS}pngimage,{$ENDIF} jpeg;
 
function BGR(B, G, R: Byte): Integer; {$IFDEF VER9UP}inline;{$ENDIF}
begin
Result := (B shl 16) or (G shl 8) or R;
end;
 
procedure MakeDIB32MaskByColor(var D: TDIB; const MaskColor: TColor{$IFDEF VER4UP} = clWhite{$ENDIF});
type
PRGBA = ^TRGBA;
TRGBA = array[0..0] of Windows.TRGBQuad;
var
p: PRGBA;
y: Integer;
x: Integer;
B: TDIB;
begin
MakeDib(B, D.Width, D.Height, 32, $FFFFFF);
B.RGBChannel := D.RGBChannel;
if B.BitCount = 32 then
for Y := 0 to B.Height - 1 do
begin
p := B.ScanLine[Y];
for X := 0 to B.Width - 1 do
begin
if (p[X].rgbBlue = GetBValue(MaskColor)) and (p[X].rgbGreen = GetGValue(MaskColor)) and (p[X].rgbRed = GetRValue(MaskColor)) then
p[X].rgbReserved := 0
else
p[X].rgbReserved := $FF
end
end;
d.Assign(B);
end;
 
function GetScale(SourceWidth, SourceHeight, TargetWidth, TargetHeight: Integer): Single;
var
XScale, YScale: Single;
985,11 → 1033,13
biCompression := BI_BITFIELDS
else
begin
biCompression := 0; //none
if (FBitCount = 4) and (Compressed) then
biCompression := BI_RLE4
else if (FBitCount = 8) and (Compressed) then
biCompression := BI_RLE8
else
if FBitCount = 24 then
biCompression := BI_RGB;
end;
biSizeImage := FSize;
1712,8 → 1762,10
try
D := TDIB(FFreeList[0]);
FFreeList.Remove(D);
if (D <> nil) and (D.Height > 0) and (D.Width > 0) then //is really pointed to image?
D.Free;
except
// it is silent exception, but it can through outer (abstract) exception
end;
FFreeList.Free;
 
2133,7 → 2185,7
X, Y: Integer;
begin
oDIB := nil;
if not HasAlphaChannel then exit;
if not HasAlphaChannel then Exit;
oDIB := TDIB.Create;
oDIB.SetSize(Width, Height, 8);
for Y := 0 to Height - 1 do
2233,6 → 2285,13
Result := Pointer(Integer(FTopPBits) + Y * FNextLine);
end;
 
{$IFDEF VER16UP}
function TDIB.GetSupportsPartialTransparency: Boolean;
begin
Result := (FBitCount = 32) and HasAlphaChannel;
end;
{$ENDIF}
 
function TDIB.GetTopPBits: Pointer;
begin
Changing(True);
2249,6 → 2308,11
Result := FTopPBits;
end;
 
function TDIB.GetTransparent: Boolean;
begin
Result := (FBitCount = 32) and HasAlphaChannel;
end;
 
function TDIB.GetWidth: Integer;
begin
Result := FWidth;
2483,7 → 2547,9
bfSize := bfOffBits + FImage.FBitmapInfo^.bmiHeader.biSizeImage;
bfReserved1 := 0;
bfReserved2 := 0;
if (FBitCount = 32) and (FImage.FBitmapInfo^.bmiHeader.biCompression <> 0) then FImage.FBitmapInfo^.bmiHeader.biCompression := 0; //corrext RGB error to RGBA
end;
 
Stream.WriteBuffer(BF, SizeOf(TBitmapFileHeader));
 
WriteData(Stream);
3545,7 → 3611,7
EndProgress;
end;
end;
 
(*
procedure TDIB.Negative;
var
i, i2: Integer;
3603,7 → 3669,37
end;
end;
end;
*)
procedure TDIB.Negative;
var
i: Integer;
P: Pointer;
i2: Integer;
begin
if Empty then Exit;
 
if BitCount <= 8 then
begin
for i := 0 to 255 do
with ColorTable[i] do
begin
rgbRed := 255 - rgbRed;
rgbGreen := 255 - rgbGreen;
rgbBlue := 255 - rgbBlue;
end;
UpdatePalette;
end
else
begin
P := PBits;
i2 := Size;
for i := 0 to i2-1 do
begin
PByteArray(P)^[i] := not PByteArray(P)^[i];
end;
end;
end;
 
procedure TDIB.Greyscale(ABitCount: Integer);
var
YTblR, YTblG, YTblB: array[0..255] of Byte;
4763,7 → 4859,7
weight_x, weight_y: array[0..1] of Double;
total_red, total_green, total_blue: Double;
sli, slo: PLines;
D: Pointer;
//D: Pointer;
begin
Result := True;
case BitCount of
5282,9 → 5378,16
//--------------------------------------------------------------------------------------------------
 
function TDIB.GetAlphaChannel: TDIB;
var
I: Integer;
begin
RetAlphaChannel(Result);
if Result = nil then Exit;
 
if FFreeList.Count > 0 then
for I := 0 to FFreeList.Count - 1 do
if FFreeList[I] = Result then Exit;
 
FFreeList.Add(Result);
end;
 
5295,10 → 5398,26
end;
 
procedure TDIB.Fill(aColor: TColor);
var
p: PRGBA;
y: Integer;
x: Integer;
begin
Canvas.Brush.Color := aColor;
Canvas.FillRect(ClientRect);
if Self.BitCount = 32 then
begin
//fill alpha chanell too with $FF
for Y := 0 to Self.Height - 1 do
begin
p := Self.ScanLine[Y];
for X := 0 to Self.Width - 1 do
begin
p[X].rgbReserved := $FF
end;
end;
end;
end;
 
function TDIB.GetClientRect: TRect;
begin
5527,33 → 5646,70
procedure TDIB.CreateDIBFromBitmap(const Bitmap: TBitmap);
var
pf: Integer;
X, Y: Integer;
P: PLinesA;
q: PRGBA;
begin
if Bitmap.PixelFormat = pf32bit then pf := 32 else pf := 24;
SetSize(Bitmap.Width, Bitmap.Height, pf); {always >=24}
Canvas.Brush.Color := clWhite;
Canvas.FillRect(Bounds(0, 0, Width, Height));
Canvas.Draw(0, 0, Bitmap);
//Note. Transparent background from bitmap is not drawed when is alphalayer active
if (pf = 32) {and (Bitmap.AlphaFormat <> afIgnored)} then
begin
for y := 0 to Bitmap.Height-1 do
begin
p := Bitmap.ScanLine[y]; //BGRA
q := Self.ScanLine[y]; //ARGB
for x := 0 to Width-1 do //copy only alphachannel
q[x].rgbReserved := P[x].A;
end;
end;
end;
 
function TDIB.CreateBitmapFromDIB: TBitmap;
//var
// X, Y: Integer;
var
ach: Boolean;
X, Y: Integer;
P: PLinesA;
q: PRGBA;
begin
ach := False;
Result := TBitmap.Create;
if BitCount = 32 then
Result.PixelFormat := pf32bit
else if BitCount = 24 then
Result.PixelFormat := pf24bit
else if BitCount = 16 then
Result.PixelFormat := pf16bit
else if BitCount = 8 then
Result.PixelFormat := pf8bit
else Result.PixelFormat := pf24bit;
case BitCount of
32:
begin
Result.PixelFormat := pf32bit;
ach := HasAlphaChannel;
end;
24: Result.PixelFormat := pf24bit;
15: Result.PixelFormat := pf16bit;
8: Result.PixelFormat := pf8bit;
else
Result.PixelFormat := pf24bit;
end;
 
Result.Width := Width;
Result.Height := Height;
Result.Canvas.Draw(0, 0, Self);
// for Y := 0 to Height - 1 do
// for X := 0 to Width - 1 do
// Result.Canvas.Pixels[X, Y] := Canvas.Pixels[X, Y];
if (BitCount = 32) then
begin
if ach then
begin
{$IFDEF VER16UP}
Result.AlphaFormat := afDefined;
{$ENDIF}
for y := 0 to Height-1 do
begin
p := Result.ScanLine[y]; //BGRA
q := Self.ScanLine[y]; //ARGB
for x := 0 to Width-1 do //copy only alphachannel
P[x].A := q[x].rgbReserved;
end;
end;
end;
end;
 
procedure TDIB.DrawTo(SrcDIB: TDIB; X, Y, Width, Height,
SourceX, SourceY: Integer);
6504,7 → 6660,7
 
procedure TDIB.DoSmoothRotate(Src: TDIB; cx, cy: Integer; Angle: Extended);
var
Top, Bottom, Left, Right, eww, nsw, fx, fy, wx, wy: Extended;
Top, Bottom, eww, nsw, fx, fy: Extended;
cAngle, sAngle: Double;
xDiff, yDiff, ifx, ify, px, py, ix, iy, x, y: Integer;
nw, ne, sw, se: TBGR;
7726,7 → 7882,7
// -----------------------------------------------------------------------------
 
// Hermite filter
function HermiteFilter(Value: Single): Single;
function HermiteFilter(Value: Single): Single; {$IFDEF VER9UP}inline;{$ENDIF}
begin
// f(t) = 2|t|^3 - 3|t|^2 + 1, -1 <= t <= 1
if (Value < 0.0) then
7741,7 → 7897,7
// a.k.a. "Nearest Neighbour" filter
// anme: I have not been able to get acceptable
// results with this filter for subsampling.
function BoxFilter(Value: Single): Single;
function BoxFilter(Value: Single): Single; {$IFDEF VER9UP}inline;{$ENDIF}
begin
if (Value > -0.5) and (Value <= 0.5) then
Result := 1.0
7751,7 → 7907,7
 
// Triangle filter
// a.k.a. "Linear" or "Bilinear" filter
function TriangleFilter(Value: Single): Single;
function TriangleFilter(Value: Single): Single; {$IFDEF VER9UP}inline;{$ENDIF}
begin
if (Value < 0.0) then
Value := -Value;
7762,7 → 7918,7
end;
 
// Bell filter
function BellFilter(Value: Single): Single;
function BellFilter(Value: Single): Single; {$IFDEF VER9UP}inline;{$ENDIF}
begin
if (Value < 0.0) then
Value := -Value;
7779,7 → 7935,7
end;
 
// B-spline filter
function SplineFilter(Value: Single): Single;
function SplineFilter(Value: Single): Single; {$IFDEF VER9UP}inline;{$ENDIF}
var
tt: single;
begin
7802,7 → 7958,7
 
// Lanczos3 filter
function Lanczos3Filter(Value: Single): Single;
function SinC(Value: Single): Single;
function SinC(Value: Single): Single; {$IFDEF VER9UP}inline;{$ENDIF}
begin
if (Value <> 0.0) then
begin
7821,7 → 7977,7
Result := 0.0;
end;
 
function MitchellFilter(Value: Single): Single;
function MitchellFilter(Value: Single): Single; {$IFDEF VER9UP}inline;{$ENDIF}
const
B = (1.0 / 3.0);
C = (1.0 / 3.0);
7858,7 → 8014,7
// -----------------------------------------------------------------------------
type
// Contributor for a pixel
TContributor = record
TContributor = packed record
pixel: Integer; // Source pixel
weight: single; // Pixel weight
end;
7867,7 → 8023,7
PContributorList = ^TContributorList;
 
// List of source pixels contributing to a destination pixel
TCList = record
TCList = packed record
n: Integer;
p: PContributorList;
end;
7903,7 → 8059,7
{$IFDEF USE_SCANLINE}
SourceLine,
DestLine: PRGBList;
SourcePixel,
//SourcePixel,
DestPixel: PColorRGB;
Delta,
DestDelta: Integer;
7913,7 → 8069,7
DstWidth,
DstHeight: Integer;
 
function Color2RGB(Color: TColor): TColorRGB;
function Color2RGB(Color: TColor): TColorRGB; {$IFDEF VER9UP}inline;{$ENDIF}
begin
Result.r := Color and $000000FF;
Result.g := (Color and $0000FF00) shr 8;
7920,7 → 8076,7
Result.b := (Color and $00FF0000) shr 16;
end;
 
function RGB2Color(Color: TColorRGB): TColor;
function RGB2Color(Color: TColorRGB): TColor; {$IFDEF VER9UP}inline;{$ENDIF}
begin
Result := Color.r or (Color.g shl 8) or (Color.b shl 16);
end;
8228,7 → 8384,8
for j := 0 to contrib^[i].n - 1 do
begin
{$IFDEF USE_SCANLINE}
color := PColorRGB(Integer(SourceLine) + contrib^[i].p^[j].pixel * Delta)^;
//color := PColorRGB(PByte(SourceLine) + contrib^[i].p^[j].pixel * Delta)^;
Move(Pointer(Integer(SourceLine) + contrib^[i].p^[j].pixel * Delta)^, Color, SizeOf(Color));
{$ELSE}
color := Color2RGB(Work.Canvas.Pixels[k, contrib^[i].p^[j].pixel]);
{$ENDIF}
8259,7 → 8416,11
color.b := round(rgb.b);
{$IFDEF USE_SCANLINE}
DestPixel^ := color;
{$IFDEF WIN64}
inc(PByte(DestPixel), DestDelta);
{$ELSE}
inc(Integer(DestPixel), DestDelta);
{$ENDIF}
{$ELSE}
Dst.Canvas.Pixels[k, i] := RGB2Color(color);
{$ENDIF}
8400,7 → 8561,7
end;
 
{ procedure for special purpose }
 
(*
procedure TDIB.FadeOut(DIB2: TDIB; Step: Byte);
var
P1, P2: PByteArray;
8435,6 → 8596,22
POP ESI
end;
end;
*)
procedure TDIB.FadeOut(DIB2: TDIB; Step: Byte);
var
P1, P2: PByteArray;
W, H, i: Integer;
begin
P1 := ScanLine[DIB2.Height - 1];
P2 := DIB2.ScanLine[DIB2.Height - 1];
W := WidthBytes;
H := Height;
for i := 0 to W * H - 1 do
begin
if P1[i] < Step then P2[i] := P1[i]
else P2[i] := Step;
end;
end;
 
procedure TDIB.DoZoom(DIB2: TDIB; ZoomRatio: Real);
var
8501,7 → 8678,7
end;
end;
end;
 
(*
procedure TDIB.FadeIn(DIB2: TDIB; Step: Byte);
var
P1, P2: PByteArray;
8536,7 → 8713,24
POP ESI
end;
end;
*)
procedure TDIB.FadeIn(DIB2: TDIB; Step: Byte);
var
P1, P2: PByteArray;
W, H, i: Integer;
begin
P1 := ScanLine[DIB2.Height - 1];
P2 := DIB2.ScanLine[DIB2.Height - 1];
W := WidthBytes;
H := Height;
for i := 0 to W * H - 1 do
begin
if P1[i] > Step then P2[i] := P1[i]
else P2[i] := Step;
end;
end;
 
(*
procedure TDIB.FillDIB8(Color: Byte);
var
P: PByteArray;
8561,7 → 8755,21
POP ESI
end;
end;
*)
 
procedure TDIB.FillDIB8(Color: Byte);
var
P: PByteArray;
W, H, I: Integer;
begin
P := ScanLine[Height - 1];
W := WidthBytes;
H := Height;
for I := 0 to W * H - 1 do
P[I] := Color;
end;
 
 
procedure TDIB.DoRotate(DIB1: TDIB; cX, cY, Angle: Integer);
type
T3Byte = array[0..2] of Byte;
9186,7 → 9394,7
end;
end;
end;
 
(*
function TDIB.GetColorBetween(StartColor, EndColor: TColor; Pointvalue,
FromPoint, ToPoint: Extended): TColor;
var F: Extended; r1, r2, r3, g1, g2, g3, b1, b2, b3: Byte;
9251,7 → 9459,56
mov @result, EAX
end;
end;
*)
function TDIB.GetColorBetween(StartColor, EndColor: TColor; Pointvalue, FromPoint, ToPoint: Extended): TColor;
var
F: Extended;
r1, g1, b1, r2, g2, b2, r3, g3, b3: Byte;
 
function CalcColorBytes(const factor: Extended; const fb1, fb2: Byte): Byte; {$IFDEF VER9UP}inline;{$ENDIF}
begin
Result := fb1;
if fb1 < fb2 then Result := fb1 + Trunc(factor * (fb2 - fb1));
if fb1 > fb2 then Result := fb1 - Trunc(factor * (fb1 - fb2));
end;
 
procedure GetRGB(const AColor: TColor; var R, G, B: Byte); {$IFDEF VER9UP}inline;{$ENDIF}
begin
R := AColor and $FF;
G := (AColor shr 8) and $FF;
B := (AColor shr 16) and $FF;
end;
 
begin
if Pointvalue <= FromPoint then
begin
Result := StartColor;
Exit;
end;
if Pointvalue >= ToPoint then
begin
Result := EndColor;
Exit;
end;
 
F := (Pointvalue - FromPoint) / (ToPoint - FromPoint);
 
GetRGB(StartColor, r1, g1, b1);
// r1 := StartColor and $FF;
// g1 := (StartColor shr 8) and $FF;
// b1 := (StartColor shr 16) and $FF;
GetRGB(StartColor, r2, g2, b2);
// r2 := EndColor and $FF;
// g2 := (EndColor shr 8) and $FF;
// b2 := (EndColor shr 16) and $FF;
 
r3 := CalcColorBytes(F, r1, r2);
g3 := CalcColorBytes(F, g1, g2);
b3 := CalcColorBytes(F, b1, b2);
 
Result := (b3 shl 16) or (g3 shl 8) or r3;
end;
 
procedure TDIB.ColoredLine(const iStart, iEnd: TPoint; iColorStyle: TColorLineStyle;
iGradientFrom, iGradientTo: TColor; iPixelGeometry: TColorLinePixelGeometry; iRadius: Word);
var
9459,7 → 9716,7
end
end {Line};
 
procedure TDIB.DoNovaEffect(sr, sg, sb, cx, cy, radius,
procedure TDIB.DoNovaEffect(const sr, sg, sb, cx, cy, radius,
nspokes, randomhue, randomspok, randgauss: Integer; onProgress: TProgressEvent);
// Copyright (c) 2000 by Keith Murray (kmurray@hotfreeware.com)
// All rights reserved.
9468,9 → 9725,9
PByteArray = ^TByteArray;
TByteArray = array[0..32767] of Byte;
PDoubleArray = ^TDoubleArray;
TDoubleArray = array[0..32767] of Double;
TDoubleArray = array[0..0] of Double;
PIntegerArray = ^TIntegerArray;
TIntegerArray = array[0..32767] of Integer;
TIntegerArray = array[0..0] of Integer;
type
TProgressEvent = procedure(progress: Integer; message: string;
var cancel: Boolean) of object;
9478,7 → 9735,7
M_PI = 3.14159265358979323846;
RAND_MAX = 2147483647;
 
function Gauss: double;
function Gauss(const randgauss: Integer): double; {$IFDEF VER9UP}inline;{$ENDIF}
const magnitude = 6;
var
sum: double;
9490,7 → 9747,7
result := sum / magnitude;
end;
 
function Clamp(i, l, h: double): double; {$IFDEF VER9UP}inline;{$ENDIF}
function Clamp(const i, l, h: double): double; {$IFDEF VER9UP}inline;{$ENDIF}
begin
if i < l then
result := l
9501,7 → 9758,7
result := i;
end;
 
function IClamp(i, l, h: Integer): Integer; {$IFDEF VER9UP}inline;{$ENDIF}
function IClamp(const i, l, h: Integer): Integer; {$IFDEF VER9UP}inline;{$ENDIF}
begin
if i < l then
result := l
9509,8 → 9766,8
result := h
else result := i;
end;
 
procedure rgb_to_hsl(r, g, b: Double; var h, s, l: Double); {$IFDEF VER9UP}inline;{$ENDIF}
{$IFNDEF VER9UP}
procedure rgb_to_hsl(const r, g, b: Double; var h, s, l: Double); {$IFDEF VER9UP}inline;{$ENDIF}
{$IFNDEF VER4UP}
function Max(a, b: Double): Double;
begin
9622,7 → 9879,27
end;
end;
end;
{$ELSE}
procedure rgb_to_hsl(const r, g, b: Double; var h, s, l: Double); {$IFDEF VER9UP}inline;{$ENDIF}
var
h0, s0, l0: Word;
begin //procedure ColorRGBToHLS(clrRGB: TColorRef; var Hue, Luminance, Saturation: Word);
GraphUtil.ColorRGBToHLS(RGB(Trunc(r),Trunc(g),Trunc(b)), h0, s0, l0);
h := h0;
s := s0;
l := l0;
end;
 
procedure hsl_to_rgb(h, sl, l: Double; var r, g, b: Double); {$IFDEF VER9UP}inline;{$ENDIF}
var X: TColorRef;
begin //function ColorHLSToRGB(Hue, Luminance, Saturation: Word): TColorRef;
X := GraphUtil.ColorHLSToRGB(Trunc(h), Trunc(l), Trunc(sl));
r := GetRValue(X);
g := GetGValue(X);
b := GetBValue(X);
end;
{$ENDIF}
 
var
src_row, dest_row: PByte;
src, dest: PByteArray;
9629,8 → 9906,8
color, colors: array[0..3] of Integer;
SpokeColor: PIntegerArray;
spoke: PDoubleArray;
x1, y1, x2, y2, row, col, x, y, alpha, has_alpha, bpp, progress, max_progress, xc, yc, i, j: Integer;
u, v, l, l0, w, w1, c, nova_alpha, src_alpha, new_alpha, compl_ratio, ratio, r, g, b, h, s, lu, SpokeCol: Double;
x2, row, col, x, y, alpha, has_alpha, bpp, xc, yc, i, j: Integer;
u, v, l, l0, w, w1, c, nova_alpha, new_alpha, compl_ratio, ratio, r, g, b, h, s, lu, SpokeCol: Double;
dstDIB: TDIB;
begin
colors[0] := sr;
9641,15 → 9918,16
GetMem(spoke, NSpokes * sizeof(Double));
GetMem(spokecolor, NSpokes * sizeof(Integer) * 3);
dstDIB := TDIB.Create;
try
dstDIB.Assign(Self);
dstDIB.Canvas.Brush.Color := clBlack;
dstDIB.Canvas.FillRect(dstDIB.Canvas.ClipRect);
try
// R G B
rgb_to_hsl(colors[0] / 255.0, colors[1] / 255.0, colors[2] / 255.0, h, s, lu);
 
for i := 0 to NSpokes - 1 do
begin
spoke[i] := gauss;
spoke[i] := gauss(randgauss);
h := h + randomhue / 360.0 * ({Random(RAND_MAX)}RandomSpok / RAND_MAX - 0.5);
if h < 0 then
h := h + 1.0
9668,16 → 9946,18
has_alpha := 0;
alpha := bpp;
y := 0;
for row := 0 to Self.Height - 1 do begin
for row := 0 to Self.Height - 1 do
begin
src_row := Self.ScanLine[row];
dest_row := dstDIB.ScanLine[row];
src := Pointer(src_row);
dest := Pointer(dest_row);
x := 0;
for col := 0 to Self.Width - 1 do begin
for col := 0 to Self.Width - 1 do
begin
u := (x - xc) / radius;
v := (y - yc) / radius;
l := sqrt((u * u) + (v * v));
l := sqrt(sqr(u) + sqr(v));
c := (arctan2(u, v) / (2 * M_PI) + 0.51) * NSpokes;
i := floor(c);
c := c - i;
9698,14 → 9978,19
color[j] := Trunc(color[j] + 255 * Clamp(w1 * w, 0.0, 1.0));
dest[j] := IClamp(color[j], 0, 255);
end;
inc(Integer(src), bpp);
inc(Integer(dest), bpp);
inc(x);
{$IFDEF WIN64}
Inc(PByte(src), bpp);
Inc(PBYTE(dest), bpp);
{$ELSE}
Inc(Integer(src), bpp);
Inc(Integer(dest), bpp);
{$ENDIF}
Inc(x);
end;
inc(y);
Inc(y);
end;
Self.Assign(dstDIB);
finally
Self.Assign(dstDIB);
dstDIB.Free;
FreeMem(Spoke);
FreeMem(SpokeColor);
9766,10 → 10051,10
procedure TDIB.SephiaEffect(Depth: Integer{$IFDEF VER4UP} = 20{$ENDIF});
{Note: when depth parameter set to 0 will produce black and white picture only}
var
color, color2: longint;
color, color2: LongInt;
r, g, b, rr, gg: byte;
h, w: Integer;
p0: pbytearray;
p0: PByteArray;
x, y: Integer;
begin
if Self.BitCount = 24 then
/VCL_DELPHIX_D6/DXDIBEffectEdit.dfm
407,7 → 407,6
Top = 24
Width = 150
Height = 9
Min = 0
Max = 360
TabOrder = 10
OnMouseMove = RaHUEMouseMove
418,7 → 417,6
Width = 150
Height = 9
Min = 1
Max = 100
Position = 1
TabOrder = 11
OnMouseMove = CentrMouseMove
/VCL_DELPHIX_D6/DXDraws.pas
4578,6 → 4578,17
 
{additional pixel routines like turbopixels}
 
{
procedure TDirectDrawSurface.PutPixel8(x, y, color: Integer);
var
SurfacePtr: PByte;
PixelOffset: Integer;
begin
SurfacePtr := FLockSurfaceDesc.lpSurface;
PixelOffset := x + y * FLockSurfaceDesc.dwWidth;
SurfacePtr[PixelOffset] := color and $FF; // set pixel (lo byte of color)
end;}
 
procedure TDirectDrawSurface.PutPixel8(x, y, color: Integer); assembler;
{ on entry: self = eax, x = edx, y = ecx, color = ? }
asm
4593,6 → 4604,17
//ret // return
end;
 
{
procedure TDirectDrawSurface.PutPixel16(x, y, color: Integer);
var
pPixel: PWord;
begin
pPixel := PWord(Integer(TDirectDrawSurface(Self).FLockSurfaceDesc.lpSurface) +
x * 2 + y * TDirectDrawSurface(Self).FLockSurfaceDesc.lPitch);
pPixel^ := color;
end;
}
 
procedure TDirectDrawSurface.PutPixel16(x, y, color: Integer); assembler;
{ on entry: self = eax, x = edx, y = ecx, color = ? }
asm
4609,6 → 4631,24
//ret
end;
 
{
procedure TDirectDrawSurface.PutPixel24(x, y, color: Integer);
var
pPixel: PByte;
dwPitch: DWORD;
dwColor: DWORD;
begin
pPixel := PByte(TDirectDrawSurface(Self).FLockSurfaceDesc.lpSurface);
Inc(pPixel, x * 3);
dwPitch := TDirectDrawSurface(Self).FLockSurfaceDesc.lPitch;
Inc(pPixel, y * dwPitch);
dwColor := color and $FFFFFF;
pPixel[0] := Byte(dwColor);
pPixel[1] := Byte(dwColor shr 8);
pPixel[2] := Byte(dwColor shr 16);
end;
}
 
procedure TDirectDrawSurface.PutPixel24(x, y, color: Integer); assembler;
{ on entry: self = eax, x = edx, y = ecx, color = ? }
asm
4628,6 → 4668,18
//ret
end;
 
{
procedure TDirectDrawSurface.PutPixel24(x, y, color: Integer);
var
offset: Integer;
pixelColor: LongInt;
begin
offset := (y * TDirectDrawSurface(Self).FLockSurfaceDesc.lpitch) + (x * 3);
pixelColor := color and $FFFFFF;
Move(pixelColor, PByte(Integer(TDirectDrawSurface(Self).FLockSurfaceDesc.lpSurface) + offset)^, 3);
end;
}
 
procedure TDirectDrawSurface.PutPixel32(x, y, color: Integer); assembler;
{ on entry: self = eax, x = edx, y = ecx, color = ? }
asm
4656,6 → 4708,50
end;
end;
 
{
function TDirectDrawSurface.GetPixel8(x, y: Integer): Integer;
var
Pixel: Byte;
PixelPtr: PByte;
begin
PixelPtr := PByte(TDirectDrawSurface(Self).FLockSurfaceDesc.lpSurface + x + (y * TDirectDrawSurface(Self).FLockSurfaceDesc.lpitch));
Pixel := PixelPtr^;
Result := Pixel;
end;
 
function TDirectDrawSurface.GetPixel16(x, y: Integer): Integer;
var
Pixel: Word;
PixelPtr: PWord;
begin
PixelPtr := PWord(TDirectDrawSurface(Self).FLockSurfaceDesc.lpSurface + (x * 2) + (y * TDirectDrawSurface(Self).FLockSurfaceDesc.lpitch));
Pixel := PixelPtr^;
Result := Pixel;
end;
 
function TDirectDrawSurface.GetPixel24(x, y: Integer): Integer;
var
Pixel: array[0..2] of Byte;
PixelPtr: PByte;
begin
PixelPtr := PByte(TDirectDrawSurface(Self).FLockSurfaceDesc.lpSurface + (x * 3) + (y * TDirectDrawSurface(Self).FLockSurfaceDesc.lpitch));
Pixel[0] := PixelPtr^;
Pixel[1] := (PixelPtr+1)^;
Pixel[2] := (PixelPtr+2)^;
Result := Pixel[0] or (Pixel[1] shl 8) or (Pixel[2] shl 16);
end;
 
function TDirectDrawSurface.GetPixel32(x, y: Integer): Integer;
var
Pixel: Integer;
PixelPtr: PInteger;
begin
PixelPtr := PInteger(TDirectDrawSurface(Self).FLockSurfaceDesc.lpSurface + (x * 4) + (y * TDirectDrawSurface(Self).FLockSurfaceDesc.lpitch));
Pixel := PixelPtr^;
Result := Pixel;
end;
}
 
function TDirectDrawSurface.GetPixel8(x, y: Integer): Integer; assembler;
{ on entry: self = eax, x = edx, y = ecx, result = eax }
asm
4831,6 → 4927,18
(Alpha * (aB - cb) shr 8) + cb); // B alpha
end;
 
{
function Conv24to16(Color: Integer): Word;
var
r, g, b: Byte;
begin
r := (Color shr 16) and $FF;
g := (Color shr 8) and $FF;
b := Color and $FF;
Result := ((r shr 3) shl 11) or ((g shr 2) shl 5) or (b shr 3);
end;
}
 
function Conv24to16(Color: Integer): Word; register;
asm
mov ecx,eax
4939,6 → 5047,18
end;
end;
 
{
function Conv16to24(Color: Word): Integer;
var
r, g, b: Byte;
begin
r := (Color shr 11) and $1F;
g := (Color shr 5) and $3F;
b := Color and $1F;
Result := (r shl 19) or (g shl 10) or (b shl 3);
end;
}
 
function Conv16to24(Color: Word): Integer; register;
asm
xor edx,edx
/VCL_DELPHIX_D6/DXInput.pas
2143,7 → 2143,7
if FDirectInput=nil then
begin
try
TDirectInputCreate(DXLoadLibrary('DInput.dll', 'DirectInputCreateA'))
TDirectInputCreate(DXLoadLibrary('DInput.dll', {$IFDEF UNICODE}'DirectInputCreateW'{$ELSE}'DirectInputCreateA'{$ENDIF}))
(HInstance, DIRECTINPUT_VERSION, FDirectInput, nil);
except
FDirectInput := nil;
/VCL_DELPHIX_D6/DXMapEditProperties.pas
197,13 → 197,13
begin
W := FButton.Width;
if not FButton.Visible then W := 0;
SendMessage(Handle, EM_GETRECT, 0, LongInt(@Loc));
SendMessage(Handle, EM_GETRECT, 0, LPARAM(@Loc));
Loc.Bottom := ClientHeight + 1; {+1 is workaround for windows paint bug}
Loc.Right := ClientWidth - W - 2;
Loc.Top := 0;
Loc.Left := 0;
SendMessage(Handle, EM_SETRECTNP, 0, LongInt(@Loc));
SendMessage(Handle, EM_GETRECT, 0, LongInt(@Loc)); {debug}
SendMessage(Handle, EM_SETRECTNP, 0, LPARAM(@Loc));
SendMessage(Handle, EM_GETRECT, 0, LPARAM(@Loc)); {debug}
end;
 
procedure TEdit.WMSize(var Message: TWMSize);
/VCL_DELPHIX_D6/DXPictEdit.dfm
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/VCL_DELPHIX_D6/DXPictEdit.pas
1,10 → 1,10
unit DXPictEdit;
 
{$INCLUDE DelphiXcfg.inc}
interface
 
uses
Windows, SysUtils, Classes, Forms, Dialogs, Controls, StdCtrls, ExtCtrls,
ExtDlgs, DIB, Menus, Graphics, Clipbrd;
ExtDlgs, DIB, Menus, Graphics, Clipbrd {$IFDEF VER28UP}, PNGImage{$ENDIF};
 
type
 
/VCL_DELPHIX_D6/DXPlay.pas
4,10 → 4,6
 
{$INCLUDE DelphiXcfg.inc}
 
{$IFNDEF UseDirectPlay} // Daniel Marschall 12.04.2024 Added to avoid Windows showing "This app requires DirectPlay"
{$MESSAGE ERROR 'If you want to use DXPlay.pas, please enable the IFDEF UseDirectPlay in DelphiXcfg.inc'}
{$ENDIF}
 
uses
Windows, SysUtils, Classes, Forms, DXClass, ActiveX, DXETable,
{$IfDef StandardDX}
946,7 → 942,7
 
{ Thread start }
FRecvThread := TDXPlayRecvThread.Create(Self);
FRecvThread.Resume;
FRecvThread.{$IFDEF VER14UP}Start{$ELSE}Resume{$ENDIF};
except
Close;
raise;
/VCL_DELPHIX_D6/DXPlayFm.dfm
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/VCL_DELPHIX_D6/DXReg.pas
3,7 → 3,7
interface
 
{$I DelphiXcfg.inc}
 
{$WARNINGS OFF}
uses
Windows, SysUtils, Classes, Forms, Dialogs, Graphics, TypInfo,
Controls, StdCtrls, ExtCtrls, Buttons,
/VCL_DELPHIX_D6/DXRender.pas
8722,11 → 8722,16
end;
end;
 
function MulDiv64(a, b, c: Integer): Integer; assembler;
asm
mov eax, a
imul b
idiv c
//function MulDiv64(a, b, c: Integer): Integer; assembler;
//asm
// mov eax, a
// imul b
// idiv c
//end;
 
function MulDiv64(a, b, c: Integer): Integer; {$IFDEF VER9UP}inline;{$ENDIF}
begin
Result := a * b div c;
end;
 
function Max(B1, B2: Integer): Integer; {$IFDEF VER9UP}inline;{$ENDIF}
/VCL_DELPHIX_D6/DXSounds.pas
636,13 → 636,13
(lpGUID, lpDS, pUnkOuter);
end;
 
function DXDirectSoundEnumerate(lpCallback: TDSEnumCallbackA;
function DXDirectSoundEnumerate(lpCallback: {$IFDEF UNICODE}TDSEnumCallbackW{$ELSE}TDSEnumCallbackA{$ENDIF};
lpContext: Pointer): HRESULT;
type
TDirectSoundEnumerate = function(lpCallback: TDSEnumCallbackA;
TDirectSoundEnumerate = function(lpCallback: {$IFDEF UNICODE}TDSEnumCallbackW{$ELSE}TDSEnumCallbackA{$ENDIF};
lpContext: Pointer): HRESULT; stdcall;
begin
Result := TDirectSoundEnumerate(DXLoadLibrary('DSound.dll', 'DirectSoundEnumerateA'))
Result := TDirectSoundEnumerate(DXLoadLibrary('DSound.dll', {$IFDEF UNICODE}'DirectSoundEnumerateW'{$ELSE}'DirectSoundEnumerateA'{$ENDIF}))
(lpCallback, lpContext);
end;
 
667,7 → 667,7
lpContext: Pointer): HRESULT; stdcall;
begin
try
Result := TDirectSoundCaptureEnumerate(DXLoadLibrary('DSound.dll', 'DirectSoundCaptureEnumerateA'))
Result := TDirectSoundCaptureEnumerate(DXLoadLibrary('DSound.dll', {$IFDEF UNICODE}'DirectSoundCaptureEnumerateW'{$ELSE}'DirectSoundCaptureEnumerateA'{$ENDIF}))
(lpCallback, lpContext);
except
raise EDirectXError.Create(SSinceDirectX5);
2178,7 → 2178,7
if Assigned(FOnFilledBuffer) then
begin
FNotifyThread := TSoundCaptureStreamNotify.Create(Self);
FNotifyThread.Resume;
FNotifyThread.{$IFDEF VER14UP}Start{$ELSE}Resume{$ENDIF};
end;
end else
FOnFilledBuffer := Value;
2213,7 → 2213,7
if Assigned(FOnFilledBuffer) then
begin
FNotifyThread := TSoundCaptureStreamNotify.Create(Self);
FNotifyThread.Resume;
FNotifyThread.{$IFDEF VER14UP}Start{$ELSE}Resume{$ENDIF};
end;
except
Stop;
/VCL_DELPHIX_D6/DXSprite.pas
2334,9 → 2334,9
case Value of
stSprite: tmpSprite := TSprite.Create(TSpriteEngine(FOwnerItem));
stImageSprite: TImageSprite(tmpSprite) := TImageSprite.Create(TSpriteEngine(FOwnerItem));
{$WARN SYMBOL_DEPRECATED OFF} // Added by ViaThinkSoft [2015-12-07]
{$WARNINGS OFF}
stImageSpriteEx: TImageSpriteEx(tmpSprite) := TImageSpriteEx.Create(TSpriteEngine(FOwnerItem));
{$WARN SYMBOL_DEPRECATED ON} // Added by ViaThinkSoft [2015-12-07]
{$WARNINGS ON}
stBackgroundSprite: TBackgroundSprite(tmpSprite) := TBackgroundSprite.Create(TSpriteEngine(FOwnerItem));
else
tmpSprite := nil
/VCL_DELPHIX_D6/DXSpriteEdit.pas
14,6 → 14,7
}
interface
{$INCLUDE DelphiXcfg.inc}
{$WARNINGS OFF}
uses
Windows, SysUtils, Classes, Forms, Dialogs, Controls, ExtCtrls, StdCtrls,
Graphics, DXSprite, DXDraws;
/VCL_DELPHIX_D6/Dcu290/.gitkeep
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/VCL_DELPHIX_D6/DelphiX160.dproj
56,7 → 56,7
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<Icon_MainIcon>DelphiX160_Icon.ico</Icon_MainIcon>
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<DCC_Namespace>Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<VerInfo_Locale>1033</VerInfo_Locale>
<DCC_UsePackage>vclx;vcl;vclimg;VclSmp;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
/VCL_DELPHIX_D6/DelphiX160.res
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/VCL_DELPHIX_D6/DelphiX160_Icon.ico
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/VCL_DELPHIX_D6/DelphiX190.dproj
13,11 → 13,6
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='OSX32' and '$(Base)'=='true') or '$(Base_OSX32)'!=''">
<Base_OSX32>true</Base_OSX32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
51,7 → 46,6
<DCC_CBuilderOutput>All</DCC_CBuilderOutput>
<GenDll>true</GenDll>
<GenPackage>true</GenPackage>
<DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
<DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
<DCC_E>false</DCC_E>
<DCC_N>false</DCC_N>
59,9 → 53,6
<DCC_F>false</DCC_F>
<DCC_K>false</DCC_K>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_OSX32)'!=''">
<DCC_UsePackage>rtl;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_UsePackage>vcl;rtl;vclx;vclimg;VclSmp;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Locale>1033</VerInfo_Locale>
231,7 → 222,6
</Delphi.Personality>
<Deployment/>
<Platforms>
<Platform value="OSX32">False</Platform>
<Platform value="Win32">True</Platform>
<Platform value="Win64">False</Platform>
</Platforms>
/VCL_DELPHIX_D6/DelphiX200.dpk
1,7 → 1,6
package DelphiX200;
 
{$R *.res}
{$R *.otares}
{$R 'DelphiX.dcr'}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
/VCL_DELPHIX_D6/DelphiX200.dproj
33,6 → 33,12
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
<Cfg_2_Win32>true</Cfg_2_Win32>
<CfgParent>Cfg_2</CfgParent>
<Cfg_2>true</Cfg_2>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<VerInfo_Locale>1029</VerInfo_Locale>
<DCC_ImageBase>00400000</DCC_ImageBase>
68,6 → 74,9
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_Optimize>false</DCC_Optimize>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
/VCL_DELPHIX_D6/DelphiX220.dpk
5,7 → 5,7
{$DESCRIPTION 'DelphiX - DirectX components for Delphi XE8'}
{$DESIGNONLY}
{$IMPLICITBUILD ON}
 
{$define SXEXTENSIONS}
requires
vcl,
vclsmp,
/VCL_DELPHIX_D6/DelphiX220.dproj
33,6 → 33,12
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
<Cfg_2_Win32>true</Cfg_2_Win32>
<CfgParent>Cfg_2</CfgParent>
<Cfg_2>true</Cfg_2>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_N>false</DCC_N>
<SanitizedProjectName>DelphiX220</SanitizedProjectName>
51,7 → 57,7
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<VerInfo_Locale>1033</VerInfo_Locale>
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<DCC_Namespace>Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<DCC_UsePackage>rtl;vclimg;vcl;vclx;VclSmp;$(DCC_UsePackage)</DCC_UsePackage>
70,6 → 76,9
<DCC_Optimize>false</DCC_Optimize>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
133,6 → 142,17
<DCCReference Include="DXDIBEffectEdit.pas">
<Form>TDelphiXDIBEffectEditForm</Form>
</DCCReference>
<DCCReference Include="SXMedia\SXReg.pas"/>
<DCCReference Include="SXMedia\MpSndSys.pas"/>
<DCCReference Include="SXMedia\SXAbout.pas">
<Form>AboutBox</Form>
</DCCReference>
<DCCReference Include="SXMedia\SXEditor.pas"/>
<DCCReference Include="SXMedia\SXEngine.pas"/>
<DCCReference Include="SXMedia\SXModPlayer.pas"/>
<DCCReference Include="SXMedia\SXMovie.pas">
<Form>$ENDIF</Form>
</DCCReference>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
155,9 → 175,6
</Source>
</Delphi.Personality>
<Platforms>
<Platform value="Android">False</Platform>
<Platform value="iOSDevice32">False</Platform>
<Platform value="iOSSimulator">False</Platform>
<Platform value="Win32">True</Platform>
<Platform value="Win64">False</Platform>
</Platforms>
/VCL_DELPHIX_D6/DelphiX230.dpk
0,0 → 1,69
package DelphiX230;
 
{$R *.res}
{$R 'DelphiX.dcr'}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO OFF}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION OFF}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES ON}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DEFINE DEBUG}
{$ENDIF IMPLICITBUILDING}
{$DESCRIPTION 'DelphiX - DirectX components for Delphi 10 - Seattle'}
{$DESIGNONLY}
{$IMPLICITBUILD ON}
 
requires
vcl,
vclsmp,
designide,
rtl,
vclx,
vclimg;
 
contains
DIB in 'DIB.pas',
DXClass in 'DXClass.pas',
DXConsts in 'DXConsts.pas',
DXDraws in 'DXDraws.pas',
DXETable in 'DXETable.pas',
DXInput in 'DXInput.pas',
DXPlay in 'DXPlay.pas',
DXPlayFm in 'DXPlayFm.pas' {DelphiXDXPlayForm},
DXRender in 'DXRender.pas',
DXReg in 'DXReg.pas',
DXSounds in 'DXSounds.pas',
DXSprite in 'DXSprite.pas',
DXWave in 'DXWave.pas',
DXFFBEdit in 'DXFFBEdit.pas' {DelphiXFFEditForm},
DXGUIDEdit in 'DXGUIDEdit.pas' {DelphiXGUIDEditForm},
DXInptEdit in 'DXInptEdit.pas' {DelphiXInputEditForm},
DXPictEdit in 'DXPictEdit.pas' {DelphiXPictureEditForm},
DXWaveEdit in 'DXWaveEdit.pas' {DelphiXWaveEditForm},
TurboPixels in 'TurboPixels.pas',
DXSpriteEdit in 'DXSpriteEdit.pas' {DelphiXSpriteEditForm},
DXMidiEdit in 'DXMidiEdit.pas' {DelphiXMidiEditForm},
DXMapEditProperties in 'DXMapEditProperties.pas' {DelphiXMapEditPropertiesForm},
DXMapEdit in 'DXMapEdit.pas' {DelphiXMapEditForm},
DxPathEdit in 'DxPathEdit.pas' {DelphiXPathsEditForm},
DXGlueItEdit in 'DXGlueItEdit.pas' {DXGlueItEditor},
DXDIBEffectEdit in 'DXDIBEffectEdit.pas' {TDelphiXDIBEffectEditForm};
 
end.
/VCL_DELPHIX_D6/DelphiX230.dproj
0,0 → 1,178
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{123B3D31-C9BA-4AB0-973A-A9C1D76DEAEE}</ProjectGuid>
<MainSource>DelphiX230.dpk</MainSource>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<TargetedPlatforms>1</TargetedPlatforms>
<AppType>Package</AppType>
<FrameworkType>VCL</FrameworkType>
<ProjectVersion>18.1</ProjectVersion>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
<Base_Win64>true</Base_Win64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''">
<Cfg_1>true</Cfg_1>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
<Cfg_2>true</Cfg_2>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
<Cfg_2_Win32>true</Cfg_2_Win32>
<CfgParent>Cfg_2</CfgParent>
<Cfg_2>true</Cfg_2>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DesignOnlyPackage>true</DesignOnlyPackage>
<DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;System.Win;$(DCC_Namespace)</DCC_Namespace>
<SanitizedProjectName>DelphiX230</SanitizedProjectName>
<DCC_ImageBase>00400000</DCC_ImageBase>
<DCC_F>false</DCC_F>
<DCC_N>false</DCC_N>
<GenDll>true</GenDll>
<DCC_Description>DelphiX - DirectX components for Delphi 10 - Seattle</DCC_Description>
<DCC_K>false</DCC_K>
<VerInfo_Locale>1029</VerInfo_Locale>
<DCC_E>false</DCC_E>
<DCC_S>false</DCC_S>
<GenPackage>true</GenPackage>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_UsePackage>rtl;vclimg;vcl;vclx;VclSmp;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<VerInfo_Locale>1033</VerInfo_Locale>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win64)'!=''">
<DCC_UsePackage>rtl;vclimg;vcl;vclx;VclSmp;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
<DCC_DebugInformation>0</DCC_DebugInformation>
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_Optimize>false</DCC_Optimize>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="DelphiX.dcr"/>
<DCCReference Include="vcl.dcp"/>
<DCCReference Include="vclsmp.dcp"/>
<DCCReference Include="designide.dcp"/>
<DCCReference Include="rtl.dcp"/>
<DCCReference Include="vclx.dcp"/>
<DCCReference Include="vclimg.dcp"/>
<DCCReference Include="DIB.pas"/>
<DCCReference Include="DXClass.pas"/>
<DCCReference Include="DXConsts.pas"/>
<DCCReference Include="DXDraws.pas"/>
<DCCReference Include="DXETable.pas"/>
<DCCReference Include="DXInput.pas"/>
<DCCReference Include="DXPlay.pas"/>
<DCCReference Include="DXPlayFm.pas">
<Form>DelphiXDXPlayForm</Form>
</DCCReference>
<DCCReference Include="DXRender.pas"/>
<DCCReference Include="DXReg.pas"/>
<DCCReference Include="DXSounds.pas"/>
<DCCReference Include="DXSprite.pas"/>
<DCCReference Include="DXWave.pas"/>
<DCCReference Include="DXFFBEdit.pas">
<Form>DelphiXFFEditForm</Form>
</DCCReference>
<DCCReference Include="DXGUIDEdit.pas">
<Form>DelphiXGUIDEditForm</Form>
</DCCReference>
<DCCReference Include="DXInptEdit.pas">
<Form>DelphiXInputEditForm</Form>
</DCCReference>
<DCCReference Include="DXPictEdit.pas">
<Form>DelphiXPictureEditForm</Form>
</DCCReference>
<DCCReference Include="DXWaveEdit.pas">
<Form>DelphiXWaveEditForm</Form>
</DCCReference>
<DCCReference Include="TurboPixels.pas"/>
<DCCReference Include="DXSpriteEdit.pas">
<Form>DelphiXSpriteEditForm</Form>
</DCCReference>
<DCCReference Include="DXMidiEdit.pas">
<Form>DelphiXMidiEditForm</Form>
</DCCReference>
<DCCReference Include="DXMapEditProperties.pas">
<Form>DelphiXMapEditPropertiesForm</Form>
</DCCReference>
<DCCReference Include="DXMapEdit.pas">
<Form>DelphiXMapEditForm</Form>
</DCCReference>
<DCCReference Include="DxPathEdit.pas">
<Form>DelphiXPathsEditForm</Form>
</DCCReference>
<DCCReference Include="DXGlueItEdit.pas">
<Form>DXGlueItEditor</Form>
</DCCReference>
<DCCReference Include="DXDIBEffectEdit.pas">
<Form>TDelphiXDIBEffectEditForm</Form>
</DCCReference>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Release">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>Package</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality>
<Source>
<Source Name="MainSource">DelphiX230.dpk</Source>
</Source>
</Delphi.Personality>
<Platforms>
<Platform value="Android">False</Platform>
<Platform value="iOSDevice32">False</Platform>
<Platform value="iOSSimulator">False</Platform>
<Platform value="Win32">True</Platform>
<Platform value="Win64">False</Platform>
</Platforms>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
</Project>
/VCL_DELPHIX_D6/DelphiX230.res
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/VCL_DELPHIX_D6/DelphiX240.dpk
0,0 → 1,71
package DelphiX240;
 
{$R *.res}
{$R 'DelphiX.dcr'}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO OFF}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION OFF}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES ON}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DEFINE DEBUG}
{$ENDIF IMPLICITBUILDING}
{$DESCRIPTION 'DelphiX - DirectX components for Delphi 10.1 - Berlin'}
{$DESIGNONLY}
{$IMPLICITBUILD ON}
 
requires
vcl,
vclsmp,
designide,
rtl,
vclx,
vclimg;
 
contains
DIB in 'DIB.pas',
DXClass in 'DXClass.pas',
DXConsts in 'DXConsts.pas',
DXDraws in 'DXDraws.pas',
DXETable in 'DXETable.pas',
DXInput in 'DXInput.pas',
DXPlay in 'DXPlay.pas',
DXPlayFm in 'DXPlayFm.pas' {DelphiXDXPlayForm},
DXRender in 'DXRender.pas',
DXReg in 'DXReg.pas',
DXSounds in 'DXSounds.pas',
DXSprite in 'DXSprite.pas',
DXWave in 'DXWave.pas',
DXFFBEdit in 'DXFFBEdit.pas' {DelphiXFFEditForm},
DXGUIDEdit in 'DXGUIDEdit.pas' {DelphiXGUIDEditForm},
DXInptEdit in 'DXInptEdit.pas' {DelphiXInputEditForm},
DXPictEdit in 'DXPictEdit.pas' {DelphiXPictureEditForm},
DXWaveEdit in 'DXWaveEdit.pas' {DelphiXWaveEditForm},
TurboPixels in 'TurboPixels.pas',
DXSpriteEdit in 'DXSpriteEdit.pas' {DelphiXSpriteEditForm},
DXMidiEdit in 'DXMidiEdit.pas' {DelphiXMidiEditForm},
DXMapEditProperties in 'DXMapEditProperties.pas' {DelphiXMapEditPropertiesForm},
DXMapEdit in 'DXMapEdit.pas' {DelphiXMapEditForm},
DxPathEdit in 'DxPathEdit.pas' {DelphiXPathsEditForm},
DXGlueItEdit in 'DXGlueItEdit.pas' {DXGlueItEditor},
DXDIBEffectEdit in 'DXDIBEffectEdit.pas' {TDelphiXDIBEffectEditForm},
D3DUtils in 'D3DUtils.pas',
DirectX in 'DirectX.pas';
 
end.
/VCL_DELPHIX_D6/DelphiX240.dproj
0,0 → 1,516
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{ACFD8812-E511-42FF-885D-C0D89E119714}</ProjectGuid>
<MainSource>DelphiX240.dpk</MainSource>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<TargetedPlatforms>17</TargetedPlatforms>
<AppType>Package</AppType>
<FrameworkType>VCL</FrameworkType>
<ProjectVersion>18.1</ProjectVersion>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
<Base_Android>true</Base_Android>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''">
<Cfg_1>true</Cfg_1>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
<Cfg_2>true</Cfg_2>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Cfg_2)'=='true') or '$(Cfg_2_Android)'!=''">
<Cfg_2_Android>true</Cfg_2_Android>
<CfgParent>Cfg_2</CfgParent>
<Cfg_2>true</Cfg_2>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_N>false</DCC_N>
<DCC_ImageBase>00400000</DCC_ImageBase>
<GenPackage>true</GenPackage>
<DCC_F>false</DCC_F>
<DCC_K>false</DCC_K>
<SanitizedProjectName>DelphiX240</SanitizedProjectName>
<DCC_S>false</DCC_S>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
<DCC_Description>DelphiX - DirectX components for Delphi 10.1 - Berlin</DCC_Description>
<GenDll>true</GenDll>
<DCC_E>false</DCC_E>
<DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;System.Win;$(DCC_Namespace)</DCC_Namespace>
<VerInfo_Locale>1029</VerInfo_Locale>
<DesignOnlyPackage>true</DesignOnlyPackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Android)'!=''">
<DCC_UsePackage>rtl;$(DCC_UsePackage)</DCC_UsePackage>
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar</EnabledSysJars>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_UsePackage>vclimg;vcl;rtl;vclx;VclSmp;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_Namespace>Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<VerInfo_Locale>1033</VerInfo_Locale>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_DebugInformation>0</DCC_DebugInformation>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_Optimize>false</DCC_Optimize>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Android)'!=''">
<BT_BuildType>Debug</BT_BuildType>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="DelphiX.dcr"/>
<DCCReference Include="vcl.dcp"/>
<DCCReference Include="vclsmp.dcp"/>
<DCCReference Include="designide.dcp"/>
<DCCReference Include="rtl.dcp"/>
<DCCReference Include="vclx.dcp"/>
<DCCReference Include="vclimg.dcp"/>
<DCCReference Include="DIB.pas"/>
<DCCReference Include="DXClass.pas"/>
<DCCReference Include="DXConsts.pas"/>
<DCCReference Include="DXDraws.pas"/>
<DCCReference Include="DXETable.pas"/>
<DCCReference Include="DXInput.pas"/>
<DCCReference Include="DXPlay.pas"/>
<DCCReference Include="DXPlayFm.pas">
<Form>DelphiXDXPlayForm</Form>
</DCCReference>
<DCCReference Include="DXRender.pas"/>
<DCCReference Include="DXReg.pas"/>
<DCCReference Include="DXSounds.pas"/>
<DCCReference Include="DXSprite.pas"/>
<DCCReference Include="DXWave.pas"/>
<DCCReference Include="DXFFBEdit.pas">
<Form>DelphiXFFEditForm</Form>
</DCCReference>
<DCCReference Include="DXGUIDEdit.pas">
<Form>DelphiXGUIDEditForm</Form>
</DCCReference>
<DCCReference Include="DXInptEdit.pas">
<Form>DelphiXInputEditForm</Form>
</DCCReference>
<DCCReference Include="DXPictEdit.pas">
<Form>DelphiXPictureEditForm</Form>
</DCCReference>
<DCCReference Include="DXWaveEdit.pas">
<Form>DelphiXWaveEditForm</Form>
</DCCReference>
<DCCReference Include="TurboPixels.pas"/>
<DCCReference Include="DXSpriteEdit.pas">
<Form>DelphiXSpriteEditForm</Form>
</DCCReference>
<DCCReference Include="DXMidiEdit.pas">
<Form>DelphiXMidiEditForm</Form>
</DCCReference>
<DCCReference Include="DXMapEditProperties.pas">
<Form>DelphiXMapEditPropertiesForm</Form>
</DCCReference>
<DCCReference Include="DXMapEdit.pas">
<Form>DelphiXMapEditForm</Form>
</DCCReference>
<DCCReference Include="DxPathEdit.pas">
<Form>DelphiXPathsEditForm</Form>
</DCCReference>
<DCCReference Include="DXGlueItEdit.pas">
<Form>DXGlueItEditor</Form>
</DCCReference>
<DCCReference Include="DXDIBEffectEdit.pas">
<Form>TDelphiXDIBEffectEditForm</Form>
</DCCReference>
<DCCReference Include="D3DUtils.pas"/>
<DCCReference Include="DirectX.pas"/>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Release">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>Package</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality>
<Source>
<Source Name="MainSource">DelphiX240.dpk</Source>
</Source>
</Delphi.Personality>
<Platforms>
<Platform value="Android">True</Platform>
<Platform value="Win32">True</Platform>
</Platforms>
<Deployment Version="3">
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\18.0\Bpl\DelphiX240.bpl" Configuration="Debug" Class="ProjectOutput">
<Platform Name="Win32">
<RemoteName>DelphiX240.bpl</RemoteName>
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployClass Name="DependencyModule">
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.dll;.bpl</Extensions>
</Platform>
<Platform Name="OSX32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXResource">
<Platform Name="OSX32">
<RemoteDir>Contents\Resources</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidClassesDexFile">
<Platform Name="Android">
<RemoteDir>classes</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AdditionalDebugSymbols">
<Platform Name="Win32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>0</Operation>
</Platform>
<Platform Name="OSX32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch768">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon144">
<Platform Name="Android">
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidLibnativeMipsFile">
<Platform Name="Android">
<RemoteDir>library\lib\mips</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Required="true" Name="ProjectOutput">
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
<Platform Name="Linux64">
<Operation>1</Operation>
</Platform>
<Platform Name="OSX32">
<Operation>1</Operation>
</Platform>
<Platform Name="Android">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DependencyFramework">
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
<Platform Name="OSX32">
<Operation>1</Operation>
<Extensions>.framework</Extensions>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch640">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch1024">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSDeviceDebug">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch320">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSInfoPList"/>
<DeployClass Name="AndroidLibnativeArmeabiFile">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DebugSymbols">
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="OSX32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch1536">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage470">
<Platform Name="Android">
<RemoteDir>res\drawable-normal</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon96">
<Platform Name="Android">
<RemoteDir>res\drawable-xhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage640">
<Platform Name="Android">
<RemoteDir>res\drawable-large</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch640x1136">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSEntitlements"/>
<DeployClass Name="Android_LauncherIcon72">
<Platform Name="Android">
<RemoteDir>res\drawable-hdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidGDBServer">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXInfoPList"/>
<DeployClass Name="ProjectOSXEntitlements"/>
<DeployClass Name="iPad_Launch2048">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashStyles">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage426">
<Platform Name="Android">
<RemoteDir>res\drawable-small</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashImageDef">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSResource">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectAndroidManifest">
<Platform Name="Android">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_DefaultAppIcon">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="File">
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>0</Operation>
</Platform>
<Platform Name="OSX32">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>0</Operation>
</Platform>
<Platform Name="Android">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidServiceOutput">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Required="true" Name="DependencyPackage">
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.bpl</Extensions>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon48">
<Platform Name="Android">
<RemoteDir>res\drawable-mdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage960">
<Platform Name="Android">
<RemoteDir>res\drawable-xlarge</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon36">
<Platform Name="Android">
<RemoteDir>res\drawable-ldpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSDeviceResourceRules"/>
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
</Deployment>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
<Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
</Project>
/VCL_DELPHIX_D6/DelphiX240.res
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/VCL_DELPHIX_D6/DelphiX250.dpk
0,0 → 1,71
package DelphiX250;
 
{$R *.res}
{$R 'DelphiX.dcr'}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO OFF}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION OFF}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES ON}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DEFINE DEBUG}
{$ENDIF IMPLICITBUILDING}
{$DESCRIPTION 'DelphiX - DirectX components for Delphi 10.2 - Tokyo'}
{$DESIGNONLY}
{$IMPLICITBUILD ON}
 
requires
vcl,
vclsmp,
designide,
rtl,
vclx,
vclimg;
 
contains
DIB in 'DIB.pas',
DXClass in 'DXClass.pas',
DXConsts in 'DXConsts.pas',
DXDraws in 'DXDraws.pas',
DXETable in 'DXETable.pas',
DXInput in 'DXInput.pas',
DXPlay in 'DXPlay.pas',
DXPlayFm in 'DXPlayFm.pas' {DelphiXDXPlayForm},
DXRender in 'DXRender.pas',
DXReg in 'DXReg.pas',
DXSounds in 'DXSounds.pas',
DXSprite in 'DXSprite.pas',
DXWave in 'DXWave.pas',
DXFFBEdit in 'DXFFBEdit.pas' {DelphiXFFEditForm},
DXGUIDEdit in 'DXGUIDEdit.pas' {DelphiXGUIDEditForm},
DXInptEdit in 'DXInptEdit.pas' {DelphiXInputEditForm},
DXPictEdit in 'DXPictEdit.pas' {DelphiXPictureEditForm},
DXWaveEdit in 'DXWaveEdit.pas' {DelphiXWaveEditForm},
TurboPixels in 'TurboPixels.pas',
DXSpriteEdit in 'DXSpriteEdit.pas' {DelphiXSpriteEditForm},
DXMidiEdit in 'DXMidiEdit.pas' {DelphiXMidiEditForm},
DXMapEditProperties in 'DXMapEditProperties.pas' {DelphiXMapEditPropertiesForm},
DXMapEdit in 'DXMapEdit.pas' {DelphiXMapEditForm},
DxPathEdit in 'DxPathEdit.pas' {DelphiXPathsEditForm},
DXGlueItEdit in 'DXGlueItEdit.pas' {DXGlueItEditor},
DXDIBEffectEdit in 'DXDIBEffectEdit.pas' {TDelphiXDIBEffectEditForm},
D3DUtils in 'D3DUtils.pas',
DirectX in 'DirectX.pas';
 
end.
/VCL_DELPHIX_D6/DelphiX250.dproj
0,0 → 1,516
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{ACFD8812-E511-42FF-885D-C0D89E119714}</ProjectGuid>
<MainSource>DelphiX250.dpk</MainSource>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<TargetedPlatforms>18</TargetedPlatforms>
<AppType>Package</AppType>
<FrameworkType>VCL</FrameworkType>
<ProjectVersion>18.1</ProjectVersion>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
<Base_Android>true</Base_Android>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''">
<Cfg_1>true</Cfg_1>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
<Cfg_2>true</Cfg_2>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Cfg_2)'=='true') or '$(Cfg_2_Android)'!=''">
<Cfg_2_Android>true</Cfg_2_Android>
<CfgParent>Cfg_2</CfgParent>
<Cfg_2>true</Cfg_2>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_N>false</DCC_N>
<DCC_ImageBase>00400000</DCC_ImageBase>
<GenPackage>true</GenPackage>
<DCC_F>false</DCC_F>
<DCC_K>false</DCC_K>
<SanitizedProjectName>DelphiX250</SanitizedProjectName>
<DCC_S>false</DCC_S>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
<DCC_Description>DelphiX - DirectX components for Delphi 10.2 - Tokyo</DCC_Description>
<GenDll>true</GenDll>
<DCC_E>false</DCC_E>
<DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;System.Win;$(DCC_Namespace)</DCC_Namespace>
<VerInfo_Locale>1029</VerInfo_Locale>
<DesignOnlyPackage>true</DesignOnlyPackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Android)'!=''">
<DCC_UsePackage>rtl;$(DCC_UsePackage)</DCC_UsePackage>
<EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar</EnabledSysJars>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_UsePackage>vclimg;vcl;rtl;vclx;VclSmp;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_Namespace>Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<VerInfo_Locale>1033</VerInfo_Locale>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_DebugInformation>0</DCC_DebugInformation>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_Optimize>false</DCC_Optimize>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Android)'!=''">
<BT_BuildType>Debug</BT_BuildType>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="DelphiX.dcr"/>
<DCCReference Include="vcl.dcp"/>
<DCCReference Include="vclsmp.dcp"/>
<DCCReference Include="designide.dcp"/>
<DCCReference Include="rtl.dcp"/>
<DCCReference Include="vclx.dcp"/>
<DCCReference Include="vclimg.dcp"/>
<DCCReference Include="DIB.pas"/>
<DCCReference Include="DXClass.pas"/>
<DCCReference Include="DXConsts.pas"/>
<DCCReference Include="DXDraws.pas"/>
<DCCReference Include="DXETable.pas"/>
<DCCReference Include="DXInput.pas"/>
<DCCReference Include="DXPlay.pas"/>
<DCCReference Include="DXPlayFm.pas">
<Form>DelphiXDXPlayForm</Form>
</DCCReference>
<DCCReference Include="DXRender.pas"/>
<DCCReference Include="DXReg.pas"/>
<DCCReference Include="DXSounds.pas"/>
<DCCReference Include="DXSprite.pas"/>
<DCCReference Include="DXWave.pas"/>
<DCCReference Include="DXFFBEdit.pas">
<Form>DelphiXFFEditForm</Form>
</DCCReference>
<DCCReference Include="DXGUIDEdit.pas">
<Form>DelphiXGUIDEditForm</Form>
</DCCReference>
<DCCReference Include="DXInptEdit.pas">
<Form>DelphiXInputEditForm</Form>
</DCCReference>
<DCCReference Include="DXPictEdit.pas">
<Form>DelphiXPictureEditForm</Form>
</DCCReference>
<DCCReference Include="DXWaveEdit.pas">
<Form>DelphiXWaveEditForm</Form>
</DCCReference>
<DCCReference Include="TurboPixels.pas"/>
<DCCReference Include="DXSpriteEdit.pas">
<Form>DelphiXSpriteEditForm</Form>
</DCCReference>
<DCCReference Include="DXMidiEdit.pas">
<Form>DelphiXMidiEditForm</Form>
</DCCReference>
<DCCReference Include="DXMapEditProperties.pas">
<Form>DelphiXMapEditPropertiesForm</Form>
</DCCReference>
<DCCReference Include="DXMapEdit.pas">
<Form>DelphiXMapEditForm</Form>
</DCCReference>
<DCCReference Include="DxPathEdit.pas">
<Form>DelphiXPathsEditForm</Form>
</DCCReference>
<DCCReference Include="DXGlueItEdit.pas">
<Form>DXGlueItEditor</Form>
</DCCReference>
<DCCReference Include="DXDIBEffectEdit.pas">
<Form>TDelphiXDIBEffectEditForm</Form>
</DCCReference>
<DCCReference Include="D3DUtils.pas"/>
<DCCReference Include="DirectX.pas"/>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Release">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>Package</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality>
<Source>
<Source Name="MainSource">DelphiX250.dpk</Source>
</Source>
</Delphi.Personality>
<Platforms>
<Platform value="Android">True</Platform>
<Platform value="Win32">True</Platform>
</Platforms>
<Deployment Version="3">
<DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl\DelphiX250.bpl" Configuration="Debug" Class="ProjectOutput">
<Platform Name="Win32">
<RemoteName>DelphiX250.bpl</RemoteName>
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployClass Name="DependencyModule">
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.dll;.bpl</Extensions>
</Platform>
<Platform Name="OSX32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXResource">
<Platform Name="OSX32">
<RemoteDir>Contents\Resources</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidClassesDexFile">
<Platform Name="Android">
<RemoteDir>classes</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AdditionalDebugSymbols">
<Platform Name="Win32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>0</Operation>
</Platform>
<Platform Name="OSX32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch768">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon144">
<Platform Name="Android">
<RemoteDir>res\drawable-xxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidLibnativeMipsFile">
<Platform Name="Android">
<RemoteDir>library\lib\mips</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Required="true" Name="ProjectOutput">
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
<Platform Name="Linux64">
<Operation>1</Operation>
</Platform>
<Platform Name="OSX32">
<Operation>1</Operation>
</Platform>
<Platform Name="Android">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DependencyFramework">
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
<Platform Name="OSX32">
<Operation>1</Operation>
<Extensions>.framework</Extensions>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch640">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch1024">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSDeviceDebug">
<Platform Name="iOSDevice64">
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch320">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSInfoPList"/>
<DeployClass Name="AndroidLibnativeArmeabiFile">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DebugSymbols">
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="OSX32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPad_Launch1536">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage470">
<Platform Name="Android">
<RemoteDir>res\drawable-normal</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon96">
<Platform Name="Android">
<RemoteDir>res\drawable-xhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage640">
<Platform Name="Android">
<RemoteDir>res\drawable-large</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="iPhone_Launch640x1136">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSEntitlements"/>
<DeployClass Name="Android_LauncherIcon72">
<Platform Name="Android">
<RemoteDir>res\drawable-hdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidGDBServer">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXInfoPList"/>
<DeployClass Name="ProjectOSXEntitlements"/>
<DeployClass Name="iPad_Launch2048">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashStyles">
<Platform Name="Android">
<RemoteDir>res\values</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage426">
<Platform Name="Android">
<RemoteDir>res\drawable-small</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidSplashImageDef">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSResource">
<Platform Name="iOSSimulator">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectAndroidManifest">
<Platform Name="Android">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_DefaultAppIcon">
<Platform Name="Android">
<RemoteDir>res\drawable</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="File">
<Platform Name="Win32">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSDevice64">
<Operation>0</Operation>
</Platform>
<Platform Name="OSX32">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSDevice32">
<Operation>0</Operation>
</Platform>
<Platform Name="Android">
<Operation>0</Operation>
</Platform>
<Platform Name="iOSSimulator">
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidServiceOutput">
<Platform Name="Android">
<RemoteDir>library\lib\armeabi-v7a</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Required="true" Name="DependencyPackage">
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.bpl</Extensions>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon48">
<Platform Name="Android">
<RemoteDir>res\drawable-mdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_SplashImage960">
<Platform Name="Android">
<RemoteDir>res\drawable-xlarge</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon36">
<Platform Name="Android">
<RemoteDir>res\drawable-ldpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSDeviceResourceRules"/>
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
</Deployment>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
<Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
</Project>
/VCL_DELPHIX_D6/DelphiX250.res
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/VCL_DELPHIX_D6/DelphiX260.dpk
0,0 → 1,78
package DelphiX260;
 
{$R *.res}
{$R 'DelphiX.dcr'}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO OFF}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION OFF}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES ON}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DEFINE DEBUG}
{$ENDIF IMPLICITBUILDING}
{$DESCRIPTION 'DelphiX - DirectX components for Delphi 10.3 - Rio'}
{$DESIGNONLY}
{$IMPLICITBUILD ON}
 
requires
vcl,
vclsmp,
designide,
rtl,
vclx,
vclimg;
 
contains
DIB in 'DIB.pas',
DXClass in 'DXClass.pas',
DXConsts in 'DXConsts.pas',
DXDraws in 'DXDraws.pas',
DXETable in 'DXETable.pas',
DXInput in 'DXInput.pas',
DXPlay in 'DXPlay.pas',
DXPlayFm in 'DXPlayFm.pas' {DelphiXDXPlayForm},
DXRender in 'DXRender.pas',
DXReg in 'DXReg.pas',
DXSounds in 'DXSounds.pas',
DXSprite in 'DXSprite.pas',
DXWave in 'DXWave.pas',
DXFFBEdit in 'DXFFBEdit.pas' {DelphiXFFEditForm},
DXGUIDEdit in 'DXGUIDEdit.pas' {DelphiXGUIDEditForm},
DXInptEdit in 'DXInptEdit.pas' {DelphiXInputEditForm},
DXPictEdit in 'DXPictEdit.pas' {DelphiXPictureEditForm},
DXWaveEdit in 'DXWaveEdit.pas' {DelphiXWaveEditForm},
TurboPixels in 'TurboPixels.pas',
DXSpriteEdit in 'DXSpriteEdit.pas' {DelphiXSpriteEditForm},
DXMidiEdit in 'DXMidiEdit.pas' {DelphiXMidiEditForm},
DXMapEditProperties in 'DXMapEditProperties.pas' {DelphiXMapEditPropertiesForm},
DXMapEdit in 'DXMapEdit.pas' {DelphiXMapEditForm},
DxPathEdit in 'DxPathEdit.pas' {DelphiXPathsEditForm},
DXGlueItEdit in 'DXGlueItEdit.pas' {DXGlueItEditor},
DXDIBEffectEdit in 'DXDIBEffectEdit.pas' {TDelphiXDIBEffectEditForm},
D3DUtils in 'D3DUtils.pas',
DirectX in 'DirectX.pas',
SXReg in 'SXMedia\SXReg.pas',
MpSndSys in 'SXMedia\MpSndSys.pas',
SXAbout in 'SXMedia\SXAbout.pas' {AboutBox},
SXEditor in 'SXMedia\SXEditor.pas',
SXEngine in 'SXMedia\SXEngine.pas',
SXModPlayer in 'SXMedia\SXModPlayer.pas',
SXMovie in 'SXMedia\SXMovie.pas';
 
end.
/VCL_DELPHIX_D6/DelphiX260.dproj
0,0 → 1,191
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{0E782D8A-083C-4D0F-B835-50552DA343A3}</ProjectGuid>
<MainSource>DelphiX260.dpk</MainSource>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<TargetedPlatforms>1</TargetedPlatforms>
<AppType>Package</AppType>
<FrameworkType>VCL</FrameworkType>
<ProjectVersion>18.6</ProjectVersion>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
<Base_Win64>true</Base_Win64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''">
<Cfg_1>true</Cfg_1>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
<Cfg_2>true</Cfg_2>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
<Cfg_2_Win32>true</Cfg_2_Win32>
<CfgParent>Cfg_2</CfgParent>
<Cfg_2>true</Cfg_2>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_E>false</DCC_E>
<DCC_F>false</DCC_F>
<DCC_K>false</DCC_K>
<DCC_N>false</DCC_N>
<DCC_S>false</DCC_S>
<DCC_ImageBase>00400000</DCC_ImageBase>
<GenDll>true</GenDll>
<GenPackage>true</GenPackage>
<SanitizedProjectName>DelphiX260</SanitizedProjectName>
<DCC_Description>DelphiX - DirectX components for Delphi 10.2 - Tokyo</DCC_Description>
<DesignOnlyPackage>true</DesignOnlyPackage>
<DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;DUnitX.Loggers.GUI;Winapi;System.Win;$(DCC_Namespace)</DCC_Namespace>
<VerInfo_Locale>1029</VerInfo_Locale>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_Namespace>Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName)</VerInfo_Keys>
<VerInfo_Locale>1033</VerInfo_Locale>
<DCC_UsePackage>vclimg;vcl;rtl;vclx;VclSmp;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win64)'!=''">
<DCC_UsePackage>vclimg;vcl;rtl;vclx;VclSmp;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
<DCC_DebugInformation>0</DCC_DebugInformation>
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
<DCC_Optimize>false</DCC_Optimize>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName)</VerInfo_Keys>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="DelphiX.dcr"/>
<DCCReference Include="vcl.dcp"/>
<DCCReference Include="vclsmp.dcp"/>
<DCCReference Include="designide.dcp"/>
<DCCReference Include="rtl.dcp"/>
<DCCReference Include="vclx.dcp"/>
<DCCReference Include="vclimg.dcp"/>
<DCCReference Include="DIB.pas"/>
<DCCReference Include="DXClass.pas"/>
<DCCReference Include="DXConsts.pas"/>
<DCCReference Include="DXDraws.pas"/>
<DCCReference Include="DXETable.pas"/>
<DCCReference Include="DXInput.pas"/>
<DCCReference Include="DXPlay.pas"/>
<DCCReference Include="DXPlayFm.pas">
<Form>DelphiXDXPlayForm</Form>
</DCCReference>
<DCCReference Include="DXRender.pas"/>
<DCCReference Include="DXReg.pas"/>
<DCCReference Include="DXSounds.pas"/>
<DCCReference Include="DXSprite.pas"/>
<DCCReference Include="DXWave.pas"/>
<DCCReference Include="DXFFBEdit.pas">
<Form>DelphiXFFEditForm</Form>
</DCCReference>
<DCCReference Include="DXGUIDEdit.pas">
<Form>DelphiXGUIDEditForm</Form>
</DCCReference>
<DCCReference Include="DXInptEdit.pas">
<Form>DelphiXInputEditForm</Form>
</DCCReference>
<DCCReference Include="DXPictEdit.pas">
<Form>DelphiXPictureEditForm</Form>
</DCCReference>
<DCCReference Include="DXWaveEdit.pas">
<Form>DelphiXWaveEditForm</Form>
</DCCReference>
<DCCReference Include="TurboPixels.pas"/>
<DCCReference Include="DXSpriteEdit.pas">
<Form>DelphiXSpriteEditForm</Form>
</DCCReference>
<DCCReference Include="DXMidiEdit.pas">
<Form>DelphiXMidiEditForm</Form>
</DCCReference>
<DCCReference Include="DXMapEditProperties.pas">
<Form>DelphiXMapEditPropertiesForm</Form>
</DCCReference>
<DCCReference Include="DXMapEdit.pas">
<Form>DelphiXMapEditForm</Form>
</DCCReference>
<DCCReference Include="DxPathEdit.pas">
<Form>DelphiXPathsEditForm</Form>
</DCCReference>
<DCCReference Include="DXGlueItEdit.pas">
<Form>DXGlueItEditor</Form>
</DCCReference>
<DCCReference Include="DXDIBEffectEdit.pas">
<Form>TDelphiXDIBEffectEditForm</Form>
</DCCReference>
<DCCReference Include="D3DUtils.pas"/>
<DCCReference Include="DirectX.pas">
<Form>$ENDIF</Form>
</DCCReference>
<DCCReference Include="SXMedia\SXReg.pas"/>
<DCCReference Include="SXMedia\MpSndSys.pas"/>
<DCCReference Include="SXMedia\SXAbout.pas">
<Form>AboutBox</Form>
</DCCReference>
<DCCReference Include="SXMedia\SXEditor.pas"/>
<DCCReference Include="SXMedia\SXEngine.pas"/>
<DCCReference Include="SXMedia\SXModPlayer.pas"/>
<DCCReference Include="SXMedia\SXMovie.pas">
<Form>$ENDIF</Form>
</DCCReference>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Release">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>Package</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality>
<Source>
<Source Name="MainSource">DelphiX260.dpk</Source>
</Source>
</Delphi.Personality>
<Platforms>
<Platform value="Win32">True</Platform>
<Platform value="Win64">False</Platform>
</Platforms>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
</Project>
/VCL_DELPHIX_D6/DelphiX260.res
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/VCL_DELPHIX_D6/DelphiX270.dpk
0,0 → 1,78
package DelphiX270;
 
{$R *.res}
{$R 'DelphiX.dcr'}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO OFF}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION OFF}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES ON}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DEFINE DEBUG}
{$ENDIF IMPLICITBUILDING}
{$DESCRIPTION 'DelphiX - DirectX components for Delphi 10.4 - Sydney'}
{$DESIGNONLY}
{$IMPLICITBUILD ON}
 
requires
vcl,
vclsmp,
designide,
rtl,
vclx,
vclimg;
 
contains
DIB in 'DIB.pas',
DXClass in 'DXClass.pas',
DXConsts in 'DXConsts.pas',
DXDraws in 'DXDraws.pas',
DXETable in 'DXETable.pas',
DXInput in 'DXInput.pas',
DXPlay in 'DXPlay.pas',
DXPlayFm in 'DXPlayFm.pas' {DelphiXDXPlayForm},
DXRender in 'DXRender.pas',
DXReg in 'DXReg.pas',
DXSounds in 'DXSounds.pas',
DXSprite in 'DXSprite.pas',
DXWave in 'DXWave.pas',
DXFFBEdit in 'DXFFBEdit.pas' {DelphiXFFEditForm},
DXGUIDEdit in 'DXGUIDEdit.pas' {DelphiXGUIDEditForm},
DXInptEdit in 'DXInptEdit.pas' {DelphiXInputEditForm},
DXPictEdit in 'DXPictEdit.pas' {DelphiXPictureEditForm},
DXWaveEdit in 'DXWaveEdit.pas' {DelphiXWaveEditForm},
TurboPixels in 'TurboPixels.pas',
DXSpriteEdit in 'DXSpriteEdit.pas' {DelphiXSpriteEditForm},
DXMidiEdit in 'DXMidiEdit.pas' {DelphiXMidiEditForm},
DXMapEditProperties in 'DXMapEditProperties.pas' {DelphiXMapEditPropertiesForm},
DXMapEdit in 'DXMapEdit.pas' {DelphiXMapEditForm},
DxPathEdit in 'DxPathEdit.pas' {DelphiXPathsEditForm},
DXGlueItEdit in 'DXGlueItEdit.pas' {DXGlueItEditor},
DXDIBEffectEdit in 'DXDIBEffectEdit.pas' {TDelphiXDIBEffectEditForm},
D3DUtils in 'D3DUtils.pas',
DirectX in 'DirectX.pas',
SXReg in 'SXMedia\SXReg.pas',
MpSndSys in 'SXMedia\MpSndSys.pas',
SXAbout in 'SXMedia\SXAbout.pas' {AboutBox},
SXEditor in 'SXMedia\SXEditor.pas',
SXEngine in 'SXMedia\SXEngine.pas',
SXModPlayer in 'SXMedia\SXModPlayer.pas',
SXMovie in 'SXMedia\SXMovie.pas';
 
end.
/VCL_DELPHIX_D6/DelphiX270.dproj
0,0 → 1,178
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{84EABC6F-D69F-4837-9DC3-7A7FE610DA69}</ProjectGuid>
<MainSource>DelphiX270.dpk</MainSource>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<TargetedPlatforms>1</TargetedPlatforms>
<AppType>Package</AppType>
<FrameworkType>VCL</FrameworkType>
<ProjectVersion>19.2</ProjectVersion>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
<Base_Win64>true</Base_Win64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''">
<Cfg_1>true</Cfg_1>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
<Cfg_2>true</Cfg_2>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_E>false</DCC_E>
<DCC_F>false</DCC_F>
<DCC_K>false</DCC_K>
<DCC_N>false</DCC_N>
<DCC_S>false</DCC_S>
<DCC_ImageBase>00400000</DCC_ImageBase>
<GenDll>true</GenDll>
<GenPackage>true</GenPackage>
<SanitizedProjectName>DelphiX270</SanitizedProjectName>
<DCC_Description>DelphiX - DirectX components for Delphi 10.4 - Sydney</DCC_Description>
<DesignOnlyPackage>true</DesignOnlyPackage>
<DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;DUnitX.Loggers.GUI;Winapi;System.Win;$(DCC_Namespace)</DCC_Namespace>
<VerInfo_Locale>1029</VerInfo_Locale>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_Namespace>Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName)</VerInfo_Keys>
<VerInfo_Locale>1033</VerInfo_Locale>
<DCC_UsePackage>vclimg;vcl;rtl;vclx;VclSmp;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win64)'!=''">
<DCC_UsePackage>vclimg;vcl;rtl;vclx;VclSmp;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
<DCC_DebugInformation>0</DCC_DebugInformation>
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
<DCC_Optimize>false</DCC_Optimize>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="DelphiX.dcr"/>
<DCCReference Include="vcl.dcp"/>
<DCCReference Include="vclsmp.dcp"/>
<DCCReference Include="designide.dcp"/>
<DCCReference Include="rtl.dcp"/>
<DCCReference Include="vclx.dcp"/>
<DCCReference Include="vclimg.dcp"/>
<DCCReference Include="DIB.pas"/>
<DCCReference Include="DXClass.pas"/>
<DCCReference Include="DXConsts.pas"/>
<DCCReference Include="DXDraws.pas"/>
<DCCReference Include="DXETable.pas"/>
<DCCReference Include="DXInput.pas"/>
<DCCReference Include="DXPlay.pas"/>
<DCCReference Include="DXPlayFm.pas">
<Form>DelphiXDXPlayForm</Form>
</DCCReference>
<DCCReference Include="DXRender.pas"/>
<DCCReference Include="DXReg.pas"/>
<DCCReference Include="DXSounds.pas"/>
<DCCReference Include="DXSprite.pas"/>
<DCCReference Include="DXWave.pas"/>
<DCCReference Include="DXFFBEdit.pas">
<Form>DelphiXFFEditForm</Form>
</DCCReference>
<DCCReference Include="DXGUIDEdit.pas">
<Form>DelphiXGUIDEditForm</Form>
</DCCReference>
<DCCReference Include="DXInptEdit.pas">
<Form>DelphiXInputEditForm</Form>
</DCCReference>
<DCCReference Include="DXPictEdit.pas">
<Form>DelphiXPictureEditForm</Form>
</DCCReference>
<DCCReference Include="DXWaveEdit.pas">
<Form>DelphiXWaveEditForm</Form>
</DCCReference>
<DCCReference Include="TurboPixels.pas"/>
<DCCReference Include="DXSpriteEdit.pas">
<Form>DelphiXSpriteEditForm</Form>
</DCCReference>
<DCCReference Include="DXMidiEdit.pas">
<Form>DelphiXMidiEditForm</Form>
</DCCReference>
<DCCReference Include="DXMapEditProperties.pas">
<Form>DelphiXMapEditPropertiesForm</Form>
</DCCReference>
<DCCReference Include="DXMapEdit.pas">
<Form>DelphiXMapEditForm</Form>
</DCCReference>
<DCCReference Include="DxPathEdit.pas">
<Form>DelphiXPathsEditForm</Form>
</DCCReference>
<DCCReference Include="DXGlueItEdit.pas">
<Form>DXGlueItEditor</Form>
</DCCReference>
<DCCReference Include="DXDIBEffectEdit.pas">
<Form>TDelphiXDIBEffectEditForm</Form>
</DCCReference>
<DCCReference Include="D3DUtils.pas"/>
<DCCReference Include="DirectX.pas"/>
<DCCReference Include="SXMedia\SXReg.pas"/>
<DCCReference Include="SXMedia\MpSndSys.pas"/>
<DCCReference Include="SXMedia\SXAbout.pas">
<Form>AboutBox</Form>
</DCCReference>
<DCCReference Include="SXMedia\SXEditor.pas"/>
<DCCReference Include="SXMedia\SXEngine.pas"/>
<DCCReference Include="SXMedia\SXModPlayer.pas"/>
<DCCReference Include="SXMedia\SXMovie.pas"/>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Release">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>Package</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality>
<Source>
<Source Name="MainSource">DelphiX270.dpk</Source>
</Source>
</Delphi.Personality>
<Platforms>
<Platform value="Win32">True</Platform>
<Platform value="Win64">False</Platform>
</Platforms>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
</Project>
/VCL_DELPHIX_D6/DelphiX270.res
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/VCL_DELPHIX_D6/DelphiX280.dpk
0,0 → 1,78
package DelphiX280;
 
{$R *.res}
{$R 'DelphiX.dcr'}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO OFF}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION OFF}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES ON}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DEFINE DEBUG}
{$ENDIF IMPLICITBUILDING}
{$DESCRIPTION 'DelphiX - DirectX components for Delphi 11 - Alexandria'}
{$DESIGNONLY}
{$IMPLICITBUILD ON}
 
requires
vcl,
vclsmp,
designide,
rtl,
vclx,
vclimg;
 
contains
DIB in 'DIB.pas',
DXClass in 'DXClass.pas',
DXConsts in 'DXConsts.pas',
DXDraws in 'DXDraws.pas',
DXETable in 'DXETable.pas',
DXInput in 'DXInput.pas',
DXPlay in 'DXPlay.pas',
DXPlayFm in 'DXPlayFm.pas' {DelphiXDXPlayForm},
DXRender in 'DXRender.pas',
DXReg in 'DXReg.pas',
DXSounds in 'DXSounds.pas',
DXSprite in 'DXSprite.pas',
DXWave in 'DXWave.pas',
DXFFBEdit in 'DXFFBEdit.pas' {DelphiXFFEditForm},
DXGUIDEdit in 'DXGUIDEdit.pas' {DelphiXGUIDEditForm},
DXInptEdit in 'DXInptEdit.pas' {DelphiXInputEditForm},
DXPictEdit in 'DXPictEdit.pas' {DelphiXPictureEditForm},
DXWaveEdit in 'DXWaveEdit.pas' {DelphiXWaveEditForm},
TurboPixels in 'TurboPixels.pas',
DXSpriteEdit in 'DXSpriteEdit.pas' {DelphiXSpriteEditForm},
DXMidiEdit in 'DXMidiEdit.pas' {DelphiXMidiEditForm},
DXMapEditProperties in 'DXMapEditProperties.pas' {DelphiXMapEditPropertiesForm},
DXMapEdit in 'DXMapEdit.pas' {DelphiXMapEditForm},
DxPathEdit in 'DxPathEdit.pas' {DelphiXPathsEditForm},
DXGlueItEdit in 'DXGlueItEdit.pas' {DXGlueItEditor},
DXDIBEffectEdit in 'DXDIBEffectEdit.pas' {TDelphiXDIBEffectEditForm},
D3DUtils in 'D3DUtils.pas',
DirectX in 'DirectX.pas',
SXReg in 'SXMedia\SXReg.pas',
MpSndSys in 'SXMedia\MpSndSys.pas',
SXAbout in 'SXMedia\SXAbout.pas' {AboutBox},
SXEditor in 'SXMedia\SXEditor.pas',
SXEngine in 'SXMedia\SXEngine.pas',
SXModPlayer in 'SXMedia\SXModPlayer.pas',
SXMovie in 'SXMedia\SXMovie.pas';
 
end.
/VCL_DELPHIX_D6/DelphiX280.dproj
0,0 → 1,189
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{988289D9-603A-42AE-84FD-B9B278FC1799}</ProjectGuid>
<MainSource>DelphiX280.dpk</MainSource>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<TargetedPlatforms>1</TargetedPlatforms>
<AppType>Package</AppType>
<FrameworkType>VCL</FrameworkType>
<ProjectVersion>19.5</ProjectVersion>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
<Base_Win64>true</Base_Win64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''">
<Cfg_1>true</Cfg_1>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
<Cfg_2>true</Cfg_2>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
<Cfg_2_Win32>true</Cfg_2_Win32>
<CfgParent>Cfg_2</CfgParent>
<Cfg_2>true</Cfg_2>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_E>false</DCC_E>
<DCC_F>false</DCC_F>
<DCC_K>false</DCC_K>
<DCC_N>false</DCC_N>
<DCC_S>false</DCC_S>
<DCC_ImageBase>00400000</DCC_ImageBase>
<GenDll>true</GenDll>
<GenPackage>true</GenPackage>
<SanitizedProjectName>DelphiX280</SanitizedProjectName>
<DCC_Description>DelphiX - DirectX components for Delphi 11 - Alexandria</DCC_Description>
<DesignOnlyPackage>true</DesignOnlyPackage>
<DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;DUnitX.Loggers.GUI;Winapi;System.Win;$(DCC_Namespace)</DCC_Namespace>
<VerInfo_Locale>1029</VerInfo_Locale>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_Namespace>Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName)</VerInfo_Keys>
<VerInfo_Locale>1033</VerInfo_Locale>
<DCC_UsePackage>vclimg;vcl;rtl;vclx;VclSmp;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win64)'!=''">
<DCC_UsePackage>vclimg;vcl;rtl;vclx;VclSmp;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
<DCC_DebugInformation>0</DCC_DebugInformation>
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
<DCC_Optimize>false</DCC_Optimize>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_RangeChecking>true</DCC_RangeChecking>
<DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName)</VerInfo_Keys>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="DelphiX.dcr"/>
<DCCReference Include="vcl.dcp"/>
<DCCReference Include="vclsmp.dcp"/>
<DCCReference Include="designide.dcp"/>
<DCCReference Include="rtl.dcp"/>
<DCCReference Include="vclx.dcp"/>
<DCCReference Include="vclimg.dcp"/>
<DCCReference Include="DIB.pas"/>
<DCCReference Include="DXClass.pas"/>
<DCCReference Include="DXConsts.pas"/>
<DCCReference Include="DXDraws.pas"/>
<DCCReference Include="DXETable.pas"/>
<DCCReference Include="DXInput.pas"/>
<DCCReference Include="DXPlay.pas"/>
<DCCReference Include="DXPlayFm.pas">
<Form>DelphiXDXPlayForm</Form>
</DCCReference>
<DCCReference Include="DXRender.pas"/>
<DCCReference Include="DXReg.pas"/>
<DCCReference Include="DXSounds.pas"/>
<DCCReference Include="DXSprite.pas"/>
<DCCReference Include="DXWave.pas"/>
<DCCReference Include="DXFFBEdit.pas">
<Form>DelphiXFFEditForm</Form>
</DCCReference>
<DCCReference Include="DXGUIDEdit.pas">
<Form>DelphiXGUIDEditForm</Form>
</DCCReference>
<DCCReference Include="DXInptEdit.pas">
<Form>DelphiXInputEditForm</Form>
</DCCReference>
<DCCReference Include="DXPictEdit.pas">
<Form>DelphiXPictureEditForm</Form>
</DCCReference>
<DCCReference Include="DXWaveEdit.pas">
<Form>DelphiXWaveEditForm</Form>
</DCCReference>
<DCCReference Include="TurboPixels.pas"/>
<DCCReference Include="DXSpriteEdit.pas">
<Form>DelphiXSpriteEditForm</Form>
</DCCReference>
<DCCReference Include="DXMidiEdit.pas">
<Form>DelphiXMidiEditForm</Form>
</DCCReference>
<DCCReference Include="DXMapEditProperties.pas">
<Form>DelphiXMapEditPropertiesForm</Form>
</DCCReference>
<DCCReference Include="DXMapEdit.pas">
<Form>DelphiXMapEditForm</Form>
</DCCReference>
<DCCReference Include="DxPathEdit.pas">
<Form>DelphiXPathsEditForm</Form>
</DCCReference>
<DCCReference Include="DXGlueItEdit.pas">
<Form>DXGlueItEditor</Form>
</DCCReference>
<DCCReference Include="DXDIBEffectEdit.pas">
<Form>TDelphiXDIBEffectEditForm</Form>
</DCCReference>
<DCCReference Include="D3DUtils.pas"/>
<DCCReference Include="DirectX.pas"/>
<DCCReference Include="SXMedia\SXReg.pas"/>
<DCCReference Include="SXMedia\MpSndSys.pas"/>
<DCCReference Include="SXMedia\SXAbout.pas">
<Form>AboutBox</Form>
</DCCReference>
<DCCReference Include="SXMedia\SXEditor.pas"/>
<DCCReference Include="SXMedia\SXEngine.pas"/>
<DCCReference Include="SXMedia\SXModPlayer.pas"/>
<DCCReference Include="SXMedia\SXMovie.pas"/>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Release">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>Package</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality>
<Source>
<Source Name="MainSource">DelphiX280.dpk</Source>
</Source>
</Delphi.Personality>
<Platforms>
<Platform value="Win32">True</Platform>
<Platform value="Win64">False</Platform>
</Platforms>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
</Project>
/VCL_DELPHIX_D6/DelphiX280.res
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/VCL_DELPHIX_D6/DelphiX290.dpk
0,0 → 1,78
package DelphiX290;
 
{$R *.res}
{$R 'DelphiX.dcr'}
{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO OFF}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION OFF}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES ON}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DEFINE DEBUG}
{$ENDIF IMPLICITBUILDING}
{$DESCRIPTION 'DelphiX - DirectX components for Delphi 12 - Athens'}
{$DESIGNONLY}
{$IMPLICITBUILD ON}
 
requires
vcl,
vclsmp,
designide,
rtl,
vclx,
vclimg;
 
contains
DIB in 'DIB.pas',
DXClass in 'DXClass.pas',
DXConsts in 'DXConsts.pas',
DXDraws in 'DXDraws.pas',
DXETable in 'DXETable.pas',
DXInput in 'DXInput.pas',
DXPlay in 'DXPlay.pas',
DXPlayFm in 'DXPlayFm.pas' {DelphiXDXPlayForm},
DXRender in 'DXRender.pas',
DXReg in 'DXReg.pas',
DXSounds in 'DXSounds.pas',
DXSprite in 'DXSprite.pas',
DXWave in 'DXWave.pas',
DXFFBEdit in 'DXFFBEdit.pas' {DelphiXFFEditForm},
DXGUIDEdit in 'DXGUIDEdit.pas' {DelphiXGUIDEditForm},
DXInptEdit in 'DXInptEdit.pas' {DelphiXInputEditForm},
DXPictEdit in 'DXPictEdit.pas' {DelphiXPictureEditForm},
DXWaveEdit in 'DXWaveEdit.pas' {DelphiXWaveEditForm},
TurboPixels in 'TurboPixels.pas',
DXSpriteEdit in 'DXSpriteEdit.pas' {DelphiXSpriteEditForm},
DXMidiEdit in 'DXMidiEdit.pas' {DelphiXMidiEditForm},
DXMapEditProperties in 'DXMapEditProperties.pas' {DelphiXMapEditPropertiesForm},
DXMapEdit in 'DXMapEdit.pas' {DelphiXMapEditForm},
DxPathEdit in 'DxPathEdit.pas' {DelphiXPathsEditForm},
DXGlueItEdit in 'DXGlueItEdit.pas' {DXGlueItEditor},
DXDIBEffectEdit in 'DXDIBEffectEdit.pas' {TDelphiXDIBEffectEditForm},
D3DUtils in 'D3DUtils.pas',
DirectX in 'DirectX.pas',
SXReg in 'SXMedia\SXReg.pas',
MpSndSys in 'SXMedia\MpSndSys.pas',
SXAbout in 'SXMedia\SXAbout.pas' {AboutBox},
SXEditor in 'SXMedia\SXEditor.pas',
SXEngine in 'SXMedia\SXEngine.pas',
SXModPlayer in 'SXMedia\SXModPlayer.pas',
SXMovie in 'SXMedia\SXMovie.pas';
 
end.
/VCL_DELPHIX_D6/DelphiX290.dproj
0,0 → 1,183
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{35E4C8B0-A649-4664-A52A-82A98347F8A2}</ProjectGuid>
<MainSource>DelphiX290.dpk</MainSource>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<TargetedPlatforms>1</TargetedPlatforms>
<AppType>Package</AppType>
<FrameworkType>VCL</FrameworkType>
<ProjectVersion>20.1</ProjectVersion>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
<Base_Win64>true</Base_Win64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''">
<Cfg_1>true</Cfg_1>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
<Cfg_2>true</Cfg_2>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_E>false</DCC_E>
<DCC_F>false</DCC_F>
<DCC_K>false</DCC_K>
<DCC_N>false</DCC_N>
<DCC_S>false</DCC_S>
<DCC_ImageBase>00400000</DCC_ImageBase>
<GenDll>true</GenDll>
<GenPackage>true</GenPackage>
<SanitizedProjectName>DelphiX290</SanitizedProjectName>
<DCC_Description>DelphiX - DirectX components for Delphi 12 - Athens</DCC_Description>
<DesignOnlyPackage>true</DesignOnlyPackage>
<DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;DUnitX.Loggers.GUI;Winapi;System.Win;$(DCC_Namespace)</DCC_Namespace>
<VerInfo_Locale>1029</VerInfo_Locale>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName)</VerInfo_Keys>
<VerInfo_Locale>1033</VerInfo_Locale>
<DCC_UsePackage>vcl;rtl;vclimg;vclx;VclSmp;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win64)'!=''">
<DCC_UsePackage>vcl;rtl;vclimg;vclx;VclSmp;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
<DCC_DebugInformation>0</DCC_DebugInformation>
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
<DCC_Optimize>false</DCC_Optimize>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_RangeChecking>true</DCC_RangeChecking>
<DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="DelphiX.dcr"/>
<DCCReference Include="vcl.dcp"/>
<DCCReference Include="vclsmp.dcp"/>
<DCCReference Include="designide.dcp"/>
<DCCReference Include="rtl.dcp"/>
<DCCReference Include="vclx.dcp"/>
<DCCReference Include="vclimg.dcp"/>
<DCCReference Include="DIB.pas"/>
<DCCReference Include="DXClass.pas"/>
<DCCReference Include="DXConsts.pas"/>
<DCCReference Include="DXDraws.pas"/>
<DCCReference Include="DXETable.pas"/>
<DCCReference Include="DXInput.pas"/>
<DCCReference Include="DXPlay.pas"/>
<DCCReference Include="DXPlayFm.pas">
<Form>DelphiXDXPlayForm</Form>
</DCCReference>
<DCCReference Include="DXRender.pas"/>
<DCCReference Include="DXReg.pas"/>
<DCCReference Include="DXSounds.pas"/>
<DCCReference Include="DXSprite.pas"/>
<DCCReference Include="DXWave.pas"/>
<DCCReference Include="DXFFBEdit.pas">
<Form>DelphiXFFEditForm</Form>
</DCCReference>
<DCCReference Include="DXGUIDEdit.pas">
<Form>DelphiXGUIDEditForm</Form>
</DCCReference>
<DCCReference Include="DXInptEdit.pas">
<Form>DelphiXInputEditForm</Form>
</DCCReference>
<DCCReference Include="DXPictEdit.pas">
<Form>DelphiXPictureEditForm</Form>
</DCCReference>
<DCCReference Include="DXWaveEdit.pas">
<Form>DelphiXWaveEditForm</Form>
</DCCReference>
<DCCReference Include="TurboPixels.pas"/>
<DCCReference Include="DXSpriteEdit.pas">
<Form>DelphiXSpriteEditForm</Form>
</DCCReference>
<DCCReference Include="DXMidiEdit.pas">
<Form>DelphiXMidiEditForm</Form>
</DCCReference>
<DCCReference Include="DXMapEditProperties.pas">
<Form>DelphiXMapEditPropertiesForm</Form>
</DCCReference>
<DCCReference Include="DXMapEdit.pas">
<Form>DelphiXMapEditForm</Form>
</DCCReference>
<DCCReference Include="DxPathEdit.pas">
<Form>DelphiXPathsEditForm</Form>
</DCCReference>
<DCCReference Include="DXGlueItEdit.pas">
<Form>DXGlueItEditor</Form>
</DCCReference>
<DCCReference Include="DXDIBEffectEdit.pas">
<Form>TDelphiXDIBEffectEditForm</Form>
</DCCReference>
<DCCReference Include="D3DUtils.pas"/>
<DCCReference Include="DirectX.pas"/>
<DCCReference Include="SXMedia\SXReg.pas"/>
<DCCReference Include="SXMedia\MpSndSys.pas"/>
<DCCReference Include="SXMedia\SXAbout.pas">
<Form>AboutBox</Form>
</DCCReference>
<DCCReference Include="SXMedia\SXEditor.pas"/>
<DCCReference Include="SXMedia\SXEngine.pas"/>
<DCCReference Include="SXMedia\SXModPlayer.pas"/>
<DCCReference Include="SXMedia\SXMovie.pas"/>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Release">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>Package</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality>
<Source>
<Source Name="MainSource">DelphiX290.dpk</Source>
</Source>
</Delphi.Personality>
<Platforms>
<Platform value="Android">False</Platform>
<Platform value="iOSDevice32">False</Platform>
<Platform value="iOSSimulator">False</Platform>
<Platform value="Win32">True</Platform>
<Platform value="Win64">False</Platform>
</Platforms>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
</Project>
/VCL_DELPHIX_D6/DelphiX290.res
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/VCL_DELPHIX_D6/DelphiXcfg.inc
6,8 → 6,8
{$DEFINE VER3UP}
{$ENDIF}
{$IFDEF VER120}
{$DEFINE VER3UP}
{$DEFINE VER4UP}
{$DEFINE VER3UP}
{$ENDIF}
{$IFDEF VER130}
{$DEFINE VER3UP}
33,7 → 33,7
{$DEFINE VER5UP}
{$DEFINE VER6UP}
{$DEFINE VER7UP}
{$DEFINE VER9UP}
{$DEFINE VER9UP} // Delphi 2005
{$ENDIF}
{$IFDEF VER180}
{$DEFINE VER3UP}
42,9 → 42,9
{$DEFINE VER6UP}
{$DEFINE VER7UP}
{$DEFINE VER9UP}
{$DEFINE VER10UP}
{$DEFINE VER10UP} // Delphi 2006
{$IFDEF VER185}
{$DEFINE VER11UP}
{$DEFINE VER11UP} // Delphi 2007
{$ENDIF}
{$ENDIF}
{$IFDEF VER200}
210,6 → 210,181
{$DEFINE VER22UP} //Delphi XE8
{$ENDIF}
 
{$IFDEF VER300}
{$DEFINE VER3UP}
{$DEFINE VER4UP}
{$DEFINE VER5UP}
{$DEFINE VER6UP}
{$DEFINE VER7UP}
{$DEFINE VER9UP}
{$DEFINE VER10UP}
{$DEFINE VER11UP}
{$DEFINE VER12UP}
{$DEFINE VER14UP}
{$DEFINE VER15UP}
{$DEFINE VER16UP}
{$DEFINE VER17UP}
{$DEFINE VER18UP}
{$DEFINE VER19UP}
{$DEFINE VER20UP}
{$DEFINE VER21UP}
{$DEFINE VER22UP}
{$DEFINE VER23UP} //Delphi 10 Seattle
{$ENDIF}
 
{$IFDEF VER310}
{$DEFINE VER3UP}
{$DEFINE VER4UP}
{$DEFINE VER5UP}
{$DEFINE VER6UP}
{$DEFINE VER7UP}
{$DEFINE VER9UP}
{$DEFINE VER10UP}
{$DEFINE VER11UP}
{$DEFINE VER12UP}
{$DEFINE VER14UP}
{$DEFINE VER15UP}
{$DEFINE VER16UP}
{$DEFINE VER17UP}
{$DEFINE VER18UP}
{$DEFINE VER19UP}
{$DEFINE VER20UP}
{$DEFINE VER21UP}
{$DEFINE VER22UP}
{$DEFINE VER23UP}
{$DEFINE VER24UP}//Delphi 10.1 Berlin
{$ENDIF}
 
{$IFDEF VER320}
{$DEFINE VER3UP}
{$DEFINE VER4UP}
{$DEFINE VER5UP}
{$DEFINE VER6UP}
{$DEFINE VER7UP}
{$DEFINE VER9UP}
{$DEFINE VER10UP}
{$DEFINE VER11UP}
{$DEFINE VER12UP}
{$DEFINE VER14UP}
{$DEFINE VER15UP}
{$DEFINE VER16UP}
{$DEFINE VER17UP}
{$DEFINE VER18UP}
{$DEFINE VER19UP}
{$DEFINE VER20UP}
{$DEFINE VER21UP}
{$DEFINE VER22UP}
{$DEFINE VER23UP}
{$DEFINE VER24UP}
{$DEFINE VER25UP} //Delphi 10.2 Tokyo
{$ENDIF}
 
{$IFDEF VER330}
{$DEFINE VER3UP}
{$DEFINE VER4UP}
{$DEFINE VER5UP}
{$DEFINE VER6UP}
{$DEFINE VER7UP}
{$DEFINE VER9UP}
{$DEFINE VER10UP}
{$DEFINE VER11UP}
{$DEFINE VER12UP}
{$DEFINE VER14UP}
{$DEFINE VER15UP}
{$DEFINE VER16UP}
{$DEFINE VER17UP}
{$DEFINE VER18UP}
{$DEFINE VER19UP}
{$DEFINE VER20UP}
{$DEFINE VER21UP}
{$DEFINE VER22UP}
{$DEFINE VER23UP}
{$DEFINE VER24UP}
{$DEFINE VER25UP}
{$DEFINE VER26UP} //Delphi 10.3 Rio
{$ENDIF}
 
{$IFDEF VER340}
{$DEFINE VER3UP}
{$DEFINE VER4UP}
{$DEFINE VER5UP}
{$DEFINE VER6UP}
{$DEFINE VER7UP}
{$DEFINE VER9UP}
{$DEFINE VER10UP}
{$DEFINE VER11UP}
{$DEFINE VER12UP}
{$DEFINE VER14UP}
{$DEFINE VER15UP}
{$DEFINE VER16UP}
{$DEFINE VER17UP}
{$DEFINE VER18UP}
{$DEFINE VER19UP}
{$DEFINE VER20UP}
{$DEFINE VER21UP}
{$DEFINE VER22UP}
{$DEFINE VER23UP}
{$DEFINE VER24UP}
{$DEFINE VER25UP}
{$DEFINE VER26UP}
{$DEFINE VER27UP} //Delphi 10.4 Sydney
{$ENDIF}
 
{$IFDEF VER350}
{$DEFINE VER3UP}
{$DEFINE VER4UP}
{$DEFINE VER5UP}
{$DEFINE VER6UP}
{$DEFINE VER7UP}
{$DEFINE VER9UP}
{$DEFINE VER10UP}
{$DEFINE VER11UP}
{$DEFINE VER12UP}
{$DEFINE VER14UP}
{$DEFINE VER15UP}
{$DEFINE VER16UP}
{$DEFINE VER17UP}
{$DEFINE VER18UP}
{$DEFINE VER19UP}
{$DEFINE VER20UP}
{$DEFINE VER21UP}
{$DEFINE VER22UP}
{$DEFINE VER23UP}
{$DEFINE VER24UP}
{$DEFINE VER25UP}
{$DEFINE VER26UP}
{$DEFINE VER27UP}
{$DEFINE VER28UP} //Delphi 11 Alexandria
{$ENDIF}
 
{$IFDEF VER360}
{$DEFINE VER3UP}
{$DEFINE VER4UP}
{$DEFINE VER5UP}
{$DEFINE VER6UP}
{$DEFINE VER7UP}
{$DEFINE VER9UP}
{$DEFINE VER10UP}
{$DEFINE VER11UP}
{$DEFINE VER12UP}
{$DEFINE VER14UP}
{$DEFINE VER15UP}
{$DEFINE VER16UP}
{$DEFINE VER17UP}
{$DEFINE VER18UP}
{$DEFINE VER19UP}
{$DEFINE VER20UP}
{$DEFINE VER21UP}
{$DEFINE VER22UP}
{$DEFINE VER23UP}
{$DEFINE VER24UP}
{$DEFINE VER25UP}
{$DEFINE VER26UP}
{$DEFINE VER27UP}
{$DEFINE VER28UP}
{$DEFINE VER29UP}//Delphi 12 Athens
{$ENDIF}
 
{$IFDEF VER100}
// Delphi 3
{$Define D3UP}
462,6 → 637,201
{$Define D_EE_UP}
{$ENDIF}
 
{$IFDEF VER300}
// Delphi 23 - 10 Seattle
{$Define D3UP}
{$Define D4UP}
{$Define D5UP}
{$Define D6UP}
{$Define D7UP}
{$Define D9UP}
{$Define D10UP}
{$Define D11UP}
{$Define D12UP}
{$Define D14UP}
{$Define D15UP}
{$Define D16UP}
{$Define D17UP}
{$Define D18UP}
{$Define D19UP}
{$Define D20UP}
{$Define D21UP}
{$Define D22UP}
{$Define D23UP}
{$Define D_EE_UP}
{$ENDIF}
 
{$IFDEF VER310}
// Delphi 24 - 10.1 Berlin
{$Define D3UP}
{$Define D4UP}
{$Define D5UP}
{$Define D6UP}
{$Define D7UP}
{$Define D9UP}
{$Define D10UP}
{$Define D11UP}
{$Define D12UP}
{$Define D14UP}
{$Define D15UP}
{$Define D16UP}
{$Define D17UP}
{$Define D18UP}
{$Define D19UP}
{$Define D20UP}
{$Define D21UP}
{$Define D22UP}
{$Define D23UP}
{$Define D24UP}
//cannot be made, Berlin version lost older interfaces
//{.$Define D_EE_UP}
{$ENDIF}
 
{$IFDEF VER320}
// Delphi 25 - 10.2 Tokyo
{$Define D3UP}
{$Define D4UP}
{$Define D5UP}
{$Define D6UP}
{$Define D7UP}
{$Define D9UP}
{$Define D10UP}
{$Define D11UP}
{$Define D12UP}
{$Define D14UP}
{$Define D15UP}
{$Define D16UP}
{$Define D17UP}
{$Define D18UP}
{$Define D19UP}
{$Define D20UP}
{$Define D21UP}
{$Define D22UP}
{$Define D23UP}
{$Define D24UP}
{$Define D25UP}
//cannot be made, Berlin version lost older interfaces
//{.$Define D_EE_UP}
{$ENDIF}
 
{$IFDEF VER330}
// Delphi 26 - 10.3 Rio
{$Define D3UP}
{$Define D4UP}
{$Define D5UP}
{$Define D6UP}
{$Define D7UP}
{$Define D9UP}
{$Define D10UP}
{$Define D11UP}
{$Define D12UP}
{$Define D14UP}
{$Define D15UP}
{$Define D16UP}
{$Define D17UP}
{$Define D18UP}
{$Define D19UP}
{$Define D20UP}
{$Define D21UP}
{$Define D22UP}
{$Define D23UP}
{$Define D24UP}
{$Define D25UP}
{$Define D26UP}
//cannot be made, Berlin version lost older interfaces
//{.$Define D_EE_UP}
{$ENDIF}
 
{$IFDEF VER340}
// Delphi 27 - 10.4 Sydney
{$Define D3UP}
{$Define D4UP}
{$Define D5UP}
{$Define D6UP}
{$Define D7UP}
{$Define D9UP}
{$Define D10UP}
{$Define D11UP}
{$Define D12UP}
{$Define D14UP}
{$Define D15UP}
{$Define D16UP}
{$Define D17UP}
{$Define D18UP}
{$Define D19UP}
{$Define D20UP}
{$Define D21UP}
{$Define D22UP}
{$Define D23UP}
{$Define D24UP}
{$Define D25UP}
{$Define D26UP}
{$Define D27UP}
//cannot be made, Berlin version lost older interfaces
//{.$Define D_EE_UP}
{$ENDIF}
 
{$IFDEF VER350}
// Delphi 28 - 11 Alexandria
{$Define D3UP}
{$Define D4UP}
{$Define D5UP}
{$Define D6UP}
{$Define D7UP}
{$Define D9UP}
{$Define D10UP}
{$Define D11UP}
{$Define D12UP}
{$Define D14UP}
{$Define D15UP}
{$Define D16UP}
{$Define D17UP}
{$Define D18UP}
{$Define D19UP}
{$Define D20UP}
{$Define D21UP}
{$Define D22UP}
{$Define D23UP}
{$Define D24UP}
{$Define D25UP}
{$Define D26UP}
{$Define D27UP}
{$Define D28UP}
//cannot be made, Berlin version lost older interfaces
//{.$Define D_EE_UP}
{$ENDIF}
 
{$IFDEF VER360}
// Delphi 29 - 12 Athens
{$Define D3UP}
{$Define D4UP}
{$Define D5UP}
{$Define D6UP}
{$Define D7UP}
{$Define D9UP}
{$Define D10UP}
{$Define D11UP}
{$Define D12UP}
{$Define D14UP}
{$Define D15UP}
{$Define D16UP}
{$Define D17UP}
{$Define D18UP}
{$Define D19UP}
{$Define D20UP}
{$Define D21UP}
{$Define D22UP}
{$Define D23UP}
{$Define D24UP}
{$Define D25UP}
{$Define D26UP}
{$Define D27UP}
{$Define D28UP}
{$Define D29UP}
//cannot be made, Berlin version lost older interfaces
//{.$Define D_EE_UP}
{$ENDIF}
 
{standard feature for drawing blend textures}
{this conditional is add-on as is for eliminate bad color key switching}
{$DEFINE DrawHWAcc}
529,16 → 899,14
{$IFDEF VER12UP}
{PNG support is added in Delphi 2009 and up as native feature}
{there is turn on, it is for backward compatibility only}
{$Define PNG_GRAPHICS}
{$DEFINE PNG_GRAPHICS}
{$ELSE}
{for Delphi 2007 and lower when you usen PNG support, you have write}
{name of PNG package into required section of pavkage source .dpk}
{and turn on this support here - remove the dot only bellow}
{.$Define PNG_GRAPHICS}
{.$DEFINE PNG_GRAPHICS}
{$ENDIF}
 
{special feature for enumerate displayis like primary, secondary etc.}
{only for special purpose, multimonitors etc.}
{.$Define _DMO_}
 
{.$Define UseDirectPlay} // Daniel Marschall 12.04.2024 Added to avoid Windows showing "This app requires DirectPlay"
{.$DEFINE _DMO_}
/VCL_DELPHIX_D6/DirectPlay.pas
18,12 → 18,6
 
interface
 
{$INCLUDE DelphiXcfg.inc}
 
{$IFNDEF UseDirectPlay} // Daniel Marschall 12.04.2024 Added to avoid Windows showing "This app requires DirectPlay"
{$MESSAGE ERROR 'If you want to use DXPlay.pas, please enable the IFDEF UseDirectPlay in DelphiXcfg.inc'}
{$ENDIF}
 
{$MINENUMSIZE 4}
{$ALIGN ON}
 
30,6 → 24,13
uses
Windows;
 
type
{$IFDEF UNICODE}
PCharAW = PWideChar;
{$ELSE}
PCharAW = PAnsiChar;
{$ENDIF}
 
var
DPlayDLL: HMODULE = 0;
 
228,8 → 229,8
dwCurrentPlayers: DWORD; // Current # players in session (read only)
case Integer of
0: (
lpszSessionName: PChar; // Name of the session
lpszPassword: PChar; // Password of the session (optional)
lpszSessionName: PCharAW; // Name of the session
lpszPassword: PCharAW; // Password of the session (optional)
dwReserved1: DWORD; // Reserved for future MS use.
dwReserved2: DWORD;
dwUser1: DWORD; // For use by the application
348,8 → 349,8
dwFlags: DWORD; // Not used. Must be zero.
case Integer of
0: (
lpszShortName: PChar; // The short or friendly name
lpszLongName: PChar; // The long or formal name
lpszShortName: PCharAW; // The short or friendly name
lpszLongName: PCharAW; // The long or formal name
);
1: (
lpszShortNameA: PAnsiChar;
372,9 → 373,9
dwFlags: DWORD; // Not used. Must be zero.
case Integer of
0: (
lpszUsername: PChar; // User name of the account
lpszPassword: PChar; // Password of the account
lpszDomain: PChar; // Domain name of the account
lpszUsername: PCharAW; // User name of the account
lpszPassword: PCharAW; // Password of the account
lpszDomain: PCharAW; // Domain name of the account
);
1: (
lpszUsernameA: PAnsiChar; // User name of the account
399,8 → 400,8
dwFlags: DWORD; // Not used. Must be zero.
case Integer of
0: (
lpszSSPIProvider: PChar; // SSPI provider name
lpszCAPIProvider: PChar; // CAPI provider name
lpszSSPIProvider: PCharAW; // SSPI provider name
lpszCAPIProvider: PCharAW; // CAPI provider name
dwCAPIProviderType: DWORD; // Crypto Service Provider type
dwEncryptionAlgorithm: DWORD; // Encryption Algorithm type
);
424,7 → 425,7
dwSize: DWORD; // Size of structure
dwFlags: DWORD; // Not used. Must be zero.
case Integer of
0: (lpszAccountID: PChar); // Account identifier
0: (lpszAccountID: PCharAW); // Account identifier
1: (lpszAccountIDA: PAnsiChar);
2: (lpszAccountIDW: PWideChar);
end;
454,7 → 455,7
dwSize: DWORD;
dwFlags: DWORD;
case Integer of
0: (lpszMessage: PChar); // Message string
0: (lpszMessage: PCharAW); // Message string
1: (lpszMessageA: PAnsiChar);
2: (lpszMessageW: PWideChar);
end;
1694,7 → 1695,7
dwSize: DWORD; // Size of this structure
guidApplication: TGUID; // GUID of the Application
case Integer of // Pointer to the Application Name
0: (lpszAppName: PChar);
0: (lpszAppName: PCharAW);
1: (lpszAppNameW: PWideChar);
3: (lpszAppNameA: PChar);
end;
1720,12 → 1721,12
dwSize: DWORD;
dwFlags: DWORD;
case Integer of
0: (lpszApplicationName: PChar;
0: (lpszApplicationName: PCharAW;
guidApplication: TGUID;
lpszFilename: PChar;
lpszCommandLine: PChar;
lpszPath: PChar;
lpszCurrentDirectory: PChar;
lpszFilename: PCharAW;
lpszCommandLine: PCharAW;
lpszPath: PCharAW;
lpszCurrentDirectory: PCharAW;
lpszDescriptionA: PAnsiChar;
lpszDescriptionW: PWideChar);
1: (lpszApplicationNameA: PAnsiChar;
1751,15 → 1752,15
dwSize: DWORD;
dwFlags: DWORD;
case Integer of
0: (lpszApplicationName: PChar;
0: (lpszApplicationName: PCharAW;
guidApplication: TGUID;
lpszFilename: PChar;
lpszCommandLine: PChar;
lpszPath: PChar;
lpszCurrentDirectory: PChar;
lpszFilename: PCharAW;
lpszCommandLine: PCharAW;
lpszPath: PCharAW;
lpszCurrentDirectory: PCharAW;
lpszDescriptionA: PAnsiChar;
lpszDescriptionW: PWideChar;
lpszAppLauncherName: PChar);
lpszAppLauncherName: PCharAW);
1: (lpszApplicationNameA: PAnsiChar;
filler1: TGUID;
lpszFilenameA: PAnsiChar;
/VCL_DELPHIX_D6/DirectX.pas
27,7 → 27,6
***************************************************************************)
{
(c)2004 Jaro Benes Recompilation with Erik Unger's headers
(c)2024 Daniel Marschall, small fixes
 
Join in order:
1) DirectDraw
14459,8 → 14458,6
 
//DirectPlay file
 
{$IFDEF UseDirectPlay} // Daniel Marschall 12.04.2024 Added to avoid Windows showing "This app requires DirectPlay"
 
(*==========================================================================;
*
* Copyright (C) Microsoft Corporation. All Rights Reserved.
14531,6 → 14528,11
****************************************************************************)
 
type
{$IFDEF UNICODE}
PCharAW = PWideChar;
{$ELSE}
PCharAW = PAnsiChar;
{$ENDIF}
(*
* TDPID
* DirectPlay player and group ID
14677,8 → 14679,8
dwCurrentPlayers: DWORD; // Current # players in session (read only)
case integer of
0 : (
lpszSessionName: PChar; // Name of the session
lpszPassword: PChar; // Password of the session (optional)
lpszSessionName: PCharAW; // Name of the session
lpszPassword: PCharAW; // Password of the session (optional)
dwReserved1: DWORD; // Reserved for future MS use.
dwReserved2: DWORD;
dwUser1: DWORD; // For use by the application
14798,8 → 14800,8
dwFlags: DWORD; // Not used. Must be zero.
case Integer of
0 : (
lpszShortName : PChar; // The short or friendly name
lpszLongName : PChar; // The long or formal name
lpszShortName : PCharAW; // The short or friendly name
lpszLongName : PCharAW; // The long or formal name
);
1 : (
lpszShortNameA : PAnsiChar;
14822,9 → 14824,9
dwFlags: DWORD; // Not used. Must be zero.
case Integer of
0 : (
lpszUsername: PChar; // User name of the account
lpszPassword: PChar; // Password of the account
lpszDomain: PChar; // Domain name of the account
lpszUsername: PCharAW; // User name of the account
lpszPassword: PCharAW; // Password of the account
lpszDomain: PCharAW; // Domain name of the account
);
1 : (
lpszUsernameA: PAnsiChar; // User name of the account
14849,8 → 14851,8
dwFlags: DWORD; // Not used. Must be zero.
case Integer of
0 : (
lpszSSPIProvider : PChar; // SSPI provider name
lpszCAPIProvider : PChar; // CAPI provider name
lpszSSPIProvider : PCharAW; // SSPI provider name
lpszCAPIProvider : PCharAW; // CAPI provider name
dwCAPIProviderType: DWORD; // Crypto Service Provider type
dwEncryptionAlgorithm: DWORD; // Encryption Algorithm type
);
14874,7 → 14876,7
dwSize: DWORD; // Size of structure
dwFlags: DWORD; // Not used. Must be zero.
case Integer of
0 : (lpszAccountID : PChar); // Account identifier
0 : (lpszAccountID : PCharAW); // Account identifier
1 : (lpszAccountIDA : PAnsiChar);
2 : (lpszAccountIDW : PWideChar);
end;
14904,7 → 14906,7
dwSize: DWORD;
dwFlags: DWORD;
case Integer of
0 : (lpszMessage : PChar); // Message string
0 : (lpszMessage : PCharAW); // Message string
1 : (lpszMessageA : PAnsiChar);
2 : (lpszMessageW : PWideChar);
end;
16152,7 → 16154,7
dwSize: DWORD; // Size of this structure
guidApplication: TGUID; // GUID of the Application
case Integer of // Pointer to the Application Name
0: (lpszAppName: PChar);
0: (lpszAppName: PCharAW);
1: (lpszAppNameW: PWideChar);
3: (lpszAppNameA: PChar);
end;
16178,12 → 16180,12
dwSize: DWORD;
dwFlags: DWORD;
case integer of
0 : (lpszApplicationName: PChar;
0 : (lpszApplicationName: PCharAW;
guidApplication: TGUID;
lpszFilename: PChar;
lpszCommandLine: PChar;
lpszPath: PChar;
lpszCurrentDirectory: PChar;
lpszFilename: PCharAW;
lpszCommandLine: PCharAW;
lpszPath: PCharAW;
lpszCurrentDirectory: PCharAW;
lpszDescriptionA: PAnsiChar;
lpszDescriptionW: PWideChar);
1 : (lpszApplicationNameA: PAnsiChar;
16209,15 → 16211,15
dwSize: DWORD;
dwFlags: DWORD;
case integer of
0 : (lpszApplicationName: PChar;
0 : (lpszApplicationName: PCharAW;
guidApplication: TGUID;
lpszFilename: PChar;
lpszCommandLine: PChar;
lpszPath: PChar;
lpszCurrentDirectory: PChar;
lpszFilename: PCharAW;
lpszCommandLine: PCharAW;
lpszPath: PCharAW;
lpszCurrentDirectory: PCharAW;
lpszDescriptionA: PAnsiChar;
lpszDescriptionW: PWideChar;
lpszAppLauncherName: PChar);
lpszAppLauncherName: PCharAW);
1 : (lpszApplicationNameA: PAnsiChar;
filler1: TGUID;
lpszFilenameA: PAnsiChar;
16844,9 → 16846,7
 
DPLAD_SYSTEM = DPLMSG_SYSTEM;
 
{$ENDIF} // IFDEF UseDirectPlay
 
//DirectSetup file
(*==========================================================================
*
17041,14 → 17041,14
var
DirectXSetupW : function (hWnd: HWND; lpszRootPath: PWideChar; dwFlags: DWORD) : Integer; stdcall;
DirectXSetupA : function (hWnd: HWND; lpszRootPath: PAnsiChar; dwFlags: DWORD) : Integer; stdcall;
DirectXSetup : function (hWnd: HWND; lpszRootPath: PChar; dwFlags: DWORD) : Integer; stdcall;
DirectXSetup : function (hWnd: HWND; lpszRootPath: PCharAW; dwFlags: DWORD) : Integer; stdcall;
 
DirectXDeviceDriverSetupW : function (hWnd: HWND; lpszDriverClass: PWideChar;
lpszDriverPath: PWideChar; dwFlags: DWORD) : Integer; stdcall;
DirectXDeviceDriverSetupA : function (hWnd: HWND; lpszDriverClass: PAnsiChar;
lpszDriverPath: PAnsiChar; dwFlags: DWORD) : Integer; stdcall;
DirectXDeviceDriverSetup : function (hWnd: HWND; lpszDriverClass: PChar;
lpszDriverPath: PChar; dwFlags: DWORD) : Integer; stdcall;
DirectXDeviceDriverSetup : function (hWnd: HWND; lpszDriverClass: PCharAW;
lpszDriverPath: PCharAW; dwFlags: DWORD) : Integer; stdcall;
 
DirectXRegisterApplicationW : function
(hWnd: HWND; const lpDXRegApp: TDirectXRegisterAppW) : Integer; stdcall;
22644,7 → 22644,6
*
***************************************************************************)
 
{$IFDEF UseDirectPlay} // Daniel Marschall 12.04.2024 Added to avoid Windows showing "This app requires DirectPlay"
function DPErrorString(Value: HResult) : string;
begin
case Value of
22703,7 → 22702,6
else Result := 'Unrecognized Error';
end;
end;
{$ENDIF} // UseDirectPlay
 
//DirectSetup file
 
22987,7 → 22985,6
{$ENDIF}
end;
{DirectInput}
{$IFDEF UseDirectPlay} // Daniel Marschall 12.04.2024 Added to avoid Windows showing "This app requires DirectPlay"
{DirectPlay}
if not IsNTandDelphiRunning then
begin
23015,7 → 23012,6
 
end;
{DirectPlay}
{$ENDIF} // UseDirectPlay
{DirectSetup}
if not IsNTandDelphiRunning then
begin
23068,11 → 23064,9
{DirectInput}
FreeLibrary(DInputDLL);
{DirectInput}
{$IFDEF UseDirectPlay} // Daniel Marschall 12.04.2024 Added to avoid Windows showing "This app requires DirectPlay"
{DirectPlay}
if DPlayDLL <> 0 then FreeLibrary(DPlayDLL);
{DirectPlay}
{$ENDIF}
{DirectSetup}
FreeLibrary(DSetupDLL);
{DirectSetup}
/VCL_DELPHIX_D6/SXLib.pas
0,0 → 1,3139
unit SXlib;
 
//Simplified X handling routine
 
interface
{$INCLUDE DelphiXcfg.inc}
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
{$IFDEF QDA_SUPPORT}QDArc,{$ENDIF}
DXDraws, DirectX, D3DUtils, DXClass;
 
(* SXF形式について
 
name | ofs | length | comment
----------------------------------------------------------------------------------------------------
Signature | 0 | 16 | 'Simplified_X01 '
nVextices | 16 | 2 | number of vertices
nIndices | 18 | 2 | number of indices for vertices
dwFVF | 20 | 4 | flags for flexible vertex format
VertexSize| 24 | 4 | required bytes per vertex
 
Vertices | 256 | VertexSize * nVertices | vertices
Indices | 256+Vertices | 2 * nIndices | indices for vertices
 
*)
 
(* SX形式について(古い)
 
name | ofs | length | comment
----------------------------------------------------------------------------
Signature | 0 | 16 | 'Simplified_X00 '
nVextices | 16 | 2 | number of vertices
nIndices | 18 | 2 | number of indices for vertices
 
Vertices | 256 | 40 * nVertices | vertices(TSXVertex)
Indices | 256+Vertices | 2 * nIndices | indices for vertices
 
*)
 
const
 
//SXファイル識別子
//SX file identifier
SX_SIGNATURE: string[16] = 'Simplified_X00 '; //SXFlexible
SXF_SIGNATURE: string[16] = 'Simplified_X01 '; //古いSX
 
//メッシュを描画するときに一度にDirect3Dに流し込む頂点の最大数(必ず3の倍数)
//One at a time when drawing the flow into the maximum number of vertices Direct3D mesh (must be a multiple of 3)
DIV_VERTICES: Word = $FFFF;
 
 
 
//TSXVertex用、FVFフラグ
FVF_SXVERTEX: DWord = (D3DFVF_VERTEX or D3DFVF_DIFFUSE or D3DFVF_SPECULAR);
 
//TSXVertexMT用
FVF_SXVERTEXMT: DWord = (D3DFVF_XYZ or D3DFVF_NORMAL or D3DFVF_DIFFUSE or D3DFVF_SPECULAR or D3DFVF_TEX2);
 
type
TSXMesh = class;
TSXFrame = class;
TSXFrameList = class;
TSXScene = class;
TSXRenderingQueue = class;
 
//SX形式のための頂点データ
//Vertex data for the SX-style
TSXVertex = packed record
 
case Integer of
0: (
x, y, z: Single; //頂点
nx, ny, nz: Single; //法線
diffuse: TD3DCOLOR; //ディフューズ
specular: TD3DCOLOR; //スペキュラ
tu, tv: Single; //テクスチャ座標 ** Texture coordinates
);
1: (
pos: TD3DVector;
normal: TD3DVector;
);
end;
 
PSXVertex = ^TSXVertex;
 
TSXVertexArray = array[0..$FFFFFF] of TSXVertex;
PSXVertexArray = ^TSXVertexArray;
 
//マルチテクスチャ対応SXVertex
//SXVertex multi-texture support
TSXVertexMT = packed record
case Integer of
0: (
x, y, z: Single; //頂点
nx, ny, nz: Single; //法線
diffuse: TD3DCOLOR; //ディフューズ
specular: TD3DCOLOR; //スペキュラ
tu0, tv0: Single; //テクスチャ座標
tu1, tv1: Single; //テクスチャ座標(2)
);
1: (
pos: TD3DVector;
normal: TD3DVector;
);
end;
 
PSXVertexMT = ^TSXVertexMT;
 
TSXVertexArrayMT = array[0..$FFFFFF] of TSXVertexMT;
PSXVertexArrayMT = ^TSXVertexArrayMT;
 
//ビルボードのための頂点情報
//Billboard top information for
TSXVertexBB = record
case Integer of
0: (
//視点からの距離1の時の、中心からの相対座標
//At a distance from the viewpoint of the relative coordinate from the center
dx, dy: Single;
color: TD3DCOLOR; //色
tu, tv: Single; //テクスチャ座標
);
1: (
size: TSngPoint;
);
end;
 
//イベントハンドラ
//Event handler
TSXRenderMeshEvent = procedure(Sender: TSXFrame) of object;
 
//ブレンドモード
//Blend
// TSXBlendMode = (
// sxbDefault, //普通、透けない
// sxbAdd, //加算合成
// sxbAlpha, //半透明
// sxbSub //減算合成
// );
 
//可視属性
//Visible attribute
TSXVisibility = (
sxvShow, //見える
sxvHide, //隠れる。子フレームも含めて
sxvHideMyself //隠れる。子フレームは隠れない。
);
 
//クラス群
//Classes
 
//メッシュ用クラス
//The Mesh Class
TSXMesh = class
private
procedure SetVertexSize(const Value: DWord);
protected
FOwner: TDXDraw; //色々お世話になるDDDDオブジェクト
FVBuf: IDirect3DVertexBuffer7; //VertexBuffer
FIndexCount: Word; //頂点インデクスの数
FVertexCount: Word; //頂点の数
FFaceCount: Word; //面の数、常に頂点数/3
FVertexSize: DWord; //1個の頂点あたりのサイズ
FVFFlags: DWord; //描画させるときのフラグ
VertexKeepBuf: Pointer; //頂点の配列を入れる。Keep用のバッファとして使う
FIndices: array of Word; //頂点インデクス
FLocked: Boolean; //ロック中?
FPVertex: Pointer; //頂点バッファへのポインタ
FRecovery: Boolean; //リカバリ中?
function GetIndex(idx: Word): Word;
function GetVertex(idx: Word): Pointer;
procedure SetIndex(idx: Word; const Value: Word);
procedure SetVertex(idx: Word; const Value: Pointer);
public
constructor Create(AOwner: TDXDraw);
destructor Destroy; override;
procedure KeepVB; //画面が初期化される時の事を考えて、現在のVBの状態を保持
procedure RecoverVB; //保持したVBを復元
property VertexBuffer: IDirect3DVertexBuffer7 read FVBuf; //VertexBuffer
property IndexCount: Word read FIndexCount; //頂点インデクスの数
property VertexCount: Word read FVertexCount; //頂点の数
property FaceCount: Word read FFaceCount; //面の数(頂点の数 / 3
property Vertex[idx: Word]: Pointer read GetVertex write SetVertex; //頂点への参照
property Index[idx: Word]: Word read GetIndex write SetIndex; //頂点インデクス
property FVF: DWord read FVFFlags write FVFFlags; //FlexibleVertexFormatに関するフラグ
property VertexSize: DWord read FVertexSize write SetVertexSize;
procedure Draw(dwFlags: DWord); //DrawIndexedPrimitiveVBで全部描画
procedure DrawPartial(start: Word; count: Word; dwFlags: DWord); //DrawIndexedPrimitiveVBで部分描画
procedure LoadFromStream(s: TStream);
procedure LoadFromFile(fileName: string);
{$IFDEF QDA_SUPPORT}
procedure LoadFromQDA(QDAName, QDAID: string);
{$ENDIF}
function Lock: Pointer;
procedure Unlock;
procedure SetSize(newVertexCount, newIndexCount: Word); //バッファの大きさを再設定する、中身は消える
procedure Optimize;
end;
 
{
TSXMesh = class(TSXGenMesh)
private
function GetVertex(idx: Word): TSXVertex; override;
procedure SetVertex(idx: Word; const Value: TSXVertex); override;
public
 
property Vertex[idx:Word]:TSXVertex read GetVertex write SetVertex; //頂点
function Lock:PSXVertexArray;
end;
}
 
//フレーム
//The Frame
TSXFrame = class
private
FMatrix: TD3DMATRIX; //変換行列(自分の座標系→親座標系)
FMeshMatrix: TD3DMATRIX; //メッシュ描画時の変換行列…メッシュ座標→自分座標
 
FAncestors: TSXFrameList; //祖先フレーム達
FChildren: TSXFrameList; //子フレーム達
FParent: TSXFrame; //親フレーム(Ancestors[Ancestors.Count-1]と同)
FVisibility: TSXVisibility; //可視属性
FBindRenderState: Boolean; //自分の子孫のレンダリングステートを、強制的に自分のにする
FBindTexture: Boolean; //自分の子孫のテクスチャを、強制的に自分のにする
FBindMaterial: Boolean; //自分の子孫のマテリアルを、強制的に自分のにする
 
RenderedMatrix: TD3DMATRIX; //最後にレンダリングされたときのワールド行列(ビルボードの描画に使用)
BBAttached: Boolean; //ビルボードがくっついてる?
 
function GetWorldMatrix: TD3DMATRIX;
procedure SetParent(const Value: TSXFrame);
 
public
 
//中身
Texture: TDirect3DTexture2; //メッシュに貼り付けるテクスチャ
Mesh: TSXMesh; //書き込むメッシュ
Material: TD3DMATERIAL7; //マテリアル
 
//レンダリングステートの制御
Lighting: Boolean; //True:ライティングをする, False:頂点の色をそのまま使う
Specular: Boolean; //スペキュラハイライトをつける
BlendMode: TRenderType; //描画時のブレンドモード
 
//イベントハンドラ
OnRenderMesh: TSXRenderMeshEvent; //メッシュをこれから書きますですイベント
 
//いろいろ
Tag: DWord; //整数値、なんにでも使って
RenderAttr: Integer; //整数値、OnRenderMeshで、マテリアル番号代わりにどうぞ
 
//コンストラクタ・デストラクタ
constructor Create(parentFrame: TSXFrame);
destructor Destroy; override;
 
//親子関係
property Ancestors: TSXFrameList read FAncestors;
property Children: TSXFrameList read FChildren;
property Parent: TSXFrame read FParent write SetParent;
property BindRenderState: Boolean read FBindRenderState write FBindRenderState;
property BindTexture: Boolean read FBindTexture write FBindTexture;
property BindMaterial: Boolean read FBindMaterial write FBindMaterial;
 
//可視属性
property Visibility: TSXVisibility read FVisibility write FVisibility;
 
//座標変換関係
property Matrix: TD3DMATRIX read FMatrix write FMatrix;
property WorldMatrix: TD3DMATRIX read GetWorldMatrix; //自分座標→ワールド座標の変換行列
property MeshMatrix: TD3DMATRIX read FMeshMatrix write FMeshMatrix; //メッシュ描画時の変換行列…メッシュ座標→自分座標
 
procedure SetTransform(ref: TSXFrame; const mat: TD3DMATRIX);
function GetTransform(ref: TSXFrame): TD3DMATRIX;
 
function LocalToWorld(vec: TD3DVector): TD3DVector; //フレーム内での座標を、ワールド座標に変換する
function WorldToLocal(vec: TD3DVector): TD3DVector; //ワールド座標内の座標をフレーム内の座標に変換する
 
//位置
procedure SetTranslation(ref: TSXFrame; const pos: TD3Dvector);
function GetTranslation(ref: TSXFrame): TD3DVector;
 
//姿勢
//…軸ベクトルで設定・取得
procedure SetOrientation(ref: TSXFrame; const vecZ: TD3DVector; const vecY: TD3DVector);
procedure GetOrientation(ref: TSXFrame; var vecZ: TD3DVector; var vecY: TD3DVector);
//…マトリクスを与えて姿勢だけ設定
procedure SetOrientationMatrix(ref: TSXFrame; const mat: TD3DMATRIX);
 
//お便利
//…Z軸をtargetフレーム内の座標posを向ける。Y軸はworldフレーム内のY軸に向け。Y軸の傾きをbank度とする
procedure LookAt(target: TSXFrame; const pos: TD3DVector; world: TSXFrame; const bank: Integer);
function ViewMatrix: TD3DMatrix; //このフレームをカメラにした場合のビュー行列を生成
end;
 
//フレームのリスト
//List of frames
TSXFrameList = class(TList)
private
function GetFrame(idx: Integer): TSXFrame;
procedure SetFrame(idx: Integer; const Value: TSXFrame);
public
property Frames[idx: Integer]: TSXFrame read GetFrame write SetFrame; default;
constructor Create;
destructor Destroy; override;
procedure Assign(source: TSXFrameList);
end;
 
//シーン全体
TSXScene = class
private
FCamera: TSXFrame;
FOwner: TDXDraw;
 
FProjectionMatrix: TD3DMATRIX;
FVP: TD3DVIEWPORT7;
 
OpaqueQueue: TSXRenderingQueue; //不透明体用のキュー
AlphaQueue: TSXRenderingQueue; //半透明透明体用のキュー
AddQueue: TSXRenderingQueue; //加算半透明体用のキュー
SubQueue: TSXRenderingQueue; //減算半透明体用のキュー
 
//ProcessVertices用
//MeshProcessor:TSXMesh; //Lightingをしないとき・環境マップする時用
//MeshProcessorMT:TSXMesh; //同上、ただしマルチテクスチャ(2ステージ)版
public
constructor Create(DDCompo: TDXDraw);
destructor Destroy; override;
 
property CameraFrame: TSXFrame read FCamera write FCamera; //視点を置くフレーム
 
procedure Render(rootFrame: TSXFrame); //rootFrame以下を描画
procedure Clear(dwFlags: DWord; color: DWORD; z: Single; stencil: DWord); //バックバッファのクリア
 
procedure SetProjection(fov, aspect, nearZ, farZ: Single); //透視変換の設定
procedure SetViewPort(left, top, right, bottom: DWord); //ビューポート
 
procedure Recover; //ビューポートなどの状態をリストア
 
procedure PushBillboard(blendMode: TRenderType; ref: TSXFrame; pos: TD3DVector; points: array of TSXVertexBB; tex: TDirect3DTexture2);
function SphereVisibility(ref: TSXFrame; pos: TD3DVector; radius: Single; depth: Single): Boolean; //refフレーム内にある、中心pos、半径radiusの球は見えるか、但し、距離がdepth以上なら見えないものとする
end;
 
//ライト
TSXLight = class
private
FOwner: TDXDraw;
FIndex: DWord; //SetLightに渡す、インデクス
FEnabled: Boolean;
FUpdate: Boolean; //パラメータの変更を、即反映
procedure SetEnabled(const Value: Boolean);
public
Params: TD3DLIGHT7;
 
constructor Create(DDCompo: TDXDraw; index: DWord);
destructor Destroy; override;
 
procedure BeginUpdate; //Paramsの内容を、Direct3Dに伝えなくする
procedure EndUpdate; //Paramsの内容を、Direct3Dに伝えなくした状態を解除
 
property Enabled: Boolean read FEnabled write SetEnabled;
 
//お便利ルーチン
procedure SetupDiffuse(_R, _G, _B: Single);
procedure SetupSpecular(_R, _G, _B: Single);
procedure SetupAmbient(_R, _G, _B: Single);
 
procedure SetupColors(difR, difG, difB, specR, specG, specB, ambR, ambG, ambB: Single);
procedure SetupRanges(range, att0, att1, att2: Single);
 
procedure SetupDirectional(dir: TD3DVector);
procedure SetupPoint(pos: TD3DVector);
procedure SetupSpot(pos, dir: TD3DVector; theta, phi, falloff: Single);
 
procedure FitFrame(target: TSXFrame); //フレームの位置・向きにセットする
end;
 
//複数のライトを管理するオブジェクト
TSXLightGroup = class(TList)
private
FOwner: TDXDraw;
FCapacity: DWord; //管理するライトの数
FLights: array of TSXLight;
//FSpecularPower:Single; //スペキュラ強度
function GetLights(idx: DWord): TSXLight;
function GetUnusedLight: TSXLight;
// procedure SetSpecularPower(const Value: Single);
public
constructor Create(DDCompo: TDXDraw; capacity: DWord);
destructor Destroy; override;
 
property Lights[idx: DWord]: TSXLight read GetLights; default;
property UnusedLight: TSXLight read GetUnusedLight; //Enabledになってない、最初のライトを返す
//property SpecularPower:Single read FSpecularPower write SetSpecularPower;
 
procedure EnableAll; //全部点ける
procedure DisableAll; //全部消す
 
procedure Recover; //解像度を変えた後などのリカバリ
end;
 
TSXMaterial = class
private
FOwner: TDXDraw;
FUpdate: Boolean;
public
Params: TD3DMATERIAL7;
constructor Create(DDCompo: TDXDraw);
 
procedure BeginUpdate; //Paramsの内容を、Direct3Dに伝えなくする
procedure EndUpdate; //Paramsの内容を、Direct3Dに伝えなくした状態を解除
 
procedure SetupDiffuse(_R, _G, _B: Single);
procedure SetupSpecular(_R, _G, _B: Single);
procedure SetupAmbient(_R, _G, _B: Single);
procedure SetupEmissive(_R, _G, _B: Single);
procedure SetupSpecularPower(pow: Single);
 
procedure SetupColors(difR, difG, difB, specR, specG, specB, ambR, ambG, ambB, emsR, emsG, emsB, pow: Single);
end;
 
//メッシュ描画キューに入れる情報
TSXMeshInfo = record
frame: TSXFrame; //そのメッシュを描こうとしたフレームはどれ?
mesh: TSXMesh; //メッシュ
mat: TD3DMatrix; //変換行列
tex: TDirect3DTexture2; //テクスチャ
mtrl: TD3DMATERIAL7; //マテリアル
lighting: Boolean; //光源計算する/しない
OnRender: TSXRenderMeshEvent;
end;
 
//ビルボード描画キューに入れる情報
TSXBillboardInfo = record
ref: TSXFrame; //基準フレーム
pos: TD3DVector; //基準フレーム内での位置
tex: TDirect3DTexture2; //テクスチャ
pts: array[0..3] of TSXVertexBB; //頂点データ
end;
 
//レンダリングの順序を保つためのバッファ、透明体かそうでないかで順序を変える。
//Render order to maintain the buffer, or not change the order in a transparent body.
TSXRenderingQueue = class
private
FOwner: TDXDraw; //色々お世話になるDDDDオブジェクト
Scene: TSXScene; //この
 
MeshQueue: array of TSXMeshInfo;
BillboardQueue: array of TSXBillboardInfo;
 
FMeshCapacity: Integer; //メッシュを情報蓄える容量
FBillboardCapacity: Integer;
 
FMeshCount: Integer; //キューに入ってる数
FBillboardCount: Integer;
 
procedure SetBillBoardCapacity(const Value: Integer);
procedure SetMeshCapacity(const Value: Integer); //ビルボードについての情報を蓄える容量
public
constructor Create(AOwner: TDXDraw; _Scene: TSXScene);
destructor Destroy; override;
procedure PushMesh(mesh: TSXMesh; frame: TSXFrame; mat: TD3DMatrix; tex: TDirect3DTexture2; mtrl: TD3DMATERIAL7; event: TSXRenderMeshEvent); //メッシュ
procedure PushBillboard(ref: TSXFrame; pos: TD3DVector; tex: TDirect3DTexture2; pts: array of TSXVertexBB); //ビルボード
procedure Render(viewMat: TD3DMATRIX; viewParam: TD3DVIEWPORT7); //レンダリング
procedure Flush; //レンダリングせず、バッファの中を空に **Without rendering the buffer to empty
 
property MeshCapacity: Integer read FMeshCapacity write SetMeshCapacity;
property BillboardCapacity: Integer read FBillboardCapacity write SetBillBoardCapacity;
property MeshCount: Integer read FMeshCount;
property BillboardCount: Integer read FBillboardCount;
end;
 
{Renderer of the primitive}
 
TSXPrimitiveRec = packed record
Texture: TDirect3DTexture2; //テクスチャ
Bound: array[0..3] of TD3DTLVertex; //四角形
ZOrder: Integer; //Zオーダ
BlendMode: TRenderType; //ブレンドモード
end;
PPrimitive = ^TSXPrimitiveRec;
 
TSXTextureCoordRec = packed record
Texture: TDirect3DTexture2;
Top, Left, Bottom, Right: Single; //テクスチャ座標
end;
PTextureCoord = ^TSXTextureCoordRec;
 
TSingleRect = packed record
Left, Top, Right, Bottom: Single;
end;
 
TSXPrimitiveRenderer = class
private
FDXDraw: TDXDraw;
FZMax: Integer; //Zオーダの最大値
FMaxPrimitives: Integer; //格納できるTLVの最大値
 
ZSortBuf: ^Integer; //Zソート用バッファ
ZSortCount: ^Integer; //Zソート用カウンタ
PrimBuf: PPrimitive; //プリミティブ入れ
PrimCount: Integer; //現在PrimBufに入ってるプリミティブの数
Patterns: PTextureCoord; //テクスチャパターン
FNPrims: Integer; //最後にUpdateメソッドを発行した際の、プリミティブの数
FColorKey: Boolean; //カラーキーによる抜き色を行う?
procedure setZMax(v: Integer);
public
constructor Create(DDCompo: TDXDraw; PrimitiveCount: Integer; PatternCount: Integer);
destructor Destroy; override;
property ZMax: Integer read FZMax write setZMax;
 
procedure SetPattern(idx: Integer; Tex: TDirect3DTexture2; Coord: TRect); //パターンとしてTexのCoordで示される範囲を登録
 
procedure Push(Tex: TDirect3DTexture2; p1, p2, p3, p4: TD3DTLVertex; Z: Integer; blend: TRenderType); //TLVertexで四角形を入れる
procedure Push2D(Tex: TDirect3DTexture2; p1, p2, p3, p4: TD2DVector; Z: Integer; blend: TRenderType; col: DWord); //2D的な四角形
 
procedure PushPattern(iPat: Integer; p1, p2, p3, p4: TD3DHVector; Z: Integer; blend: TRenderType; col: DWord); //パターンをプッシュ(3次元)
procedure PushPattern2D(iPat: Integer; p1, p2, p3, p4: TD2DVector; Z: Integer; blend: TRenderType; col: DWord); //パターンをプッシュする
procedure PushPatternRect(iPat: Integer; rect: TSingleRect; Z: Integer; blend: TRenderType; col: DWord); //パターンをプッシュする(矩形)
 
procedure BeginRender; //Z値にしたがってソート
procedure RenderOneLayer(Z: Integer); //単一のZ値を持つ集合だけ描画
procedure EndRender; //スタックを空に
procedure Render; //全部描画(BeginRender~RenderOneLayer~EndRender)
 
property nPrims: Integer read FNPrims;
property ColorKey: Boolean read FColorKey write FColorKey;
 
class function SingleRect(x1, y1, x2, y2: Single): TSingleRect;
end;
 
//SXVertex作成
function SXVertex(x, y, z, nx, ny, nz: Single; dif, spec: TD3DCOLOR; tu, tv: Single): TSXVertex;
 
//SXVertexBB作成
function SXVertexBB(dx, dy: Single; col: TD3DCOLOR; tu, tv: Single): TSXVertexBB;
 
//マテリアル設定の便宜を図る関数
//Convenience function for setting material
function MakeMaterial(difR, difG, difB, specR, specG, specB, ambR, ambG, ambB, emsR, emsG, emsB, pow: Single): TD3DMATERIAL7;
 
implementation
 
type
TSXTLVertexMT = packed record
case Integer of
0: (
x, y, z, rhw: Single; //頂点
diffuse: TD3DCOLOR; //ディフューズ
specular: TD3DCOLOR; //スペキュラ
tu0, tv0: Single; //テクスチャ座標
tu1, tv1: Single; //テクスチャ座標2
);
1: (
pos: TD3DVector;
);
2: (
hgPos: TD3DHVector;
);
end;
 
const
FVF_SXTLVertexMT: DWord = (D3DFVF_XYZRHW or D3DFVF_DIFFUSE or D3DFVF_SPECULAR or D3DFVF_TEX2);
 
{ Helper functions }
 
function SXVertex(x, y, z, nx, ny, nz: Single; dif, spec: TD3DCOLOR; tu, tv: Single): TSXVertex;
begin
result.x := x;
result.y := y;
result.z := z;
result.nx := nx;
result.ny := ny;
result.nz := nz;
 
result.diffuse := dif;
result.specular := spec;
 
result.tu := tu;
result.tv := tv;
 
end;
 
function SXVertexBB(dx, dy: Single; col: TD3DCOLOR; tu, tv: Single): TSXVertexBB;
begin
result.dx := dx;
result.dy := dy;
 
result.color := col;
 
result.tu := tu;
result.tv := tv;
end;
 
{ TSXMesh }
 
//コンストラクタ
//Constructor
 
constructor TSXMesh.Create(AOwner: TDXDraw);
begin
inherited Create;
 
FOwner := AOwner;
FVBuf := nil;
SetLength(FIndices, 0);
FIndexCount := 0;
FFaceCount := 0;
FVertexCount := 0;
VertexKeepBuf := nil;
 
FVertexSize := sizeof(TSXVertex);
FVFFlags := FVF_SXVERTEX;
 
FLocked := False;
FRecovery := False;
 
end;
 
//デストラクタ
//Destructor
 
destructor TSXMesh.Destroy;
begin
if FVBuf <> nil then
FVBuf := nil; //._Release;
 
if VertexKeepBuf <> nil then
FreeMem(VertexKeepBuf);
 
FIndices := nil;
 
inherited;
end;
 
//現在のVertexBufferの状態を保持
//Currently holds the state of VertexBuffer
 
procedure TSXMesh.KeepVB;
begin
if FVBuf <> nil then
begin
//バッファサイズの変更
//Resizing of the buffer
if VertexKeepBuf <> nil then
FreeMem(VertexKeepBuf);
VertexKeepBuf := AllocMem(VertexSize * FVertexCount);
 
Self.Lock;
Move(FPVertex^, VertexKeepBuf^, VertexSize * FVertexCount);
Self.Unlock;
end;
end;
 
//保存したVertexBufferの状態を復元
//Restore the state saved VertexBuffer
 
 
procedure TSXMesh.RecoverVB;
begin
 
if FVBuf <> nil then
begin
//リカバリ期間・開始
//Recovery period begins
FRecovery := True;
FVBuf := nil;
 
SetSize(FVertexCount, FIndexCount);
 
Self.Lock;
Move(VertexKeepBuf^, FPVertex^, VertexSize * FVertexCount);
Self.Unlock;
 
FreeMem(VertexKeepBuf);
VertexKeepBuf := nil;
FRecovery := False;
//リカバリ期間・終了
//Recovery period ends
end;
end;
 
//DPで描画
//Simple DP draw
 
procedure TSXMesh.Draw(dwFlags: DWord);
var
ofs: Word;
nIs: Word;
begin
ofs := 0;
while ofs < FIndexCount do
begin
 
nIs := FIndexCount - ofs;
if nIs > DIV_VERTICES then
nIs := DIV_VERTICES;
 
FOwner.D3DDevice7.DrawIndexedPrimitiveVB(
D3DPT_TRIANGLELIST, FVBuf, 0, FVertexCount, FIndices[ofs], nIs, dwFlags);
 
Inc(ofs, nIs);
end;
end;
 
//DPで描画
//Draw DP strem of primitives
 
procedure TSXMesh.DrawPartial(start: Word; count: Word; dwFlags: DWord);
begin
FOwner.D3DDevice7.DrawIndexedPrimitiveVB(
D3DPT_TRIANGLELIST, FVBuf, 0, FVertexCount, FIndices[start], count, dwFlags);
end;
 
//インデクス操作
//Check index
 
function TSXMesh.GetIndex(idx: Word): Word;
begin
if idx >= FIndexCount then
begin
//DDDD_PutDebugMessage('SXLib: 範囲外の頂点インデクスを参照しようとしました');
result := 0;
exit;
end;
 
result := FIndices[idx];
end;
 
procedure TSXMesh.SetIndex(idx: Word; const Value: Word);
begin
if idx >= FIndexCount then
begin
//DDDD_PutDebugMessage('SXLib: 範囲外の頂点インデクスを設定しようとしました');
exit;
end;
 
FIndices[idx] := Value;
end;
 
//頂点操作
//Operation on Vertex
 
function TSXMesh.GetVertex(idx: Word): Pointer;
var
pV: Pointer;
ofs: DWord;
lpdwSize: Cardinal;
begin
//範囲チェック
//check range
if idx >= FVertexCount then
begin
//DDDD_PutDebugMessage('SXLib: 範囲外の頂点を参照しようとしました');
result := nil;
exit;
end;
 
//ロックされていないなら、ロック。ロックされてるなら、前に得たポインタをゲット
//when is unlocked, then lock there
if not FLocked then
begin
if FVBuf.Lock(DDLOCK_READONLY or DDLOCK_WAIT, pV, lpdwSize) <> DD_OK then
begin
//DDDD_PutDebugMessage('SXLib: VertexBufferがロックできません');
Halt;
end;
end
else
pV := FPVertex;
 
//返り値に格納
//calc place of vertices
ofs := idx * VertexSize;
asm
mov eax,ofs;
add pV,eax;
end;
result := pV;
 
//アンロック
//unlock
if not FLocked then
begin
if FVBuf.Unlock <> DD_OK then
begin
//DDDD_PutDebugMessage('SXLib: VertexBufferがアンロックできません');
Halt;
end;
end;
 
end;
 
procedure TSXMesh.SetVertex(idx: Word; const Value: Pointer);
var
ofs: DWord;
pV: ^TSXVertex;
lpdwSize: Cardinal;
begin
//範囲チェック
//check range
if idx >= FVertexCount then
begin
//DDDD_PutDebugMessage('SXLib: 範囲外の頂点を変更しようとしました');
exit;
end;
 
//ロックされていないなら、ロック。ロックされてるなら、前に得たポインタをゲット
//Test when unlocked, and after test lock
if not FLocked then
begin
if FVBuf.Lock(DDLOCK_WRITEONLY or DDLOCK_WAIT, Pointer(pV), lpdwSize) <> DD_OK then
begin
//DDDD_PutDebugMessage('SXLib: VertexBufferがロックできません');
Halt;
end;
end
else
pV := FPVertex;
 
//格納するっす
//physic size of vertices stream
ofs := idx * VertexSize;
asm
mov eax,ofs;
add pV,eax;
end;
Move(Value^, pV^, VertexSize);
 
//Unlock
if not FLocked then
begin
if FVBuf.Unlock <> DD_OK then
begin
//DDDD_PutDebugMessage('SXLib: VertexBufferがアンロックできません');
Halt;
end;
end;
end;
 
//1Vertexあたりのサイズを変更
//Set size for all Vertexes
procedure TSXMesh.SetVertexSize(const Value: DWord);
begin
FVertexSize := Value;
SetSize(FVertexCount, FIndexCount);
end;
 
//ストリームから読み込み
//Reading from strem
 
procedure TSXMesh.LoadFromStream(s: TStream);
var
sign: array[0..16] of AnsiChar;
nVertices, nIndices: Word;
StartPos: Integer;
begin
 
StartPos := s.Position;
 
//シグネチャの確認
//Check of the signature
sign[16] := Chr(0);
s.ReadBuffer(sign, 16);
 
if StrPas(sign) = SX_SIGNATURE then
begin
//SX形式
FVertexSize := Sizeof(TSXVertex);
FVFFlags := FVF_SXVERTEX;
//頂点数・頂点インデクス数の設定
//Setting the number of vertices of vertex indices
s.ReadBuffer(nVertices, Sizeof(Word));
s.ReadBuffer(nIndices, Sizeof(Word));
end
else
if StrPas(sign) = SXF_SIGNATURE then
begin
//頂点数・頂点インデクス数の設定
//Setting the number of vertices of vertex indices
s.ReadBuffer(nVertices, Sizeof(Word));
s.ReadBuffer(nIndices, Sizeof(Word));
//SXFlexible format
s.ReadBuffer(FVFFlags, Sizeof(DWord));
s.ReadBuffer(FVertexSize, Sizeof(DWord));
end
else
begin
//DDDD_PutDebugMessage('SXLib: 不正なSXファイルです');
Halt;
end;
 
SetSize(nVertices, nIndices);
 
//ヘッダのスキップ
//Skip header
s.Position := StartPos + 256;
 
try
//頂点のロード
//Peak load
Lock;
s.ReadBuffer(FPVertex^, VertexSize * nVertices);
Unlock;
 
//頂点インデクスのロード
//Load indexes
s.ReadBuffer(FIndices[0], Sizeof(Word) * nIndices);
except
//DDDD_PutDebugMessage('SXLib: ストリームからの読み込み中にエラーが発生しました');
Halt;
end;
 
end;
 
//ファイルから読み込み
//Load from file by name
 
procedure TSXMesh.LoadFromFile(fileName: string);
var
fs: TFileStream;
begin
fs := nil;
 
try
fs := TFileStream.Create(filename, fmOpenRead);
except
//DDDD_PutDebugMessage('SXLib: ' + filename + ' が、開けません');
Halt;
end;
 
LoadFromStream(fs);
fs.Free;
end;
 
{$IFDEF QDA_SUPPORT}
//QDAから読み込み
procedure TSXMesh.LoadFromQDA(QDAName, QDAID: string);
var
ms: TMemoryStream;
begin
ms := nil;
 
try
ms := ExtractFromQDAFile(QDAName, QDAID);
except
//DDDD_PutDebugMessage('SXLib: ' + QDAname + ' 内の、' + QDAID + 'が抽出できません');
Halt;
end;
 
LoadFromStream(ms);
ms.Free;
end;
{$ENDIF}
 
//VertexBuffer Lock
 
function TSXMesh.Lock: Pointer;
var lpdwSize: Cardinal;
begin
if FVBuf.Lock(DDLOCK_WAIT, Pointer(FPVertex), lpdwSize) <> DD_OK then
begin
//DDDD_PutDebugMessage('SXLib: VertexBufferがロックできません');
Halt;
end;
 
result := FPVertex;
FLocked := True;
end;
 
//VertexBuffer unlock
 
procedure TSXMesh.Unlock;
begin
if FVBuf.Unlock <> DD_OK then
begin
//DDDD_PutDebugMessage('SXLib: VertexBufferがアンロックできません');
Halt;
end;
 
FLocked := False;
end;
 
//頂点配列とインデクス配列のサイズを再設定
//Reconfigure the size of the array and vertex array indices
 
procedure TSXMesh.SetSize(newVertexCount, newIndexCount: Word);
var
vbdesc: TD3DVERTEXBUFFERDESC;
begin
FVertexCount := newVertexCount;
FIndexCount := newIndexCount;
FFaceCount := newIndexCount div 3;
 
//まず、既存のVertexBufferの解放
//When exist VertexBuffer, release it
if FVBuf <> nil then
FVBuf := nil; //.Release;
 
//VertexBufferの生成
//Generate VertexBuffer
ZeroMemory(@vbdesc, Sizeof(vbdesc));
with vbdesc do
begin
dwSize := Sizeof(vbdesc);
{$IFNDEF D3D_deprecated}
if not (dtTnLHAL in FOwner.D3DDeviceTypeSet) then
dwCaps := D3DVBCAPS_SYSTEMMEMORY
else
{$ENDIF}
dwCaps := 0;
 
dwFVF := FVFFlags;
dwNumVertices := newVertexCount;
end;
FOwner.D3D7.CreateVertexBuffer(vbdesc, FVBuf, 0);
 
//頂点インデクス配列の設定
//Vertex set of the array index
 
if not FRecovery then
SetLength(FIndices, newIndexCount);
 
end;
 
//最適かするっ。ロックとかはできなくなるよ
//Optimize, cannot be locked
procedure TSXMesh.Optimize;
begin
FVBuf.Optimize(FOwner.D3DDevice7, 0);
end;
 
{ TSXFrame }
 
constructor TSXFrame.Create(parentFrame: TSXFrame);
begin
inherited Create;
 
//親子関係の初期化
//Initialize parent-child relationship
FAncestors := TSXFrameList.Create;
if ParentFrame <> nil then
begin
//Ancestral copy of the list
FAncestors.Assign(parentFrame.Ancestors); //先祖リストのコピー
//Fathers at the end of the list, put the parent
FAncestors.Add(parentFrame); //先祖リストの末尾に、親を入れる
//Parents put their children to the list
ParentFrame.Children.Add(Self); //親の子リストに自分をつける
end;
 
FChildren := TSXFrameList.Create;
FParent := parentFrame;
 
FBindMaterial := False;
FBindRenderState := False;
FBindTexture := False;
 
 
//変数とかの初期化
//Variable Or First Initialization
 
FMatrix := D3DUtil_SetIdentityMatrix;
FMeshMatrix := D3DUtil_SetIdentityMatrix;
 
BlendMode := rtDraw;
Material := MakeMaterial(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0);
 
Visibility := sxvShow;
Lighting := True;
Specular := True;
 
 
OnRenderMesh := nil;
Mesh := nil;
Texture := nil;
 
end;
 
destructor TSXFrame.Destroy;
begin
inherited;
 
while Children.Count > 0 do
begin //This child frame is recursively Freed
Children[0].Free; //これで、再帰的に子フレームがFreeされる
end;
 
//リストオブジェクトの解放
//Object free list
 
FChildren.Free;
FAncestors.Free;
 
//親のリストから自分をはずす
//Remove yourself from the list of parents
 
if Parent <> nil then
Parent.Children.Delete(Parent.Children.IndexOf(Self));
 
end;
 
//自分の座標→ワールド座標 のための変換行列を得る
//To obtain the world coordinate transformation matrix → coordinate their
 
function TSXFrame.GetWorldMatrix: TD3DMATRIX;
var
mat: TD3DMATRIX;
i: Integer;
begin
 
mat := FMatrix;
 
//祖先のマトリクスを 親→祖父… の順に乗じていく。
//Ancestors[0] はNilであり、途中にNilは入らないという前提の下に計算
// Parent → grandfather ... we multiply the matrix of the ancestral order.
// Ancestors [0] is not Nil, Nil way under the assumption that the fit is calculated
 
for i := Ancestors.Count - 1 downto 1 do
begin
{$IFDEF USE_S_MATHPACK}
mat := NowCompositeMatrix(mat, Ancestors[i].FMatrix);
{$ELSE}
D3DMath_MatrixMultiply(mat, FMatrix, Ancestors[i].FMatrix)
{$ENDIF}
end;
 
result := mat;
end;
 
//…Z軸をtargetフレーム内の座標posを向ける。worldフレームのY軸をupベクトルに指定し、Y軸のZ軸回りの傾きをbank度とする
// Z axis toward the target coordinates in the frame pos. Y-axis of world frame specified in the up vector, Y and Z axis tilt of the axis around which at bank
 
procedure TSXFrame.LookAt(target: TSXFrame; const pos: TD3DVector; world: TSXFrame; const bank: Integer);
var
vRel: TD3DVECTOR; //Targetとの相対座標 //Target coordinates to relative
vecCeil: TD3Dvector; //天井のベクトル //Vector Ceiling
vecX, vecY, vecZ: TD3DVECTOR;
normX: Single; //X軸の長さ(天井とZが平行かどうかのチェック用)
//The length of the X-axis (Z and for checking whether the ceiling parallel)
begin
 
{
//targetのposは、自分の座標系でどこなのか
vRel:=WorldToLocal(target.LocalToWorld(pos));
 
//向き = Z軸ベクトル
vecZ:=NowNormalize(vRel);
 
//YZ平面にvRelを射影して、X軸と外積を取って新しいY軸を得る
vecY:=NowCrossProduct(Vector(0,vecZ.Y,vecZ.Z), Vector(1,0,0));
 
vecY:=NowNormalize(vecY);
 
SetOrientation(Self, vecZ, vecY);
}
 
 
//targetのposは、自分の座標系でどこなのか
//pos of target, or a coordinate system where one
 
vRel := WorldToLocal(target.LocalToWorld(pos));
 
//向き = Z軸ベクトル
//Direction = Z axis vector
 
{$IFDEF USE_S_MATHPACK}
vecZ := NowNormalize(vRel);
{$ELSE}
vecZ := D3DMath_VecNormalize(vRel);
{$ENDIF}
//天井の向き = worldのY軸
//Ceiling Direction = World of the Y-axis
 
{$IFDEF USE_S_MATHPACK}
vecCeil := NowSub(WorldToLocal(world.LocalToWorld(Vector(0, 1, 0))), WorldToLocal(world.LocalToWorld(Vector(0, 0, 0))));
vecCeil := NowNormalize(vecCeil);
{$ELSE}
vecCeil := D3DMath_Vec3Subtract(WorldToLocal(world.LocalToWorld(MakeD3DVector(0, 1, 0))), WorldToLocal(world.LocalToWorld(MakeD3DVector(0, 0, 0))));
vecCeil := D3DMath_VecNormalize(vecCeil);
{$ENDIF}
 
//天井とZで外積を取って、Xの向きとする
//Taking the cross product in the ceiling and Z and the direction of the X
 
{$IFDEF USE_S_MATHPACK}
vecX := NowCrossProduct(vecCeil, vecZ);
{$ELSE}
vecX := D3DMath_Vec3Cross(vecCeil, vecZ);
{$ENDIF}
 
//天井とZが平行な場合、右耳の方向をworldのX軸にする
//And Z is parallel to the ceiling, the direction of the X-axis of the world right ear
{$IFDEF USE_S_MATHPACK}
normX := NowLength(vecX);
{$ELSE}
normX := D3DMath_Vec3Length(vecX);
{$ENDIF}
if normX < 0.0001 then
{$IFDEF USE_S_MATHPACK}
vecX := NowSub(WorldToLocal(world.LocalToWorld(Vector(1, 0, 0))), WorldToLocal(world.LocalToWorld(Vector(0, 0, 0))));
{$ELSE}
vecX := D3DMath_Vec3Subtract(WorldToLocal(world.LocalToWorld(MakeD3DVector(1, 0, 0))), WorldToLocal(world.LocalToWorld(MakeD3DVector(0, 0, 0))));
{$ENDIF}
 
{$IFDEF USE_S_MATHPACK}
vecX := NowNormalize(vecX);
{$ELSE}
vecX := D3DMath_VecNormalize(vecX);
{$ENDIF}
 
//XとZで外積を取って、Yの向きとする
//Taking the cross product in X and Z direction and the Y
 
{$IFDEF USE_S_MATHPACK}
vecY := NowNormalize(NowCrossProduct(vecZ, vecX));
{$ELSE}
vecY := D3DMath_VecNormalize(D3DMath_Vec3Cross(vecZ, vecX));
{$ENDIF}
 
//以上で姿勢の計算完了~セット
//Complete set - at least calculate the position
 
SetOrientation(Self, vecZ, vecY);
 
//バンク
//Bank
if bank <> 0 then
{$IFDEF USE_S_MATHPACK}
SetTransform(Self, NowRotZMatrix(bank));
{$ELSE}
begin
SetTransform(Self, D3DUtil_SetRotateZMatrix(bank));
end;
{$ENDIF}
end;
 
//refに対する変換行列の設定
 
procedure TSXFrame.SetTransform(ref: TSXFrame; const mat: TD3DMATRIX);
begin
 
if ref = Self then
begin
//自分への変換行列
{$IFDEF USE_S_MATHPACK}
FMatrix := NowCompositeMatrix(mat, FMatrix);
{$ELSE}
FMatrix := D3DMath_MatrixMultiply(mat, FMatrix)
{$ENDIF}
 
 
end
else
if ref = Parent then
begin
//親への変換行列
//Transformation matrix to the parent
FMatrix := mat;
 
end
else
begin
 
//自分→ref→ワールド→親
//Ones to ref to World to Parent
if Parent <> nil then
begin
if ref <> nil then
{$IFDEF USE_S_MATHPACK}
FMatrix := NowCompositeMatrix(
NowCompositeMatrix(mat, ref.WorldMatrix),
NowInvMatrix(Parent.WorldMatrix)
)
{$ELSE}
begin
FMatrix := D3DMath_MatrixMultiply(D3DMath_MatrixMultiply(mat, WorldMatrix), D3DMath_MatrixInvert(Parent.WorldMatrix))
end
{$ENDIF}
else
{$IFDEF USE_S_MATHPACK}
FMatrix := NowCompositeMatrix(mat, NowInvMatrix(Parent.WorldMatrix));
{$ELSE}
begin
FMatrix := D3DMath_MatrixMultiply(mat, D3DMath_MatrixInvert(Parent.WorldMatrix));
end
{$ENDIF}
end
else
begin
if ref <> nil then
{$IFDEF USE_S_MATHPACK}
FMatrix := NowCompositeMatrix(mat, ref.WorldMatrix)
{$ELSE}
begin
FMatrix := D3DMath_MatrixMultiply(mat, ref.WorldMatrix)
end
{$ENDIF}
else
FMatrix := mat;
end;
end;
end;
 
//refに対する変換行列の取得
//ref to get the transformation matrix
 
function TSXFrame.GetTransform(ref: TSXFrame): TD3DMATRIX;
begin
 
if ref = Self then
begin
//自分への変換を得る…単位行列に決まってる。
//Their conversion to get ... I decided the matrix.
 
result := D3DUtil_SetIdentityMatrix;
 
end
else
if ref = Parent then
begin
 
//親へのオリエンテーションを得る
//Get to the parent orientation
 
result := FMatrix;
 
end
else
begin
 
//自分→ワールド→ref
//Ones to World to Ref
if ref <> nil then
{$IFDEF USE_S_MATHPACK}
result := NowCompositeMatrix(WorldMatrix, NowInvMatrix(ref.WorldMatrix))
{$ELSE}
begin
Result := D3DMath_MatrixMultiply(WorldMatrix, D3DMath_MatrixInvert(Parent.WorldMatrix));
end
{$ENDIF}
else
result := WorldMatrix;
end;
end;
 
//姿勢の設定
//Setting position
 
procedure TSXFrame.SetOrientation(ref: TSXFrame; const vecZ: TD3DVector;
const vecY: TD3DVector);
var
tmpMat: TD3DMATRIX; //refフレームとの相対変換行列 //relative to ref frame transformation matrix
vTrans: array[0..3] of Single; //平行移動成分の保存用 //Translation component storage
vecX: TD3DVECTOR;
begin
{$IFDEF USE_S_MATHPACK}
vecX := NowNormalize(NowCrossProduct(vecY, vecZ));
{$ELSE}
vecX := D3DMath_VecNormalize(D3DMath_Vec3Cross(vecY, vecZ));
{$ENDIF}
if ref = Parent then
begin
 
//親への姿勢を作るだけなら、簡単
//If you just make a commitment to parents, simply
 
with FMatrix do
begin
_11 := vecX.X; _12 := vecX.Y; _13 := vecX.Z;
_21 := vecY.X; _22 := vecY.Y; _23 := vecY.Z;
_31 := vecZ.X; _32 := vecZ.Y; _33 := vecZ.Z;
end;
 
end
else
begin
 
//平行移動成分の保存
//Save the translation component
 
vTrans[0] := FMatrix._41;
vTrans[1] := FMatrix._42;
vTrans[2] := FMatrix._43;
 
//変換
//transformation
with tmpMat do
begin
_11 := vecX.X; _12 := vecX.Y; _13 := vecX.Z; _14 := 0;
_21 := vecY.X; _22 := vecY.Y; _23 := vecY.Z; _24 := 0;
_31 := vecZ.X; _32 := vecZ.Y; _33 := vecZ.Z; _34 := 0;
_41 := vTrans[0]; _42 := vTrans[1]; _43 := vTrans[2]; _44 := 1;
end;
 
SetTransform(ref, tmpMat);
 
//Restoring the translation component
 
with FMatrix do
begin
_41 := vTrans[0]; _42 := vTrans[1]; _43 := vTrans[2];
end;
 
end;
 
end;
 
//位置の設定
//Set Position
 
procedure TSXFrame.SetTranslation(ref: TSXFrame; const pos: TD3Dvector);
var
tmpMat: TD3DMATRIX; //refフレームとの相対変換行列 //relative to ref frame transformation matrix
origMat: TD3DMATRIX; //For postural
 
begin
 
if ref = Parent then
begin
 
//親へのトランスレーションを作るだけなら、簡単
//If you only make the translation to the parent easily
 
with FMatrix do
begin
_41 := pos.X; _42 := pos.Y; _43 := pos.Z;
end;
 
end
else
begin
 
origMat := FMatrix;
tmpMat := FMatrix;
 
with tmpMat do
begin
_41 := pos.X; _42 := pos.Y; _43 := pos.Z;
end;
 
SetTransform(ref, tmpMat);
 
with FMatrix do
begin
_11 := OrigMat._11; _12 := OrigMat._12; _13 := OrigMat._13;
_21 := OrigMat._21; _22 := OrigMat._22; _23 := OrigMat._23;
_31 := OrigMat._31; _32 := OrigMat._32; _33 := OrigMat._33;
end;
end;
end;
 
procedure TSXFrame.GetOrientation(ref: TSXFrame; var vecZ,
vecY: TD3DVector);
var
tmpMat: TD3DMATRIX; //Results calculated buffer
begin
 
tmpMat := GetTransform(ref);
 
with vecY, tmpMat do
begin
X := _21; Y := _22; Z := _23;
end;
 
with vecZ, tmpMat do
begin
X := _31; Y := _32; Z := _33;
end;
end;
 
//姿勢だけをマトリクスで与える
//Just give the attitude matrix
 
procedure TSXFrame.SetOrientationMatrix(ref: TSXFrame;
const mat: TD3DMATRIX);
var
pushedV: TD3DVector; //平行移動分保存用 //Save Translates for minutes
begin
 
//保存
//Save
with pushedV do
begin
x := FMatrix._41; y := FMatrix._42; z := FMatrix._43;
end;
 
if ref = Self then
begin
//自分への変換行列
//His conversion matrix
 
{$IFDEF USE_S_MATHPACK}
FMatrix := NowCompositeMatrix(mat, FMatrix);
{$ELSE}
FMatrix := D3DMath_MatrixMultiply(mat, FMatrix)
{$ENDIF}
 
end
else
if ref = Parent then
begin
//親への変換行列
//Transformation matrix to the parent
 
FMatrix := mat;
 
end
else
begin
 
//自分→ref→ワールド→親
//My→ref →World →Parent
 
if Parent <> nil then
begin
if ref <> nil then
{$IFDEF USE_S_MATHPACK}
FMatrix := NowCompositeMatrix(
NowCompositeMatrix(mat, ref.WorldMatrix),
NowInvMatrix(Parent.WorldMatrix))
{$ELSE}
begin
FMatrix := D3DMath_MatrixMultiply(D3DMath_MatrixMultiply(mat, ref.WorldMatrix), D3DMath_MatrixInvert(Parent.WorldMatrix))
end
{$ENDIF}
else
{$IFDEF USE_S_MATHPACK}
FMatrix := NowCompositeMatrix(mat, NowInvMatrix(Parent.WorldMatrix));
{$ELSE}
begin
FMatrix := D3DMath_MatrixMultiply(mat, D3DMath_MatrixInvert(Parent.WorldMatrix));
end
{$ENDIF}
end
else
begin
if ref <> nil then
{$IFDEF USE_S_MATHPACK}
FMatrix := NowCompositeMatrix(mat, ref.WorldMatrix)
{$ELSE}
begin
FMatrix := D3DMath_MatrixMultiply(mat, ref.WorldMatrix)
end
{$ENDIF}
else
FMatrix := mat;
end;
 
end;
 
//復元
//Restore
with pushedV do
begin
FMatrix._41 := x; FMatrix._42 := y; FMatrix._43 := z;
end;
end;
 
 
function TSXFrame.GetTranslation(ref: TSXFrame): TD3DVECTOR;
var
tmpMat: TD3DMATRIX; //結果算出用バッファ Results calculated buffer
begin
 
if ref = Parent then
begin
result.X := FMatrix._41;
result.Y := FMatrix._42;
result.Z := FMatrix._43;
end
else
begin
tmpMat := GetTransform(ref);
result.X := tmpMat._41;
result.Y := tmpMat._42;
result.Z := tmpMat._43;
end;
 
end;
 
//フレーム内の座標→ワールド座標
//Coordinates in world coordinate frame
 
function TSXFrame.LocalToWorld(vec: TD3DVector): TD3DVector;
begin
{$IFDEF USE_S_MATHPACK}
Result := NowHeteroginize(NowTransform(NowHomoginize(vec), WorldMatrix));
{$ELSE}
Result := D3DMath_VecHeterogenize(D3DMath_VecTransform(D3DMath_VecHomogenize(vec), WorldMatrix))
{$ENDIF}
end;
 
//ワールド座標→フレーム内の座標
//Coordinates in world coordinate frame
 
function TSXFrame.WorldToLocal(vec: TD3DVector): TD3DVector;
begin
{$IFDEF USE_S_MATHPACK}
Result := NowHeteroginize(NowTransform(NowHomoginize(vec), NowInvMatrix(WorldMatrix)));
{$ELSE}
Result := D3DMath_VecHeterogenize(D3DMath_VecTransform(D3DMath_VecHomogenize(vec), D3DMath_MatrixInvert(WorldMatrix)));
{$ENDIF}
end;
 
//親フレームの変更
//Changing the parent frame
 
procedure TSXFrame.SetParent(const Value: TSXFrame);
 
//先祖リストを再帰的に修正する
//Fix recursive ancestor list
 
procedure RebuildAncestors(me: TSXFrame);
var
i: Integer;
begin
for i := 0 to me.Children.Count - 1 do
begin
//ヲレの先祖を先祖と崇めなさい
//Ancestor worship ancestors and record your Wo
 
me.Children[i].Ancestors.Assign(me.Ancestors);
//ヲレを親と崇めなさい
//Users report your parents to revere
 
me.Children[i].Ancestors.Add(me);
//子々孫々に渡ってそうしたまへ
//Sometimes we do that across to our children grandchildren
 
RebuildAncestors(me.Children[i]);
end;
end;
 
begin
//元の親のリストから外す
//Removed from the list of the original parent
 
if FParent <> nil then
FParent.Children.Delete(FParent.Children.IndexOf(Self));
 
 
if Value <> nil then
begin
//新しい親のリストに加える
//Add to the list of new parent
 
Value.Children.Add(Self);
//先祖リストを変える
//Changing the list of ancestors
 
Ancestors.Assign(Value.Ancestors);
Ancestors.Add(Value);
end
else
begin
Ancestors.Clear;
end;
 
//自分に子供がいるなら、それらの先祖リストも変える
//If you have children yourself, they also change the list of ancestors
 
RebuildAncestors(Self);
 
FParent := Value;
end;
 
//このフレームをカメラにした場合のビュー行列を計算
//When calculating the view matrix of the camera frame
 
function TSXFrame.ViewMatrix: TD3DMatrix;
begin
{$IFDEF USE_S_MATHPACK}
Result := NowInvMatrix(WorldMatrix);
{$ELSE}
Result := D3DMath_MatrixInvert(WorldMatrix)
{$ENDIF}
end;
 
{ TSXFrameList }
 
//コピー
//Copy
 
procedure TSXFrameList.Assign(source: TSXFrameList);
var
i: Integer;
begin
Self.Clear;
 
for i := 0 to source.Count - 1 do
begin
Self.Add(Pointer(source.Frames[i]));
end;
end;
 
constructor TSXFrameList.Create;
begin
inherited;
end;
 
destructor TSXFrameList.Destroy;
begin
inherited;
end;
 
function TSXFrameList.GetFrame(idx: Integer): TSXFrame;
begin
result := Items[idx];
end;
 
procedure TSXFrameList.SetFrame(idx: Integer; const Value: TSXFrame);
begin
Items[idx] := Pointer(Value);
end;
 
{ TSXScene }
 
constructor TSXScene.Create(DDCompo: TDXDRaw);
begin
inherited Create;
 
AlphaQueue := TSXRenderingQueue.Create(DDCompo, Self);
OpaqueQueue := TSXRenderingQueue.Create(DDCompo, Self);
AddQueue := TSXRenderingQueue.Create(DDCompo, Self);
SubQueue := TSXRenderingQueue.Create(DDCompo, Self);
 
{
MeshProcessor:=TSXMesh.Create(DDCompo);
MeshProcessor.VertexSize:=Sizeof(D3DTLVERTEX);
MeshProcessor.FVF:=D3DFVF_TLVERTEX;
MeshProcessor.SetSize(65535,65535); //(^^;)
 
MeshProcessorMT:=TSXMesh.Create(DDCompo);
MeshProcessorMT.VertexSize:=Sizeof(TSXTLVertexMT);
MeshProcessorMT.FVF:=FVF_SXTLVertexMT;
MeshProcessorMT.SetSize(65535,65535);
}
 
FCamera := nil;
FOwner := DDCompo;
end;
 
destructor TSXScene.Destroy;
begin
 
AlphaQueue.Free;
OpaqueQueue.Free;
AddQueue.Free;
SubQueue.Free;
 
//MeshProcessor.Free;
//MeshProcessorMT.Free;
 
inherited;
end;
 
//描画
 
procedure TSXScene.Render(rootFrame: TSXFrame);
var
viewMat: TD3DMATRIX;
curTexture: TDirect3DTexture2;
curMaterial: TD3DMATERIAL7;
curBlendMode: TRenderType;
 
procedure QueingFrame(frame: TSXFrame; const mat: TD3DMATRIX; RSBind, TexBind, MatBind: Boolean);
var
i: Integer;
meshM: TD3DMATRIX;
begin
 
//子フレーム無し、かつ、描画するメッシュなしなら、何もしない
//Visibilityが「子供もひっくるめて隠す」でも何もしない
//ただし、ビルボードがくっついてる時は、マトリクスの合成だけ行う
if (not frame.BBAttached) then
if ((frame.Children.Count = 0) and (frame.Mesh = nil)) or (frame.Visibility = sxvHide) then
exit;
 
//変換行列の計算
{$IFDEF USE_S_MATHPACK}
frame.RenderedMatrix := NowCompositeMatrix(frame.Matrix, mat);
{$ELSE}
frame.RenderedMatrix := D3DMath_MatrixMultiply(frame.Matrix, mat);
{$ENDIF}
 
 
//メッシュの描画
if frame.Mesh <> nil then
begin
{$IFDEF USE_S_MATHPACK}
meshM := NowCompositeMatrix(frame.MeshMatrix, frame.RenderedMatrix);
{$ELSE}
meshM := D3DMath_MatrixMultiply(frame.MeshMatrix, frame.RenderedMatrix);
{$ENDIF}
//テクスチャがあるなら、貼り付ける。「親のテクスチャ使用」を強制されてないなら
if not TexBind then
curTexture := frame.Texture;
 
//マテリアルを設定する
if not MatBind then
curMaterial := frame.Material;
 
//レンダリングステートの設定
if not RSBind then
curBlendMode := frame.BlendMode;
 
//キューに放り込む
if frame.Visibility = sxvShow then
begin
case curBlendMode of
rtAdd: AddQueue.PushMesh(frame.Mesh, frame, meshM, curTexture, curMaterial, frame.OnRenderMesh);
rtBlend: AlphaQueue.PushMesh(frame.Mesh, frame, meshM, curTexture, curMaterial, frame.OnRenderMesh);
rtDraw: OpaqueQueue.PushMesh(frame.Mesh, frame, meshM, curTexture, curMaterial, frame.OnRenderMesh);
rtSub: SubQueue.PushMesh(frame.Mesh, frame, meshM, curTexture, curMaterial, frame.OnRenderMesh);
end;
end;
end;
 
//子供の描画
for i := 0 to frame.Children.Count - 1 do
begin
QueingFrame(frame.Children[i], frame.RenderedMatrix, RSBind or frame.BindRenderState, TexBind or frame.BindTexture, MatBind or frame.BindMaterial);
end;
end;
 
begin
 
if FCamera = nil then
begin
//DDDD_PutDebugMessage('SXLib: カメラフレームが設定されていません');
exit;
end;
 
//ビュー行列の作成…(ワールド座標系でのカメラフレームの姿勢)の逆
//Create a view matrix (camera position in world coordinate frame), the inverse
 
viewMat := CameraFrame.ViewMatrix;
 
FOwner.D3DDevice7.SetTransform(D3DTRANSFORMSTATE_VIEW, viewMat);
 
//再帰的にキューに入れる
//Recursively queued
 
if rootFrame.Parent = nil then
QueingFrame(rootFrame, D3DUtil_SetIdentityMatrix, false, false, false)
else
QueingFrame(rootFrame, rootFrame.Parent.WorldMatrix, false, false, false);
 
{ キューに入ってる物体を描く }
{ I draw the object in the queue }
 
/////不透明体
//Opaque
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_ZENABLE, 1); //Z比較あり
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, 1); //Z書き込みあり
 
//ブレンドなし
//No Blending
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_BLENDENABLE, 0);
 
OpaqueQueue.Render(viewMat, FVP);
 
/////加算合成体
//Body additive synthesis
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, 0); //Z書き込みなし
 
//ブレンドの設定
//Set of Blend
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_BLENDENABLE, 1);
 
FOwner.D3DDevice7.SetTextureStageState(0, D3DTSS_COLORARG1, DWord(D3DTA_TEXTURE));
FOwner.D3DDevice7.SetTextureStageState(0, D3DTSS_COLORARG2, DWord(D3DTA_DIFFUSE));
FOwner.D3DDevice7.SetTextureStageState(0, D3DTSS_COLOROP, DWord(D3DTOP_MODULATE));
 
FOwner.D3DDevice7.SetTextureStageState(0, D3DTSS_ALPHAARG1, DWord(D3DTA_TEXTURE));
FOwner.D3DDevice7.SetTextureStageState(0, D3DTSS_ALPHAARG2, DWord(D3DTA_DIFFUSE));
FOwner.D3DDevice7.SetTextureStageState(0, D3DTSS_ALPHAOP, DWord(D3DTOP_MODULATE));
 
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_SRCBLEND, DWord(D3DBLEND_ONE));
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_DESTBLEND, DWord(D3DBLEND_ONE));
 
AddQueue.Render(viewMat, FVP);
 
//半透明体
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_SRCBLEND, DWord(D3DBLEND_SRCALPHA));
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_DESTBLEND, DWord(D3DBLEND_INVSRCALPHA));
 
AlphaQueue.Render(viewMat, FVP);
 
//減算合成体…減算はニセ減算だけど(^^;)
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_SRCBLEND, DWord(D3DBLEND_ZERO));
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_DESTBLEND, DWord(D3DBLEND_INVSRCCOLOR));
 
SubQueue.Render(viewMat, FVP);
 
//テクスチャに何も指定しない状態で、一連のレンダリングを終える
FOwner.D3DDevice7.SetTexture(0, nil);
end;
 
procedure TSXScene.Clear(dwFlags: DWord; color: DWORD; z: Single; stencil: DWord);
var
r: TD3DRect;
begin
with r do
begin
x1 := FVP.dwX;
y1 := FVP.dwY;
x2 := FVP.dwX + FVP.dwWidth;
y2 := FVP.dwY + FVP.dwHeight;
end;
 
FOwner.D3DDevice7.Clear(1, @r, dwFlags, color, z, stencil);
end;
 
//透視変換の設定
 
procedure TSXScene.SetProjection(fov, aspect, nearZ, farZ: Single); //透視変換の設定
var
q, w, h: Single;
begin
 
q := farZ / (farZ - nearZ);
w := aspect * Cos(fov * 0.5) / Sin(fov * 0.5);
h := Cos(fov * 0.5) / Sin(fov * 0.5);
 
FProjectionMatrix := D3DUtil_SetIdentityMatrix;
 
FProjectionMatrix._11 := w; //
FProjectionMatrix._22 := h; //
FProjectionMatrix._33 := q; // Q = Zf / (Zf-Zn)
FProjectionMatrix._34 := 1.0;
FProjectionMatrix._43 := -q * nearZ; // -QZn
FProjectionMatrix._44 := 0.0;
 
FOwner.D3DDevice7.SetTransform(D3DTRANSFORMSTATE_PROJECTION, FProjectionMatrix);
end;
 
procedure TSXScene.SetViewPort(left, top, right, bottom: DWord);
begin
ZeroMemory(@FVP, sizeof(FVP));
 
with FVP do
begin
dwX := left;
dwY := top;
dwWidth := right - left;
dwHeight := bottom - top;
dvMinZ := 0;
dvMaxZ := 1.0;
end;
 
FOwner.D3DDevice7.SetViewport(FVP);
end;
 
//D3D解放(解像度変更)からのリカバリ
 
procedure TSXScene.Recover;
begin
FOwner.D3DDevice7.SetViewport(FVP);
FOwner.D3DDevice7.SetTransform(D3DTRANSFORMSTATE_PROJECTION, FProjectionMatrix);
end;
 
//ビルボードを押し込む
 
procedure TSXScene.PushBillboard(blendMode: TRenderType; ref: TSXFrame;
pos: TD3DVector; points: array of TSXVertexBB; tex: TDirect3DTexture2);
begin
case blendMode of
rtAdd: AddQueue.PushBillboard(ref, pos, tex, points);
rtBlend: AlphaQueue.PushBillboard(ref, pos, tex, points);
rtDraw: OpaqueQueue.PushBillboard(ref, pos, tex, points);
rtSub: SubQueue.PushBillboard(ref, pos, tex, points);
end;
//フラグを立てる
ref.BBAttached := True;
 
end;
 
//球体の可視判定
 
function TSXScene.SphereVisibility(ref: TSXFrame; pos: TD3DVector;
radius: Single; depth: Single): Boolean;
var
viewM: TD3DMATRIX; //ref.posを視野座標系に変換する行列
projM: TD3DMATRIX; //透視変換行列(画角ゲット用)
 
p: TD3DVector;
fovH, fovV: Single; //画角
cosFovH, sinFovH, cosFovV, sinFovV: Single;
begin
//まず、視野座標系に変換する
{$IFDEF USE_S_MATHPACK}
viewM := NowCompositeMatrix(ref.WorldMatrix, NowInvMatrix(CameraFrame.WorldMatrix));
p := NowHeteroginize(NowTransform(NowHomoginize(pos), viewM));
{$ELSE}
viewM := D3DMath_MatrixMultiply(ref.WorldMatrix, D3DMath_MatrixInvert(CameraFrame.WorldMatrix));
p := D3DMath_VecHeterogenize(D3DMath_VecTransform(D3DMath_VecHomogenize(pos), viewM));
{$ENDIF}
 
//視界の後方や、depthより遠くにあるってのは論外
if (p.z < -radius) or (p.z > depth + radius) then
begin
Result := False;
Exit;
end;
 
//縦・横の画角を求める
FOwner.D3DDevice7.GetTransform(D3DTRANSFORMSTATE_PROJECTION, projM);
fovH := ArcTan(1.0 / projM._11);
fovV := ArcTan(1.0 / projM._22);
 
//画角のSin,Cosを出しておく
SinFovH := Sin(fovH); CosFovH := Cos(fovH);
SinFovV := Sin(fovV); CosFovV := Cos(fovV);
 
//XZ平面での判定…画角分だけ球の中心を回転させた時、コーンの中心から球の中心までが、球の半径の値以下になるかを見る
if ((p.x * CosFovH - p.z * SinFovH) > radius) or ((p.x * CosFovH + p.z * SinFovH) < -radius) then
begin
Result := False;
Exit;
end;
 
//YZ平面での判定
if ((p.y * CosfovV - p.z * SinfovV) > radius) or ((p.y * CosfovV + p.z * SinfovV) < -radius) then
begin
Result := False;
Exit;
end;
 
Result := True;
end;
 
{ TSXLight }
 
constructor TSXLight.Create(DDCompo: TDXDraw; index: DWord);
begin
inherited Create;
 
FOwner := DDCompo;
FIndex := index;
FEnabled := False;
FUpdate := True;
 
//デフォ値の設定
ZeroMemory(@Params, Sizeof(Params));
with Params do
begin
dltType := D3DLIGHT_DIRECTIONAL;
 
dcvDiffuse.r := 1.0;
dcvDiffuse.g := 1.0;
dcvDiffuse.b := 1.0;
{$IFDEF USE_S_MATHPACK}
dvDirection := Vector(0, 0, 1);
{$ELSE}
dvDirection := MakeD3DVector(0, 0, 1);
{$ENDIF}
end;
end;
 
destructor TSXLight.Destroy;
begin
inherited;
end;
 
//D3Dにライトを登録
 
procedure TSXLight.SetEnabled(const Value: Boolean);
begin
FEnabled := Value;
 
FOwner.D3DDevice7.SetLight(FIndex, Params);
FOwner.D3DDevice7.LightEnable(FIndex, FEnabled);
 
end;
 
//お便利るーちんず
 
procedure TSXLight.SetupDiffuse(_R, _G, _B: Single);
begin
with Params.dcvDiffuse do
begin
dvR := _R;
dvG := _G;
dvB := _B;
end;
 
if FUpdate then
FOwner.D3DDevice7.SetLight(FIndex, Params);
end;
 
procedure TSXLight.SetupSpecular(_R, _G, _B: Single);
begin
with Params.dcvSpecular do
begin
dvR := _R;
dvG := _G;
dvB := _B;
end;
 
if FUpdate then
FOwner.D3DDevice7.SetLight(FIndex, Params);
end;
 
procedure TSXLight.SetupAmbient(_R, _G, _B: Single);
begin
with Params.dcvAmbient do
begin
dvR := _R;
dvG := _G;
dvB := _B;
end;
 
if FUpdate then
FOwner.D3DDevice7.SetLight(FIndex, Params);
end;
 
procedure TSXLight.SetupColors(difR, difG, difB, specR, specG, specB, ambR,
ambG, ambB: Single);
begin
with Params.dcvDiffuse do
begin
dvR := difR;
dvG := difG;
dvB := difB;
end;
with Params.dcvSpecular do
begin
dvR := specR;
dvG := specG;
dvB := specB;
end;
with Params.dcvAmbient do
begin
dvR := ambR;
dvG := ambG;
dvB := ambB;
end;
 
if FUpdate then
FOwner.D3DDevice7.SetLight(FIndex, Params);
end;
 
procedure TSXLight.SetupRanges(range, att0, att1, att2: Single);
begin
with Params do
begin
dvRange := range;
dvAttenuation0 := att0;
dvAttenuation1 := att1;
dvAttenuation2 := att2;
end;
 
if FUpdate then
FOwner.D3DDevice7.SetLight(FIndex, Params);
end;
 
procedure TSXLight.SetupDirectional(dir: TD3DVector);
begin
Params.dltType := D3DLIGHT_DIRECTIONAL;
Params.dvDirection := dir;
 
if FUpdate then
FOwner.D3DDevice7.SetLight(FIndex, Params);
end;
 
procedure TSXLight.SetupPoint(pos: TD3DVector);
begin
Params.dltType := D3DLIGHT_POINT;
Params.dvPosition := pos;
 
if FUpdate then
FOwner.D3DDevice7.SetLight(FIndex, Params);
end;
 
procedure TSXLight.SetupSpot(pos, dir: TD3DVector; theta, phi,
falloff: Single);
begin
Params.dltType := D3DLIGHT_SPOT;
Params.dvDirection := dir;
 
Params.dvTheta := theta;
Params.dvPhi := phi;
Params.dvFalloff := falloff;
 
if FUpdate then
FOwner.D3DDevice7.SetLight(FIndex, Params);
end;
 
//フレームの位置・向きにセット
 
procedure TSXLight.FitFrame(target: TSXFrame);
var
mat: TD3DMATRIX;
begin
 
if target = nil then
mat := D3DUtil_SetIdentityMatrix
else
mat := target.WorldMatrix;
{$IFDEF USE_S_MATHPACK}
Params.dvDirection := Vector(mat._31, mat._32, mat._33);
Params.dvPosition := Vector(mat._41, mat._42, mat._43);
{$ELSE}
Params.dvDirection := MakeD3DVector(mat._31, mat._32, mat._33);
Params.dvPosition := MakeD3DVector(mat._41, mat._42, mat._43);
{$ENDIF}
if FUpdate then
FOwner.D3DDevice7.SetLight(FIndex, Params);
end;
 
procedure TSXLight.BeginUpdate;
begin
FUpdate := False;
end;
 
procedure TSXLight.EndUpdate;
begin
FUpdate := True;
FOwner.D3DDevice7.SetLight(FIndex, Params);
end;
 
{ TSXLightGroup }
 
constructor TSXLightGroup.Create(DDCompo: TDXDraw; capacity: DWord);
var
i: Integer;
begin
inherited Create;
 
FOwner := DDCompo;
FCapacity := capacity;
SetLength(FLights, capacity);
 
for i := 0 to capacity - 1 do
begin
FLights[i] := TSXLight.Create(FOwner, i);
end;
end;
 
destructor TSXLightGroup.Destroy;
var
i: Integer;
begin
 
for i := 0 to FCapacity - 1 do
begin
FLights[i].Free;
end;
 
FLights := nil;
 
inherited;
end;
 
procedure TSXLightGroup.DisableAll;
var
i: Integer;
begin
for i := 0 to FCapacity - 1 do
begin
FLights[i].Enabled := True;
end;
end;
 
procedure TSXLightGroup.EnableAll;
var
i: Integer;
begin
for i := 0 to FCapacity - 1 do
begin
FLights[i].Enabled := False;
end;
end;
 
function TSXLightGroup.GetLights(idx: DWord): TSXLight;
begin
//範囲チェック
if idx >= FCapacity then
begin
//DDDD_PutDebugMessage('TSXLightGroup @ SXLib: 範囲外のライトを参照しようとしました');
result := nil;
exit;
end;
 
result := FLights[idx];
end;
 
 
//Enabledじゃないライトを探索
 
function TSXLightGroup.GetUnusedLight: TSXLight;
var
i: Integer;
begin
 
for i := 0 to FCapacity - 1 do
begin
if not FLights[i].Enabled then
begin
result := FLights[i];
exit;
end;
end;
 
result := nil;
end;
 
//スペキュラ強度の設定
{
procedure TSXLightGroup.SetSpecularPower(const Value: Single);
var
mtrl:D3DMATERIAL7;
begin
FSpecularPower := Value;
 
ZeroMemory(@mtrl, Sizeof(mtrl));
mtrl.power:=FSpecularPower;
 
FOwner.D3DDevice.SetMaterial(@mtrl);
end;
}
 
procedure TSXLightGroup.Recover;
var
i: Integer;
begin
 
for i := 0 to FCapacity - 1 do
begin
if FLights[i].Enabled then
FLights[i].Enabled := True;
end;
 
// SpecularPower:=FSpecularPower;
end;
 
{ TSXMatetial }
 
constructor TSXMaterial.Create(DDCompo: TDXDraw);
begin
ZeroMemory(@Params, Sizeof(Params));
FOwner := DDCompo;
FUpdate := True;
end;
 
procedure TSXMaterial.SetupAmbient(_R, _G, _B: Single);
begin
with Params.dcvAmbient do
begin
R := _R; G := _G; B := _B;
end;
 
if FUpdate then
FOwner.D3DDevice7.SetMaterial(Params);
end;
 
procedure TSXMaterial.SetupDiffuse(_R, _G, _B: Single);
begin
with Params.dcvDiffuse do
begin
R := _R; G := _G; B := _B;
end;
 
if FUpdate then
FOwner.D3DDevice7.SetMaterial(Params);
end;
 
procedure TSXMaterial.SetupEmissive(_R, _G, _B: Single);
begin
with Params.dcvEmissive do
begin
R := _R; G := _G; B := _B;
end;
 
if FUpdate then
FOwner.D3DDevice7.SetMaterial(Params);
end;
 
procedure TSXMaterial.SetupSpecular(_R, _G, _B: Single);
begin
with Params.dcvSpecular do
begin
R := _R; G := _G; B := _B;
end;
 
if FUpdate then
FOwner.D3DDevice7.SetMaterial(Params);
end;
 
procedure TSXMaterial.SetupSpecularPower(pow: Single);
begin
with Params do
begin
dvPower := pow;
end;
 
if FUpdate then
FOwner.D3DDevice7.SetMaterial(Params);
end;
 
 
procedure TSXMaterial.SetupColors(difR, difG, difB, specR, specG, specB,
ambR, ambG, ambB, emsR, emsG, emsB, pow: Single);
begin
 
with Params.dcvDiffuse do
begin
dvR := difR;
dvG := difG;
dvB := difB;
end;
with Params.dcvSpecular do
begin
dvR := specR;
dvG := specG;
dvB := specB;
end;
with Params.dcvAmbient do
begin
dvR := ambR;
dvG := ambG;
dvB := ambB;
end;
with Params.dcvEmissive do
begin
dvR := emsR;
dvG := emsG;
dvB := emsB;
end;
 
Params.dvPower := pow;
 
if FUpdate then
FOwner.D3DDevice7.SetMaterial(Params);
 
end;
 
procedure TSXMaterial.BeginUpdate;
begin
FUpdate := False;
end;
 
procedure TSXMaterial.EndUpdate;
begin
FUpdate := True;
FOwner.D3DDevice7.SetMaterial(Params);
end;
 
{ ヘルパー関数 }
 
function MakeMaterial(difR, difG, difB, specR, specG, specB, ambR, ambG, ambB, emsR, emsG, emsB, pow: Single): TD3DMATERIAL7;
begin
with Result.dcvDiffuse do
begin
dvR := difR;
dvG := difG;
dvB := difB;
dvA := 1.0;
end;
with Result.dcvSpecular do
begin
dvR := specR;
dvG := specG;
dvB := specB;
dvA := 1.0;
end;
with Result.dcvAmbient do
begin
dvR := ambR;
dvG := ambG;
dvB := ambB;
dvA := 1.0;
end;
with Result.dcvEmissive do
begin
dvR := emsR;
dvG := emsG;
dvB := emsB;
dvA := 1.0;
end;
 
Result.dvPower := pow;
end;
 
{ TSXRenderingQueue }
 
//コンストラクタ
 
constructor TSXRenderingQueue.Create(AOwner: TDXDraw; _Scene: TSXScene);
begin
inherited create;
 
FOwner := AOwner;
Scene := _Scene;
 
//デフォ値の代入
BillboardCapacity := 32;
MeshCapacity := 32;
 
FBillboardCount := 0;
FMeshCount := 0;
end;
 
//デストラクタ
 
destructor TSXRenderingQueue.Destroy;
begin
BillboardQueue := nil;
MeshQueue := nil;
 
inherited;
end;
 
//何もせずに、中身だけ消す
 
procedure TSXRenderingQueue.Flush;
begin
FBillboardCount := 0;
FMeshCount := 0;
end;
 
//ビルボードを入れる
 
procedure TSXRenderingQueue.PushBillboard(ref: TSXFrame; pos: TD3DVector;
tex: TDirect3DTexture2; pts: array of TSXVertexBB); //ビルボード
begin
//必要なら拡張する
if BillboardCount >= BillboardCapacity then
BillboardCapacity := BillboardCapacity * 2;
 
 
BillboardQueue[FBillboardCount].tex := tex;
BillboardQueue[FBillboardCount].ref := ref;
BillboardQueue[FBillboardCount].pos := pos;
Move(pts, BillboardQueue[FBillboardCount].Pts, Sizeof(TSXVertexBB) * 4); //4頂点分コピー
 
Inc(FBillboardCount);
end;
 
//メッシュを入れる
 
procedure TSXRenderingQueue.PushMesh(mesh: TSXMesh; frame: TSXFrame; mat: TD3DMatrix;
tex: TDirect3DTexture2; mtrl: TD3DMATERIAL7; event: TSXRenderMeshEvent);
begin
//必要なら拡張する
if MeshCount >= MeshCapacity then
MeshCapacity := MeshCapacity * 2;
 
MeshQueue[FmeshCount].mat := mat;
MeshQueue[FmeshCount].mesh := mesh;
MeshQueue[FmeshCount].mtrl := mtrl;
MeshQueue[FmeshCount].tex := tex;
MeshQueue[FmeshCount].OnRender := event;
MeshQueue[FMeshCount].frame := frame;
 
Inc(FMeshCount);
end;
 
//ビルボード用の情報入れをサイズを変える
 
procedure TSXRenderingQueue.SetBillBoardCapacity(const Value: Integer);
begin
FBillboardCapacity := Value;
SetLength(BillboardQueue, Value);
end;
 
//メッシュ用の情報入れをサイズを変える
 
procedure TSXRenderingQueue.SetMeshCapacity(const Value: Integer);
begin
FMeshCapacity := Value;
SetLength(MeshQueue, Value);
end;
 
//描画
 
procedure TSXRenderingQueue.Render(viewMat: TD3DMATRIX; viewParam: TD3DVIEWPORT7);
var
i, j: Integer;
prevTex: TDirect3DTexture2; //前回使ったテクスチャへの参照 //With reference to the previous texture
prevSpec: Boolean; //前回描画したものは、スペキュラを計算したか //The last drawing was either calculated specular
prevLit: Boolean; //前回描画したものは、ライティングの計算をしたか //Was drawn last, or the lighting calculations
prevFrame: TSXFrame; //直前に描画したビルボードの入ってたフレーム //I was drawn into the frame just before the billboard
center: {$IFDEF USE_S_MATHPACK}THgVector{$ELSE}TD3DHVector{$ENDIF};
pts: array[0..3] of TD3DTLVERTEX;
m: TD3DMATRIX;
projM, screenM, viewProjScreenM: TD3DMATRIX;
begin
 
//メッシュの描画
 
prevTex := nil;
FOwner.D3DDevice7.SetTexture(0, nil);
 
prevSpec := True;
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_SPECULARENABLE, DWord(True));
 
prevLit := True;
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_LIGHTING, DWord(True));
 
for i := 0 to MeshCount - 1 do
begin
 
//ライティング
if prevLit <> MeshQueue[i].Frame.Lighting then
begin
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_LIGHTING, DWord(MeshQueue[i].Frame.Lighting));
prevLit := MeshQueue[i].Frame.Lighting;
end;
 
//スペキュラつける?
if prevSpec <> MeshQueue[i].Frame.Specular then
begin
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_SPECULARENABLE, DWord(MeshQueue[i].Frame.Specular));
prevSpec := MeshQueue[i].Frame.Specular;
end;
 
//行列の設定
FOwner.D3DDevice7.SetTransform(D3DTRANSFORMSTATE_WORLD, (MeshQueue[i].mat));
 
//マテリアルの設定
FOwner.D3DDevice7.SetMaterial((MeshQueue[i].Mtrl));
 
//テクスチャがあるなら、貼り付ける。
if MeshQueue[i].tex <> prevTex then
begin
if MeshQueue[i].tex <> nil then
FOwner.D3DDevice7.SetTexture(0, MeshQueue[i].tex.Surface.IDDSurface7)
else
FOwner.D3DDevice7.SetTexture(0, nil);
end;
 
prevTex := MeshQueue[i].tex;
 
//イベントハンドラを呼ぶ
if Assigned(MeshQueue[i].OnRender) then
MeshQueue[i].OnRender(MeshQueue[i].Frame);
 
//描画
MeshQueue[i].Mesh.Draw(0);
 
end;
 
//ビルボードの描画
 
//ライティングを切る
FOwner.D3DDevice7.SetRenderState(D3DRENDERSTATE_LIGHTING, DWord(False));
 
FOwner.D3DDevice7.GetTransform(D3DTRANSFORMSTATE_PROJECTION, projM);
ScreenM := D3DUtil_SetIdentityMatrix;
with ScreenM do
begin
_11 := viewParam.dwWidth / 2.0;
_22 := -(viewParam.dwHeight / 2.0);
_33 := viewParam.dvMaxZ - viewParam.dvMinZ;
_41 := viewParam.dwX + viewParam.dwWidth / 2.0;
_42 := viewParam.dwY + viewParam.dwHeight / 2.0;
_43 := viewParam.dvMinZ;
end;
 
//視野座標→画面 の変換行列
{$IFDEF USE_S_MATHPACK}
viewProjScreenM := NowCompositeMatrix(viewMat, projM);
viewProjScreenM := NowCompositeMatrix(viewProjScreenM, ScreenM);
{$ELSE}
viewProjScreenM := D3DMath_MatrixMultiply(viewMat, projM);
viewProjScreenM := D3DMath_MatrixMultiply(viewProjScreenM, ScreenM);
{$ENDIF}
prevFrame := nil;
 
for i := 0 to BillboardCount - 1 do
begin
 
if BillboardQueue[i].ref <> nil then
begin
//テクスチャがあるなら、貼り付ける。
if BillboardQueue[i].Tex <> prevTex then
begin
if BillboardQueue[i].Tex <> nil then
FOwner.D3DDevice7.SetTexture(0, BillboardQueue[i].Tex.Surface.IDDSurface7)
else
FOwner.D3DDevice7.SetTexture(0, nil);
end;
prevTex := BillboardQueue[i].Tex;
 
 
//ビルボードの中心の視野座標を求める
if prevFrame <> BillboardQueue[i].ref then
begin
{$IFDEF USE_S_MATHPACK}
m := NowCompositeMatrix(BillboardQueue[i].ref.RenderedMatrix, viewProjScreenM);
{$ELSE}
m := D3DMath_MatrixMultiply(BillboardQueue[i].ref.RenderedMatrix, viewProjScreenM);
{$ENDIF}
prevFrame := BillboardQueue[i].ref;
end;
{$IFDEF USE_S_MATHPACK}
center := NowHomoginize(BillboardQueue[i].pos);
center := NowTransform(center, m);
{$ELSE}
center := D3DMath_VecHomogenize(BillboardQueue[i].pos);
center := D3DMath_VecTransform(center, m);
{$ENDIF}
//W値が正なら描画
//W is positive if the drawing
if center.W > 0 then
begin
//ビルボードの中心の画面での座標を求める
//Find the coordinates of the center of the screen, billboard
{$IFDEF USE_S_MATHPACK}
center := NowViewFrustumToScreen(center);
{$ELSE}
center := D3DMath_VecViewScreenize(center);
{$ENDIF}
for j := 0 to 3 do
begin
with BillboardQueue[i].Pts[j] do
begin
Pts[j].sx := center.x + BillboardQueue[i].Pts[j].dx * center.W;
Pts[j].sy := center.y + BillboardQueue[i].Pts[j].dy * center.W;
Pts[j].sz := center.z;
Pts[j].rhw := center.w;
Pts[j].color := color;
Pts[j].specular := $FF000000;
Pts[j].tu := tu;
Pts[j].tv := tv;
end;
end;
 
FOwner.D3DDevice7.DrawPrimitive(D3DPT_TRIANGLESTRIP, D3DFVF_TLVERTEX, Pts, 4, 0);
end;
 
//参照フレームに付いたフラグを消す
BillboardQueue[i].ref.BBAttached := False;
end;
end;
 
//キューを空に
FMeshCount := 0;
FBillBoardCount := 0;
end;
 
{-------------------------------- Primitive Renderer --------------------------}
 
type
TIntArray = array[0..$0FFFFFFF] of Integer;
PIntArray = ^TIntArray;
TPrimArray = array[0..$FFFFF] of TSXPrimitiveRec;
PPrimArray = ^TPrimArray;
TTextureCoordArray = array[0..$FFFFF] of TSXTextureCoordRec;
PTextureCoordArray = ^TTextureCoordArray;
 
class function TSXPrimitiveRenderer.SingleRect(x1, y1, x2, y2: Single): TSingleRect;
begin
with result do
begin
Left := x1;
Top := y1;
Right := x2;
Bottom := y2;
end;
end;
 
constructor TSXPrimitiveRenderer.Create(DDCompo: TDXDraw; PrimitiveCount: Integer; PatternCount: Integer);
begin
FDXDraw := DDCompo;
FMaxPrimitives := PrimitiveCount;
ZSortBuf := nil;
ZSortCount := nil;
PrimCount := 0;
 
GetMem(PrimBuf, Sizeof(TSXPrimitiveRec) * PrimitiveCount);
GetMem(Patterns, Sizeof(TSXTextureCoordRec) * PatternCount);
 
ZMax := 0;
ColorKey := True;
end;
 
destructor TSXPrimitiveRenderer.Destroy;
begin
FreeMem(ZSortBuf);
FreeMem(ZSortCount);
FreeMem(Patterns);
FreeMem(PrimBuf);
 
inherited;
end;
 
procedure TSXPrimitiveRenderer.setZMax(v: Integer);
begin
FZmax := v;
 
if ZSortBuf <> nil then
FreeMem(ZSortBuf);
if ZSortCount <> nil then
FreeMem(ZSortCount);
 
GetMem(ZSortBuf, (FZMax + 1) * FMaxPrimitives * sizeof(Integer));
GetMem(ZSortCount, (FZMax + 1) * sizeof(Integer));
end;
 
//パターンとしてTexのCoordで示される範囲を登録
 
procedure TSXPrimitiveRenderer.SetPattern(idx: Integer; Tex: TDirect3DTexture2; Coord: TRect);
var
pPat: PTextureCoord;
begin
pPat := @(PTextureCoordArray(Patterns)^[idx]);
 
with pPat^ do
begin
Texture := Tex;
Top := Coord.Top / Tex.Height;
Left := Coord.Left / Tex.Width;
Bottom := Coord.Bottom / Tex.Height;
Right := Coord.Right / Tex.Width;
end;
 
end;
 
procedure TSXPrimitiveRenderer.Push(Tex: TDirect3DTexture2; p1, p2, p3, p4: TD3DTLVertex; Z: Integer; blend: TRenderType); //TLVertexで四角形を入れる
begin
with PPrimArray(PrimBuf)^[PrimCount] do
begin
Texture := Tex;
 
Bound[0] := p1;
Bound[1] := p2;
Bound[2] := p3;
Bound[3] := p4;
 
ZOrder := Z;
BlendMode := blend;
end;
 
Inc(PrimCount);
end;
 
procedure TSXPrimitiveRenderer.Push2D(Tex: TDirect3DTexture2; p1, p2, p3, p4: TD2DVector; Z: Integer; blend: TRenderType; col: DWord); //2D的な四角形
begin
with PPrimArray(PrimBuf)^[PrimCount] do
begin
Texture := Tex;
 
Bound[0] := MakeD3DTLVertex(p1.x, p1.y, 2.0, 0.5, col, 0, 0, 0);
Bound[1] := MakeD3DTLVertex(p2.x, p2.y, 2.0, 0.5, col, 0, 1, 0);
Bound[2] := MakeD3DTLVertex(p3.x, p3.y, 2.0, 0.5, col, 0, 0, 1);
Bound[3] := MakeD3DTLVertex(p4.x, p4.y, 2.0, 0.5, col, 0, 1, 1);
 
ZOrder := Z;
BlendMode := blend;
end;
 
Inc(PrimCount);
end;
 
//パターンをプッシュ(3次元)
 
procedure TSXPrimitiveRenderer.PushPattern(iPat: Integer; p1, p2, p3, p4: TD3DHVector; Z: Integer; blend: TRenderType; col: DWord);
var
pPat: PTextureCoord;
begin
with PPrimArray(PrimBuf)^[PrimCount] do
begin
 
pPat := @(PTextureCoordArray(Patterns)^[iPat]);
Texture := pPat^.Texture;
 
Bound[0] := MakeD3DTLVertex(p1.x, p1.y, p1.z, p1.w, col, 0, pPat^.Left, pPat^.Top);
Bound[1] := MakeD3DTLVertex(p2.x, p2.y, p2.z, p2.w, col, 0, pPat^.Right, pPat^.Top);
Bound[2] := MakeD3DTLVertex(p3.x, p3.y, p3.z, p3.w, col, 0, pPat^.Left, pPat^.Bottom);
Bound[3] := MakeD3DTLVertex(p4.x, p4.y, p4.z, p4.w, col, 0, pPat^.Right, pPat^.Bottom);
 
ZOrder := Z;
BlendMode := blend;
end;
 
Inc(PrimCount);
end;
 
procedure TSXPrimitiveRenderer.PushPattern2D(iPat: Integer; p1, p2, p3, p4: TD2DVector; Z: Integer; blend: TRenderType; col: DWord); //パターンをプッシュする
var
pPat: PTextureCoord;
begin
with PPrimArray(PrimBuf)^[PrimCount] do
begin
 
pPat := @(PTextureCoordArray(Patterns)^[iPat]);
Texture := pPat^.Texture;
 
Bound[0] := MakeD3DTLVertex(p1.x, p1.y, 2, 0.5, col, 0, pPat^.Left, pPat^.Top);
Bound[1] := MakeD3DTLVertex(p2.x, p2.y, 2, 0.5, col, 0, pPat^.Right, pPat^.Top);
Bound[2] := MakeD3DTLVertex(p3.x, p3.y, 2, 0.5, col, 0, pPat^.Left, pPat^.Bottom);
Bound[3] := MakeD3DTLVertex(p4.x, p4.y, 2, 0.5, col, 0, pPat^.Right, pPat^.Bottom);
 
ZOrder := Z;
BlendMode := blend;
end;
 
Inc(PrimCount);
end;
 
//パターンをプッシュする(矩形)
 
procedure TSXPrimitiveRenderer.PushPatternRect(iPat: Integer; rect: TSingleRect; Z: Integer; blend: TRenderType; col: DWord);
var
pPat: PTextureCoord;
begin
with PPrimArray(PrimBuf)^[PrimCount] do
begin
 
pPat := @(PTextureCoordArray(Patterns)^[iPat]);
Texture := pPat^.Texture;
 
Bound[0] := MakeD3DTLVertex(rect.Left, rect.Top, 2, 0.5, col, 0, pPat^.Left, pPat^.Top);
Bound[1] := MakeD3DTLVertex(rect.Right, rect.Top, 2, 0.5, col, 0, pPat^.Right, pPat^.Top);
Bound[2] := MakeD3DTLVertex(rect.Left, rect.Bottom, 2, 0.5, col, 0, pPat^.Left, pPat^.Bottom);
Bound[3] := MakeD3DTLVertex(rect.Right, rect.Bottom, 2, 0.5, col, 0, pPat^.Right, pPat^.Bottom);
 
ZOrder := Z;
BlendMode := blend;
end;
 
Inc(PrimCount);
end;
 
//Z値にしたがってソート
 
procedure TSXPrimitiveRenderer.BeginRender;
var
i: Integer;
pCount: ^Integer; //各レイヤに、いくつ物体があるか
pSort: ^Integer;
pPrim: PPrimitive;
begin
FNPrims := PrimCount;
 
//FSortCountのクリア
pCount := Pointer(ZSortCount);
ZeroMemory(pCount, Sizeof(Integer) * (FZMax + 1));
 
if PrimCount = 0 then
Exit;
 
//ビンソート
pPrim := @(PPrimArray(PrimBuf)^[PrimCount - 1]);
for i := PrimCount - 1 downto 0 do
begin
pSort := Pointer(ZSortBuf);
pCount := Pointer(ZSortCount);
if pPrim^.ZOrder > FZMax then
begin
//DDDD_PutDebugMessage(Format('Primitives: Z=%dは無効です、Z値は0から%dの範囲にしてください',[pPrim^.ZOrder,FZMax]));
continue;
end;
Inc(pCount, pPrim^.ZOrder);
Inc(pSort, pPrim^.ZOrder * FMaxPrimitives + pCount^);
pSort^ := i; //FSortBuf[z][FSortCount[z]]:=i
Inc(pCount^); //FSortCount[z]++
 
Dec(pPrim);
end;
 
end;
 
//単一のZ値を持つ集合だけ描画
 
procedure TSXPrimitiveRenderer.RenderOneLayer(Z: Integer);
var
i: Integer;
pSort: ^Integer;
pPrim: PPrimitive;
 
prevTexture: TDirect3DTexture2;
prevBlendMode: TRenderType;
nPrims: Integer;
begin
 
asm
finit;
end;
 
if Z > FZMax then
begin
//DDDD_PutDebugMessage(Format('Render: Z=%dは無効です、Z値は0から%dの範囲にしてください',[Z,FZMax]));
exit;
end;
 
nPrims := PIntArray(ZSortCount)^[Z];
if nPrims = 0 then
Exit;
 
//レンダリングステートの設定
with FDXDraw.D3DDevice7 do
begin
SetTexture(0, nil);
SetRenderState(D3DRENDERSTATE_ZENABLE, INteger(False));
SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, INteger(False));
 
//SetTextureStageState(0, D3DTSS_MAGFILTER, Integer(D3DTFG_POINT));
//SetTextureStageState(0, D3DTSS_MINFILTER, Integer(D3DTFG_POINT));
 
SetTextureStageState(0, D3DTSS_MAGFILTER, Integer(D3DTFG_LINEAR));
SetTextureStageState(0, D3DTSS_MINFILTER, Integer(D3DTFG_LINEAR));
 
SetRenderState(D3DRENDERSTATE_STIPPLEDALPHA, Integer(False));
SetRenderState(D3DRENDERSTATE_DITHERENABLE, Integer(False));
SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, Integer(False));
SetRenderState(D3DRENDERSTATE_COLORKEYENABLE, Integer(ColorKey));
end;
prevTexture := nil;
prevBlendMode := rtDraw;
 
pSort := @(PIntArray(ZSortBuf)^[FMaxPrimitives * Z]);
for i := 0 to nPrims - 1 do
begin
pPrim := @(PPrimArray(PrimBuf)^[pSort^]);
 
//テクスチャの変更
if pPrim^.Texture <> prevTexture then
begin
if pPrim^.Texture = nil then
FDXDraw.D3DDevice7.SetTexture(0, nil)
else
FDXDraw.D3DDevice7.SetTexture(0, pPrim^.Texture.Surface.IDDSurface7);
prevTexture := pPrim^.Texture;
end;
 
//ブレンドモードの設定
if pPrim^.BlendMode <> prevBlendMode then
begin
case pPrim^.BlendMode of
 
rtDraw:
begin
//QD.D3DDevice7.SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, Integer(False));
FDXDraw.D3DDevice7.SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, 0);
//QD.D3DDevice7.SetRenderState(D3DRENDERSTATE_FILLMODE, Integer(D3DFILL_SOLID));
FDXDraw.D3DDevice7.SetRenderState(D3DRENDERSTATE_COLORKEYENABLE, Integer(True));
FDXDraw.D3DDevice7.SetRenderState(D3DRENDERSTATE_SRCBLEND, Integer(D3DBLEND_ONE));
end;
 
rtAdd:
begin
if prevBlendMode = rtDraw then
begin
FDXDraw.D3DDevice7.SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, Integer(True));
 
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_COLORARG1, Integer(D3DTA_TEXTURE));
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_COLORARG2, Integer(D3DTA_DIFFUSE));
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_COLOROP, Integer(D3DTOP_MODULATE));
 
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_ALPHAARG1, Integer(D3DTA_TEXTURE));
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_ALPHAARG2, Integer(D3DTA_DIFFUSE));
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_ALPHAOP, Integer(D3DTOP_MODULATE));
end;
FDXDraw.D3DDevice7.SetRenderState(D3DRENDERSTATE_SRCBLEND, Integer(D3DBLEND_ONE)); // ソースブレンド設定
FDXDraw.D3DDevice7.SetRenderState(D3DRENDERSTATE_DESTBLEND, Integer(D3DBLEND_ONE)); // ディスティネーション設定
end;
 
rtBlend:
begin
if prevBlendMode = rtDraw then
begin
FDXDraw.D3DDevice7.SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, Integer(True)); //αを有効に☆
 
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_COLORARG1, Integer(D3DTA_TEXTURE));
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_COLORARG2, Integer(D3DTA_DIFFUSE));
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_COLOROP, Integer(D3DTOP_MODULATE));
 
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_ALPHAARG1, Integer(D3DTA_TEXTURE));
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_ALPHAARG2, Integer(D3DTA_DIFFUSE));
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_ALPHAOP, Integer(D3DTOP_MODULATE));
end;
FDXDraw.D3DDevice7.SetRenderState(D3DRENDERSTATE_SRCBLEND, Integer(D3DBLEND_SRCALPHA)); // ソースブレンド設定
FDXDraw.D3DDevice7.SetRenderState(D3DRENDERSTATE_DESTBLEND, Integer(D3DBLEND_INVSRCALPHA)); // ディスティネーション設定
end;
 
rtSub:
begin
if prevBlendMode = rtDraw then
begin
FDXDraw.D3DDevice7.SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, Integer(True)); //αを有効に☆
 
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_COLORARG1, Integer(D3DTA_TEXTURE));
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_COLORARG2, Integer(D3DTA_DIFFUSE));
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_COLOROP, Integer(D3DTOP_MODULATE));
 
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_ALPHAARG1, Integer(D3DTA_TEXTURE));
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_ALPHAARG2, Integer(D3DTA_DIFFUSE));
FDXDraw.D3DDevice7.SetTextureStageState(0, D3DTSS_ALPHAOP, Integer(D3DTOP_MODULATE));
end;
FDXDraw.D3DDevice7.SetRenderState(D3DRENDERSTATE_SRCBLEND, Integer(D3DBLEND_DESTCOLOR)); // ソースブレンド設定
FDXDraw.D3DDevice7.SetRenderState(D3DRENDERSTATE_DESTBLEND, Integer(D3DBLEND_ZERO)); // ディスティネーション設定
end;
 
end;
prevBlendMode := pPrim^.BlendMode;
end;
 
try
asm
finit;
end;
FDXDraw.D3DDevice7.DrawPrimitive(D3DPT_TRIANGLESTRIP, D3DFVF_TLVERTEX, pPrim^.Bound, 4, 0);
asm
finit;
end;
Inc(pSort);
except
//DDDD_PutDebugMessage('FP Fault');
Halt;
end;
end;
 
end;
 
//スタックを空に
 
procedure TSXPrimitiveRenderer.EndRender;
begin
PrimCount := 0;
end;
 
//全部描画
 
procedure TSXPrimitiveRenderer.Render;
var
i: Integer;
begin
BeginRender;
for i := 0 to FZMax do
RenderOneLayer(i);
EndRender;
end;
 
end.
 
/VCL_DELPHIX_D6/SXMedia/SXEngine.pas
24,7 → 24,7
Ivan Blecic
}
unit SXEngine;
 
{$WARN SYMBOL_PLATFORM OFF}
interface
 
uses
/VCL_DELPHIX_D6/SXMedia/SXModPlayer.pas
277,7 → 277,7
S1,S2:Integer;
{$ENDIF}
NumWrite:Longint;
Pos:Integer;
Pos:{$IFDEF UNICODE}Cardinal{$ELSE}Integer{$ENDIF};
Written1:Integer;
begin
if Event = 0 then
287,7 → 287,7
NumWrite := TDSBPositionNotify(Notify[Event]^).dwOffset - Pos;
if (NumWrite < 0) then
inc(NumWrite,BufferDesc.dwBufferBytes);
if SoundBuffer.IBuffer.Lock(Pos,NumWrite,w1,{$IFDEF UNICODE}@{$ENDIF}s1,Pointer(nil^),{$IFDEF UNICODE}@{$ENDIF}s2,0) = 0 then
if SoundBuffer.IBuffer.Lock(Pos,NumWrite,w1,{$IFDEF UNICODE}{$IFNDEF D26UP}@{$ENDIF}{$ENDIF}s1,Pointer(nil^),{$IFDEF UNICODE}{$IFNDEF D26UP}@{$ENDIF}{$ENDIF}s2,0) = 0 then
begin
Written1 := ModMixer.Render(W1,S1);
SoundBuffer.IBuffer.Unlock(w1,Written1, nil,0);
344,7 → 344,7
function TSXModPlayer.CreateSoundNotify : IDirectSoundNotify;
type TNotifyArray = Array[0..99] of TDSBPositionNotify;
var PDSNotify : PDSBPositionNotify;
index : Integer; Offset: Integer;
index : Integer; Offset: {$IFDEF UNICODE}DWORD{$ELSE}Integer{$ENDIF};
PNotify: ^TNotifyArray;
begin
Result := nil;
361,10 → 361,10
Notify.Add(PDSNotify);
Events.Add(Pointer(PDSNotify^.hEventNotify));
PNotify[Index-1] := PDSNotify^;
inc(Offset,WaveFormat.nAvgBytesPerSec div EVENTCOUNT);
Inc(Offset, WaveFormat.nAvgBytesPerSec div {$IFDEF UNICODE}DWORD{$ELSE}Integer{$ENDIF}(EVENTCOUNT));
end;
 
if Result.SetNotificationPositions(EVENTCOUNT,{$IFDEF UNICODE}@{$ENDIF}PNotify[0]) <> 0 then
if Result.SetNotificationPositions(EVENTCOUNT,{$IFDEF UNICODE}{$IFNDEF D26UP}@{$ENDIF}{$ENDIF}PNotify[0]) <> 0 then
ShowMessage('Notification Falied');
FreeMem(PNotify,EVENTCOUNT * Sizeof(TDSBPositionNotify));
end;
404,7 → 404,7
Data:Word;
begin
Data := GetSilenceData;
if SoundBuffer.IBuffer.Lock(0,0,w1,{$IFDEF UNICODE}@{$ENDIF}s1,w2,{$IFDEF UNICODE}@{$ENDIF}s2,DSBLOCK_ENTIREBUFFER) = 0 then
if SoundBuffer.IBuffer.Lock(0,0,w1,{$IFDEF UNICODE}{$IFNDEF D26UP}@{$ENDIF}{$ENDIF}s1,w2,{$IFDEF UNICODE}{$IFNDEF D26UP}@{$ENDIF}{$ENDIF}s2,DSBLOCK_ENTIREBUFFER) = 0 then
begin
FillMemory(W1,S1,Data);
if W2 <> nil then
490,7 → 490,7
end;
end;
procedure TSXModPlayer.SetOptions( const Value : TModOptions );
const OptionArray: array[Boolean,TModOption] of Integer = (
const OptionArray: array[Boolean,TModOption] of DWord = (
(0,0,0,0,0,0,0),
(MPPMIX_NORESAMPLING, MPPMIX_BASSEXPANSION, MPPMIX_SURROUND,
MPPMIX_REVERB, MPPMIX_HIGHQUALITY, MPPMIX_GAINCONTROL,
/VCL_DELPHIX_D6/SXMedia/SXMovie.pas
63,7 → 63,7
procedure SetBottom(Value: integer);
protected
public
procedure Assign(Value: TScreenRect);
procedure Assign(Value: TScreenRect); reintroduce;
published
property Left: integer read FLeft write SetLeft;
property Right: integer read FRight write SetRight;
254,7 → 254,7
 
procedure TSXMovie.CreateMediaStream;
var
wPath:{$IFDEF UNICODE}array of Char{$ELSE}array[0..MAX_PATH] of WChar{$ELSE}{$ENDIF};
wPath:{$IFDEF UNICODE}string{$ELSE}array[0..MAX_PATH] of WChar{$ENDIF};
AMStream:IAMMultiMediaStream;
Media:IMediaStream;
begin
263,16 → 263,15
try
CoCreateinstance(CLSID_AMMULTIMEDIASTREAM,nil,CLSCTX_INPROC_SERVER,IID_IAMMULTIMEDIASTREAM,AMStream);
{$IFDEF UNICODE}
SetLength(wPath, Length(Filename) + 1);
StrPCopy(@wPath, Filename);
wPath := Filename;
{$ELSE}
MultiByteToWideChar(CP_ACP,0,PAnsiChar(Filename),-1,wPath,Sizeof(wPAth) div sizeof(wPath[0]));
{$ENDIF}
AMStream.Initialize(STREAMTYPE_READ,AMMSF_NOGRAPHTHREAD,nil);
if (DXSound <> nil) and (DXSound.DSound <> nil) and (DXSound.DSound.ISound <> nil) then
AMStream.AddMediaStream(DXSound.DSound.ISound,{$IFDEF UNICODE}@{$ENDIF}MSPID_PrimaryAudio,AMMSF_ADDDEFAULTRENDERER,IMediaStream(nil^));
AMStream.AddMediaStream(DXDraw.DDraw.IDraw,{$IFDEF UNICODE}@{$ENDIF}MSPID_PrimaryVideo,0,Media);
AMStream.OpenFile({$IFDEF UNICODE}@{$ENDIF}wPAth,0);
AMStream.AddMediaStream(DXSound.DSound.ISound,{$IFDEF UNICODE}{$IFNDEF D26UP}@{$ENDIF}{$ENDIF}MSPID_PrimaryAudio,AMMSF_ADDDEFAULTRENDERER,IMediaStream(nil^));
AMStream.AddMediaStream(DXDraw.DDraw.IDraw,{$IFDEF UNICODE}{$IFNDEF D26UP}@{$ENDIF}{$ENDIF}MSPID_PrimaryVideo,0,Media);
AMStream.OpenFile({$IFDEF UNICODE}@wPAth[1]{$ELSE}wPAth{$ENDIF},0);
FMMStream := AMStream;
except
FMMStream := nil;
/VCL_DELPHIX_D6/SXMedia/SxSample/SXMedia.res
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/VCL_DELPHIX_D6/SXMedia/SxSample/main.dfm
24,7 → 24,6
AutoInitialize = True
AutoSize = True
Color = clBtnFace
Display.BitCount = 16
Display.FixedBitCount = True
Display.FixedRatio = True
Display.FixedSize = False
33,6 → 32,7
SurfaceWidth = 536
Align = alClient
TabOrder = 0
Traces = <>
end
object MainMenu1: TMainMenu
Left = 398
123,6 → 123,39
end
object DXImageList1: TDXImageList
DXDraw = DXDraw1
Items.ColorTable = {
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000}
Items = <
item
Name = 'logo_n.bmp'
/VCL_DELPHIX_D6/SXMedia/SxSample/main.pas
26,7 → 26,7
interface
 
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, DirectX,
SXMovie, SXModPlayer, SXEngine, Menus, DXSounds, DXDraws, MMSystem, DIB;
 
type