----------------------------------------
-- File : DXGIType.ads --
-- Translator:Dongfeng.Gu,2018/10/21 --
-- Mail: [email protected] --
-- Progress:100% --
----------------------------------------
with win32; use win32;
with win32.objbase; use win32.objbase;
with win32.winerror;
with DXGIFormat; use DXGIFormat;
package DXGIType is
function Shift_Left(A:dword;B:Natural) return dword with import,convention=>Intrinsic;
function Lsh(A:dword;B:Natural) return dword is (Shift_Left(A,B));
function Shift_Right(A:dword;B:Natural) return dword with import,convention=>Intrinsic;
function Rsh(A:dword;B:Natural) return dword is (Shift_Right(A,B));
type float_Array is array(natural range<>) of float;
FACDXGI : constant := 16#87a#;
function MAKE_DXGI_HRESULT(code:WORD) return HRESULT is (win32.winerror.MAKE_HRESULT(1,FACDXGI,code));
function MAKE_DXGI_STATUS(code:WORD) return HRESULT is (win32.winerror.MAKE_HRESULT(0,FACDXGI,code));
DXGI_STATUS_OCCLUDED : constant HRESULT:= MAKE_DXGI_STATUS(1);
DXGI_STATUS_CLIPPED : constant HRESULT:= MAKE_DXGI_STATUS(2);
DXGI_STATUS_NO_REDIRECTION : constant HRESULT:= MAKE_DXGI_STATUS(4);
DXGI_STATUS_NO_DESKTOP_ACCESS : constant HRESULT:= MAKE_DXGI_STATUS(5);
DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE : constant HRESULT:= MAKE_DXGI_STATUS(6);
DXGI_STATUS_MODE_CHANGED : constant HRESULT:= MAKE_DXGI_STATUS(7);
DXGI_STATUS_MODE_CHANGE_IN_PROGRESS : constant HRESULT:= MAKE_DXGI_STATUS(8);
DXGI_ERROR_INVALID_CALL : constant HRESULT:= MAKE_DXGI_HRESULT(1);
DXGI_ERROR_NOT_FOUND : constant HRESULT:= MAKE_DXGI_HRESULT(2);
DXGI_ERROR_MORE_DATA : constant HRESULT:= MAKE_DXGI_HRESULT(3);
DXGI_ERROR_UNSUPPORTED : constant HRESULT:= MAKE_DXGI_HRESULT(4);
DXGI_ERROR_DEVICE_REMOVED : constant HRESULT:= MAKE_DXGI_HRESULT(5);
DXGI_ERROR_DEVICE_HUNG : constant HRESULT:= MAKE_DXGI_HRESULT(6);
DXGI_ERROR_DEVICE_RESET : constant HRESULT:= MAKE_DXGI_HRESULT(7);
DXGI_ERROR_WAS_STILL_DRAWING : constant HRESULT:= MAKE_DXGI_HRESULT(10);
DXGI_ERROR_FRAME_STATISTICS_DISJOINT : constant HRESULT:= MAKE_DXGI_HRESULT(11);
DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE : constant HRESULT:= MAKE_DXGI_HRESULT(12);
DXGI_ERROR_DRIVER_INTERNAL_ERROR : constant HRESULT:= MAKE_DXGI_HRESULT(32);
DXGI_ERROR_NONEXCLUSIVE : constant HRESULT:= MAKE_DXGI_HRESULT(33);
DXGI_ERROR_NOT_CURRENTLY_AVAILABLE : constant HRESULT:= MAKE_DXGI_HRESULT(34);
DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED : constant HRESULT:= MAKE_DXGI_HRESULT(35);
DXGI_ERROR_REMOTE_OUTOFMEMORY : constant HRESULT:= MAKE_DXGI_HRESULT(36);
DXGI_CPU_ACCESS_NONE : constant := ( 0 );
DXGI_CPU_ACCESS_DYNAMIC : constant := ( 1 );
DXGI_CPU_ACCESS_READ_WRITE : constant := ( 2 );
DXGI_CPU_ACCESS_SCRATCH : constant := ( 3 );
DXGI_CPU_ACCESS_FIELD : constant := 15;
DXGI_USAGE_SHADER_INPUT : constant dword:= Lsh(1, (0 + 4) );
DXGI_USAGE_RENDER_TARGET_OUTPUT : constant dword:= Lsh(1, (1 + 4) );
DXGI_USAGE_BACK_BUFFER : constant dword:= Lsh(1, (2 + 4) );
DXGI_USAGE_SHARED : constant dword:= Lsh(1, (3 + 4) );
DXGI_USAGE_READ_ONLY : constant dword:= Lsh(1, (4 + 4) );
DXGI_USAGE_DISCARD_ON_PRESENT : constant dword:= Lsh(1, (5 + 4) );
DXGI_USAGE_UNORDERED_ACCESS : constant dword:= Lsh(1, (6 + 4) );
type DXGI_RGB is record
Red:float;
Green:float;
Blue:float;
end record;
type LPDXGI_RGB is access all DXGI_RGB;
type DXGI_RGB_ARRAY is array(Natural range<>) of DXGI_RGB;
type DXGI_GAMMA_CONTROL is record
Scale:DXGI_RGB;
Offset:DXGI_RGB;
GammaCurve:DXGI_RGB_Array(0..1024);
end record;
type LPDXGI_GAMMA_CONTROL is access all DXGI_GAMMA_CONTROL;
type LPCDXGI_GAMMA_CONTROL is access constant DXGI_GAMMA_CONTROL;
type DXGI_GAMMA_CONTROL_CAPABILITIES is record
ScaleAndOffsetSupported:BOOL;
MaxConvertedValue:float;
MinConvertedValue:float;
NumGammaControlPoints:UINT;
ControlPointPositions:float_Array(0..1024);
end record;
type LPDXGI_GAMMA_CONTROL_CAPABILITIES is access all DXGI_GAMMA_CONTROL_CAPABILITIES;
type DXGI_RATIONAL is record
Numerator:UINT;
Denominator:UINT;
end record;
type LPDXGI_RATIONAL is access all DXGI_RATIONAL;
type DXGI_MODE_SCANLINE_ORDER is (DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED,
DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE,
DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST,
DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST);
for DXGI_MODE_SCANLINE_ORDER use (DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED=>0,
DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE=>1,
DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST=>2,
DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST=>3);
type LPDXGI_MODE_SCANLINE_ORDER is access DXGI_MODE_SCANLINE_ORDER;
type DXGI_MODE_SCALING is (DXGI_MODE_SCALING_UNSPECIFIED,
DXGI_MODE_SCALING_CENTERED,
DXGI_MODE_SCALING_STRETCHED);
for DXGI_MODE_SCALING use (DXGI_MODE_SCALING_UNSPECIFIED=>0,
DXGI_MODE_SCALING_CENTERED=>1,
DXGI_MODE_SCALING_STRETCHED=>2);
type LPDXGI_MODE_SCALING is access DXGI_MODE_SCALING;
type DXGI_MODE_ROTATION is (DXGI_MODE_ROTATION_UNSPECIFIED,
DXGI_MODE_ROTATION_IDENTITY,
DXGI_MODE_ROTATION_ROTATE90,
DXGI_MODE_ROTATION_ROTATE180,
DXGI_MODE_ROTATION_ROTATE270);
for DXGI_MODE_ROTATION use (DXGI_MODE_ROTATION_UNSPECIFIED=>0,
DXGI_MODE_ROTATION_IDENTITY=>1,
DXGI_MODE_ROTATION_ROTATE90=>2,
DXGI_MODE_ROTATION_ROTATE180=>3,
DXGI_MODE_ROTATION_ROTATE270=>4);
type LPDXGI_MODE_ROTATION is access DXGI_MODE_ROTATION;
type DXGI_MODE_DESC is record
Width:UINT;
Height:UINT;
RefreshRate:DXGI_RATIONAL;
Format:DXGI_FORMAT;
ScanlineOrdering:DXGI_MODE_SCANLINE_ORDER;
Scaling:DXGI_MODE_SCALING;
end record;
type LPDXGI_MODE_DESC is access all DXGI_MODE_DESC;
type LPCDXGI_MODE_DESC is access constant DXGI_MODE_DESC;
type DXGI_SAMPLE_DESC is record
Count:UINT;
Quality:UINT;
end record;
type LPDXGI_SAMPLE_DESC is access all DXGI_SAMPLE_DESC;
end DXGIType;