Ada计算机图形DirectX之dvp

----------------------------------------
-- File : dvp.ads                     --
-- Translator:Dongfeng.Gu,2018/10/29  --
-- Mail: 515639@qq.com                --
-- Progress:100%                      --
----------------------------------------

with win32;                        use win32;
with win32.Winreg;                 use win32.Winreg;
with win32.winnt;                  use win32.winnt;
with win32.windef;                 use win32.windef;
with win32.rpcdce;                 use win32.rpcdce;
with win32.Objbase;                use win32.Objbase;

with ddraw;                        use ddraw;

package dvp is

   type LPIUNKNOWN is access all IUnknown;

   IID_IDDVideoPortContainer:constant win32.rpcdce.GUID:=(16#6C142760#,16#A733#,16#11CE#,(16#A5#,16#21#,16#00#,16#20#,16#AF#,16#0B#,16#E5#,16#60#));
   IID_IDirectDrawVideoPort:constant win32.rpcdce.GUID:=(16#B36D93E0#,16#2B43#,16#11CF#,(16#A2#,16#DE#,16#00#,16#AA#,16#00#,16#B9#,16#33#,16#56#));
   IID_IDirectDrawVideoPortNotify:constant win32.rpcdce.GUID:=(16#A655FB94#,16#0589#,16#4E57#,(16#B3#,16#33#,16#56#,16#7A#,16#89#,16#46#,16#8C#,16#88#));
   DDVPTYPE_E_HREFH_VREFH:constant win32.rpcdce.GUID:=(16#54F39980#,16#DA60#,16#11CF#,(16#9B#,16#06#,16#00#,16#A0#,16#C9#,16#03#,16#A3#,16#B8#));
   DDVPTYPE_E_HREFH_VREFL:constant win32.rpcdce.GUID:=(16#92783220#,16#DA60#,16#11CF#,(16#9B#,16#06#,16#00#,16#A0#,16#C9#,16#03#,16#A3#,16#B8#));
   DDVPTYPE_E_HREFL_VREFH:constant win32.rpcdce.GUID:=(16#A07A02E0#,16#DA60#,16#11CF#,(16#9B#,16#06#,16#00#,16#A0#,16#C9#,16#03#,16#A3#,16#B8#));
   DDVPTYPE_E_HREFL_VREFL:constant win32.rpcdce.GUID:=(16#E09C77E0#,16#DA60#,16#11CF#,(16#9B#,16#06#,16#00#,16#A0#,16#C9#,16#03#,16#A3#,16#B8#));
   DDVPTYPE_CCIR656:constant win32.rpcdce.GUID:=(16#FCA326A0#,16#DA60#,16#11CF#,(16#9B#,16#06#,16#00#,16#A0#,16#C9#,16#03#,16#A3#,16#B8#));
   DDVPTYPE_BROOKTREE:constant win32.rpcdce.GUID:=(16#1352A560#,16#DA61#,16#11CF#,(16#9B#,16#06#,16#00#,16#A0#,16#C9#,16#03#,16#A3#,16#B8#));
   DDVPTYPE_PHILIPS:constant win32.rpcdce.GUID:=(16#332CF160#,16#DA61#,16#11CF#,(16#9B#,16#06#,16#00#,16#A0#,16#C9#,16#03#,16#A3#,16#B8#));


   subtype ULONG_PTR is DWORD;

   type tagDDVIDEOPORTCONNECT;
   type LPDDVIDEOPORTCONNECT is access all tagDDVIDEOPORTCONNECT;

   type tagDDVIDEOPORTCAPS;
   type LPDDVIDEOPORTCAPS is access all tagDDVIDEOPORTCAPS;

   type tagDDVIDEOPORTDESC;
   type LPDDVIDEOPORTDESC is access all tagDDVIDEOPORTDESC;

   type tagDDVIDEOPORTINFO;
   type LPDDVIDEOPORTINFO is access all tagDDVIDEOPORTINFO;

   type tagDDVIDEOPORTBANDWIDTH;
   type LPDDVIDEOPORTBANDWIDTH is access all tagDDVIDEOPORTBANDWIDTH;

   type tagDDVIDEOPORTSTATUS;
   type LPDDVIDEOPORTSTATUS is access all tagDDVIDEOPORTSTATUS;

   type tagDDVIDEOPORTNOTIFY;
   type LPDDVIDEOPORTNOTIFY is access all tagDDVIDEOPORTNOTIFY;

   type LPDDENUMVIDEOCALLBACK is access function(Arg_1:LPDDVIDEOPORTCAPS;Arg_2:LPVOID) return HRESULT with Convention=>Stdcall;

   type IDDVideoPortContainer;
   type LPIDDVideoPortContainer is access all IDDVideoPortContainer;
   type LPLPIDDVideoPortContainer is access all LPIDDVideoPortContainer;
   subtype LPDDVideoPortContainer is LPIDDVideoPortContainer;
   subtype LPLPDDVideoPortContainer is LPLPIDDVideoPortContainer;

   type IDirectDrawVideoPort;
   type LPIDirectDrawVideoPort is access all IDirectDrawVideoPort;
   type LPLPIDirectDrawVideoPort is access all LPIDirectDrawVideoPort;
   subtype LPDirectDrawVideoPort is LPIDirectDrawVideoPort;
   subtype LPLPDirectDrawVideoPort is LPLPIDirectDrawVideoPort;

   type IDirectDrawVideoPortNotify;
   type LPIDirectDrawVideoPortNotify is access all IDirectDrawVideoPortNotify;
   type LPLPIDirectDrawVideoPortNotify is access all LPIDirectDrawVideoPortNotify;
   subtype LPDirectDrawVideoPortNotify is LPIDirectDrawVideoPortNotify;
   subtype LPLPDirectDrawVideoPortNotify is LPLPIDirectDrawVideoPortNotify;




   type IDDVideoPortContainer is record
      QueryInterface:access procedure(THIS:LPIDDVideoPortContainer;riid:REFIID;ppvObj:LPLPVOID) with Convention=>Stdcall;
      AddRef:access function(THIS:LPIDDVideoPortContainer) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPIDDVideoPortContainer) return ULONG with Convention=>Stdcall;
      CreateVideoPort:access procedure(THIS:LPIDDVideoPortContainer;Arg2:DWORD;Arg3:LPDDVIDEOPORTDESC;Arg4:LPLPDIRECTDRAWVIDEOPORT;Arg5:LPIUnknown) with Convention=>Stdcall;
      EnumVideoPorts:access procedure(THIS:LPIDDVideoPortContainer;Arg2:DWORD;Arg3:LPDDVIDEOPORTCAPS;Arg4:LPVOID;Arg5:LPDDENUMVIDEOCALLBACK) with Convention=>Stdcall;
      GetVideoPortConnectInfo:access procedure(THIS:LPIDDVideoPortContainer;Arg2:DWORD;pcInfo:LPDWORD;Arg4:LPDDVIDEOPORTCONNECT) with Convention=>Stdcall;
      QueryVideoPortStatus:access procedure(THIS:LPIDDVideoPortContainer;Arg2:DWORD;Arg3:LPDDVIDEOPORTSTATUS) with Convention=>Stdcall;
   end record;

   type IDirectDrawVideoPort is record
      QueryInterface:access procedure(THIS:LPIDirectDrawVideoPort;riid:REFIID;ppvObj:LPLPVOID) with Convention=>Stdcall;
      AddRef:access function(THIS:LPIDirectDrawVideoPort) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPIDirectDrawVideoPort) return ULONG with Convention=>Stdcall;
      Flip:access procedure(THIS:LPIDirectDrawVideoPort;Arg2:LPDIRECTDRAWSURFACE;Arg3:DWORD) with Convention=>Stdcall;
      GetBandwidthInfo:access procedure(THIS:LPIDirectDrawVideoPort;Arg2:LPDDPIXELFORMAT;Arg3:DWORD;Arg4:DWORD;Arg5:DWORD;Arg6:LPDDVIDEOPORTBANDWIDTH) with Convention=>Stdcall;
      GetColorControls:access procedure(THIS:LPIDirectDrawVideoPort;Arg2:LPDDCOLORCONTROL) with Convention=>Stdcall;
      GetInputFormats:access procedure(THIS:LPIDirectDrawVideoPort;lpNumFormats:LPDWORD;Arg3:LPDDPIXELFORMAT;Arg4:DWORD) with Convention=>Stdcall;
      GetOutputFormats:access procedure(THIS:LPIDirectDrawVideoPort;Arg2:LPDDPIXELFORMAT;lpNumFormats:LPDWORD;Arg4:LPDDPIXELFORMAT;Arg5:DWORD) with Convention=>Stdcall;
      GetFieldPolarity:access procedure(THIS:LPIDirectDrawVideoPort;Arg2:LPBOOL) with Convention=>Stdcall;
      GetVideoLine:access procedure(THIS:LPIDirectDrawVideoPort;Arg2:LPDWORD) with Convention=>Stdcall;
      GetVideoSignalStatus:access procedure(THIS:LPIDirectDrawVideoPort;Arg2:LPDWORD) with Convention=>Stdcall;
      SetColorControls:access procedure(THIS:LPIDirectDrawVideoPort;Arg2:LPDDCOLORCONTROL) with Convention=>Stdcall;
      SetTargetSurface:access procedure(THIS:LPIDirectDrawVideoPort;Arg2:LPDIRECTDRAWSURFACE;Arg3:DWORD) with Convention=>Stdcall;
      StartVideo:access procedure(THIS:LPIDirectDrawVideoPort;Arg2:LPDDVIDEOPORTINFO) with Convention=>Stdcall;
      StopVideo:access procedure(THIS:LPIDirectDrawVideoPort) with Convention=>Stdcall;
      UpdateVideo:access procedure(THIS:LPIDirectDrawVideoPort;Arg2:LPDDVIDEOPORTINFO) with Convention=>Stdcall;
      WaitForSync:access procedure(THIS:LPIDirectDrawVideoPort;Arg2:DWORD;Arg3:DWORD;Arg4:DWORD) with Convention=>Stdcall;
   end record;

   type IDirectDrawVideoPortNotify is record
      QueryInterface:access procedure(THIS:LPIDirectDrawVideoPortNotify;riid:REFIID;ppvObj:LPLPVOID) with Convention=>Stdcall;
      AddRef:access function(THIS:LPIDirectDrawVideoPortNotify) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPIDirectDrawVideoPortNotify) return ULONG with Convention=>Stdcall;
      AcquireNotification:access procedure(THIS:LPIDirectDrawVideoPortNotify;Arg2:LPHANDLE;Arg3:LPDDVIDEOPORTNOTIFY) with Convention=>Stdcall;
      ReleaseNotification:access procedure(THIS:LPIDirectDrawVideoPortNotify;Arg2:HANDLE) with Convention=>Stdcall;
   end record;

   type tagDDVIDEOPORTCONNECT is record
      dwSize: DWORD;
      dwPortWidth: DWORD;
      guidTypeID: GUID;
      dwFlags: DWORD;
      dwReserved1: ULONG_PTR;
   end record;

   subtype DDVIDEOPORTCONNECT is tagDDVIDEOPORTCONNECT;

   type tagDDVIDEOPORTCAPS is record
      dwSize: DWORD;
      dwFlags: DWORD;
      dwMaxWidth: DWORD;
      dwMaxVBIWidth: DWORD;
      dwMaxHeight: DWORD;
      dwVideoPortID: DWORD;
      dwCaps: DWORD;
      dwFX: DWORD;
      dwNumAutoFlipSurfaces: DWORD;
      dwAlignVideoPortBoundary: DWORD;
      dwAlignVideoPortPrescaleWidth: DWORD;
      dwAlignVideoPortCropBoundary: DWORD;
      dwAlignVideoPortCropWidth: DWORD;
      dwPreshrinkXStep: DWORD;
      dwPreshrinkYStep: DWORD;
      dwNumVBIAutoFlipSurfaces: DWORD;
      dwNumPreferredAutoflip: DWORD;
      wNumFilterTapsX: WORD;
      wNumFilterTapsY: WORD;
   end record;

   subtype DDVIDEOPORTCAPS is tagDDVIDEOPORTCAPS;

   DDVPD_WIDTH : constant := 16#00000001#;

   DDVPD_HEIGHT : constant := 16#00000002#;

   DDVPD_ID : constant := 16#00000004#;

   DDVPD_CAPS : constant := 16#00000008#;

   DDVPD_FX : constant := 16#00000010#;

   DDVPD_AUTOFLIP : constant := 16#00000020#;

   DDVPD_ALIGN : constant := 16#00000040#;

   DDVPD_PREFERREDAUTOFLIP : constant := 16#00000080#;

   DDVPD_FILTERQUALITY : constant := 16#00000100#;

   type tagDDVIDEOPORTDESC is record
      dwSize: DWORD;
      dwFieldWidth: DWORD;
      dwVBIWidth: DWORD;
      dwFieldHeight: DWORD;
      dwMicrosecondsPerField: DWORD;
      dwMaxPixelsPerSecond: DWORD;
      dwVideoPortID: DWORD;
      dwReserved1: DWORD;
      VideoPortType: DDVIDEOPORTCONNECT;
      dwReserved2: ULONG_PTR;
      dwReserved3: ULONG_PTR;
   end record;

   subtype DDVIDEOPORTDESC is tagDDVIDEOPORTDESC;

   type tagDDVIDEOPORTINFO is record
      dwSize: DWORD;
      dwOriginX: DWORD;
      dwOriginY: DWORD;
      dwVPFlags: DWORD;
      rCrop: RECT;
      dwPrescaleWidth: DWORD;
      dwPrescaleHeight: DWORD;
      lpddpfInputFormat: LPDDPIXELFORMAT;
      lpddpfVBIInputFormat: LPDDPIXELFORMAT;
      lpddpfVBIOutputFormat: LPDDPIXELFORMAT;
      dwVBIHeight: DWORD;
      dwReserved1: ULONG_PTR;
      dwReserved2: ULONG_PTR;
   end record;

   subtype DDVIDEOPORTINFO is tagDDVIDEOPORTINFO;

   type tagDDVIDEOPORTBANDWIDTH is record
      dwSize: DWORD;
      dwCaps: DWORD;
      dwOverlay: DWORD;
      dwColorkey: DWORD;
      dwYInterpolate: DWORD;
      dwYInterpAndColorkey: DWORD;
      dwReserved1: ULONG_PTR;
      dwReserved2: ULONG_PTR;
   end record;

   subtype DDVIDEOPORTBANDWIDTH is tagDDVIDEOPORTBANDWIDTH;

   type tagDDVIDEOPORTSTATUS is record
      dwSize: DWORD;
      bInUse: BOOL;
      dwFlags: DWORD;
      dwReserved1: DWORD;
      VideoPortType: DDVIDEOPORTCONNECT;
      dwReserved2: ULONG_PTR;
      dwReserved3: ULONG_PTR;
   end record;

   subtype DDVIDEOPORTSTATUS is tagDDVIDEOPORTSTATUS;

   type tagDDVIDEOPORTNOTIFY is record
      ApproximateTimeStamp: LARGE_INTEGER;
      lField: LONG;
      dwSurfaceIndex: UINT;
      lDone: LONG;
   end record;

   subtype DDVIDEOPORTNOTIFY is tagDDVIDEOPORTNOTIFY;

   DDVPCONNECT_DOUBLECLOCK : constant := 16#00000001#;

   DDVPCONNECT_VACT : constant := 16#00000002#;

   DDVPCONNECT_INVERTPOLARITY : constant := 16#00000004#;

   DDVPCONNECT_DISCARDSVREFDATA : constant := 16#00000008#;

   DDVPCONNECT_HALFLINE : constant := 16#00000010#;

   DDVPCONNECT_INTERLACED : constant := 16#00000020#;

   DDVPCONNECT_SHAREEVEN : constant := 16#00000040#;

   DDVPCONNECT_SHAREODD : constant := 16#00000080#;

   DDVPCAPS_AUTOFLIP : constant := 16#00000001#;

   DDVPCAPS_INTERLACED : constant := 16#00000002#;

   DDVPCAPS_NONINTERLACED : constant := 16#00000004#;

   DDVPCAPS_READBACKFIELD : constant := 16#00000008#;

   DDVPCAPS_READBACKLINE : constant := 16#00000010#;

   DDVPCAPS_SHAREABLE : constant := 16#00000020#;

   DDVPCAPS_SKIPEVENFIELDS : constant := 16#00000040#;

   DDVPCAPS_SKIPODDFIELDS : constant := 16#00000080#;

   DDVPCAPS_SYNCMASTER : constant := 16#00000100#;

   DDVPCAPS_VBISURFACE : constant := 16#00000200#;

   DDVPCAPS_COLORCONTROL : constant := 16#00000400#;

   DDVPCAPS_OVERSAMPLEDVBI : constant := 16#00000800#;

   DDVPCAPS_SYSTEMMEMORY : constant := 16#00001000#;

   DDVPCAPS_VBIANDVIDEOINDEPENDENT : constant := 16#00002000#;

   DDVPCAPS_HARDWAREDEINTERLACE : constant := 16#00004000#;

   DDVPFX_CROPTOPDATA : constant := 16#00000001#;

   DDVPFX_CROPX : constant := 16#00000002#;

   DDVPFX_CROPY : constant := 16#00000004#;

   DDVPFX_INTERLEAVE : constant := 16#00000008#;

   DDVPFX_MIRRORLEFTRIGHT : constant := 16#00000010#;

   DDVPFX_MIRRORUPDOWN : constant := 16#00000020#;

   DDVPFX_PRESHRINKX : constant := 16#00000040#;

   DDVPFX_PRESHRINKY : constant := 16#00000080#;

   DDVPFX_PRESHRINKXB : constant := 16#00000100#;

   DDVPFX_PRESHRINKYB : constant := 16#00000200#;

   DDVPFX_PRESHRINKXS : constant := 16#00000400#;

   DDVPFX_PRESHRINKYS : constant := 16#00000800#;

   DDVPFX_PRESTRETCHX : constant := 16#00001000#;

   DDVPFX_PRESTRETCHY : constant := 16#00002000#;

   DDVPFX_PRESTRETCHXN : constant := 16#00004000#;

   DDVPFX_PRESTRETCHYN : constant := 16#00008000#;

   DDVPFX_VBICONVERT : constant := 16#00010000#;

   DDVPFX_VBINOSCALE : constant := 16#00020000#;

   DDVPFX_IGNOREVBIXCROP : constant := 16#00040000#;

   DDVPFX_VBINOINTERLEAVE : constant := 16#00080000#;

   DDVP_AUTOFLIP : constant := 16#00000001#;

   DDVP_CONVERT : constant := 16#00000002#;

   DDVP_CROP : constant := 16#00000004#;

   DDVP_INTERLEAVE : constant := 16#00000008#;

   DDVP_MIRRORLEFTRIGHT : constant := 16#00000010#;

   DDVP_MIRRORUPDOWN : constant := 16#00000020#;

   DDVP_PRESCALE : constant := 16#00000040#;

   DDVP_SKIPEVENFIELDS : constant := 16#00000080#;

   DDVP_SKIPODDFIELDS : constant := 16#00000100#;

   DDVP_SYNCMASTER : constant := 16#00000200#;

   DDVP_VBICONVERT : constant := 16#00000400#;

   DDVP_VBINOSCALE : constant := 16#00000800#;

   DDVP_OVERRIDEBOBWEAVE : constant := 16#00001000#;

   DDVP_IGNOREVBIXCROP : constant := 16#00002000#;

   DDVP_VBINOINTERLEAVE : constant := 16#00004000#;

   DDVP_HARDWAREDEINTERLACE : constant := 16#00008000#;

   DDVPFORMAT_VIDEO : constant := 16#00000001#;

   DDVPFORMAT_VBI : constant := 16#00000002#;

   DDVPTARGET_VIDEO : constant := 16#00000001#;

   DDVPTARGET_VBI : constant := 16#00000002#;

   DDVPWAIT_BEGIN : constant := 16#00000001#;

   DDVPWAIT_END : constant := 16#00000002#;

   DDVPWAIT_LINE : constant := 16#00000003#;

   DDVPFLIP_VIDEO : constant := 16#00000001#;

   DDVPFLIP_VBI : constant := 16#00000002#;

   DDVPSQ_NOSIGNAL : constant := 16#00000001#;

   DDVPSQ_SIGNALOK : constant := 16#00000002#;

   DDVPB_VIDEOPORT : constant := 16#00000001#;

   DDVPB_OVERLAY : constant := 16#00000002#;

   DDVPB_TYPE : constant := 16#00000004#;

   DDVPBCAPS_SOURCE : constant := 16#00000001#;

   DDVPBCAPS_DESTINATION : constant := 16#00000002#;

   DDVPCREATE_VBIONLY : constant := 16#00000001#;

   DDVPCREATE_VIDEOONLY : constant := 16#00000002#;

   DDVPSTATUS_VBIONLY : constant := 16#00000001#;

   DDVPSTATUS_VIDEOONLY : constant := 16#00000002#;


   --
   -- THE END.
   --

end dvp;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值