123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- {
- Free Pascal port of the OpenPTC C++ library.
- Copyright (C) 2001-2003 Nikolay Nikolov ([email protected])
- Original C++ version by Glenn Fiedler ([email protected])
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- }
- Constructor TDirectXLibrary.Create;
- Var
- DirectDrawCreate : TDirectDrawCreate;
- IID_IDirectDraw2 : GUID;
- Begin
- { defaults }
- m_lpDD := Nil;
- m_lpDD2 := Nil;
- m_library := 0;
- Try
- LOG('loading ddraw.dll');
- m_library := LoadLibrary('ddraw.dll');
- If m_library = 0 Then
- Raise TPTCError.Create('could not load ddraw.dll');
- LOG('importing DirectDrawCreate');
- DirectDrawCreate := TDirectDrawCreate(GetProcAddress(m_library, 'DirectDrawCreate'));
- If DirectDrawCreate = Nil Then
- Raise TPTCError.Create('could not get address of DirectDrawCreate');
- LOG('creating lpDD');
- DirectXCheck(DirectDrawCreate(Nil, @m_lpDD, Nil));
- With IID_IDirectDraw2 Do
- Begin
- Data1 := $B3A6F3E0;
- Data2 := $2B43;
- Data3 := $11CF;
- Data4[0] := $A2;
- Data4[1] := $DE;
- Data4[2] := $00;
- Data4[3] := $AA;
- Data4[4] := $00;
- Data4[5] := $B9;
- Data4[6] := $33;
- Data4[7] := $56;
- End;
- LOG('querying lpDD2');
- DirectXCheck(m_lpDD^.lpVtbl^.QueryInterface(m_lpDD, @IID_IDirectDraw2, @m_lpDD2));
- Except
- On error : TPTCError Do
- Begin
- { close }
- close;
- { rethrow }
- Raise TPTCError.Create('could not initialize ddraw', error);
- End;
- End;
- End;
- Destructor TDirectXLibrary.Destroy;
- Begin
- close;
- Inherited Destroy;
- End;
- Procedure TDirectXLibrary.close;
- Begin
- If m_lpDD2 <> Nil Then
- Begin
- LOG('releasing lpDD2');
- m_lpDD2^.lpVtbl^.Release(m_lpDD2);
- m_lpDD2 := Nil;
- End;
- If m_lpDD <> Nil Then
- Begin
- LOG('releasing lpDD');
- m_lpDD^.lpVtbl^.Release(m_lpDD);
- m_lpDD := Nil;
- End;
- If m_library <> 0 Then
- Begin
- LOG('closing ddraw.dll');
- FreeLibrary(m_library);
- m_library := 0;
- End;
- End;
|