aboutsummaryrefslogblamecommitdiffstats
path: root/Game/Code/MacOSX/Wrapper/Windows.pas
blob: 333b08e70ba5a2716042a2eac5b740e685b372b8 (plain) (tree)










































































































































                                                                                   
unit Windows;

{$INCLUDE ../Platform.inc}

interface

uses Types;

const
{$IFDEF MSWINDOWS}
  opengl32 = 'opengl32.dll';
{$ENDIF}
{$IFDEF MACOS}
  opengl32 = 'OpenGL';
{$ENDIF}

type

    DWORD = Types.DWORD;
    {$EXTERNALSYM DWORD}
    BOOL = LongBool;
    {$EXTERNALSYM BOOL}
    PBOOL = ^BOOL;
    {$EXTERNALSYM PBOOL}
    PByte = Types.PByte;
    PINT = ^Integer;
    {$EXTERNALSYM PINT}
    PSingle = ^Single;
    PWORD = ^Word;
    {$EXTERNALSYM PWORD}
    PDWORD = ^DWORD;
    {$EXTERNALSYM PDWORD}
    LPDWORD = PDWORD;
    {$EXTERNALSYM LPDWORD}
    HDC = type LongWord;
    {$EXTERNALSYM HDC}
    HGLRC = type LongWord;
    {$EXTERNALSYM HGLRC}
    TLargeInteger = Int64;
    HFONT = type LongWord;
    {$EXTERNALSYM HFONT}
    HWND = type LongWord;
    {$EXTERNALSYM HWND}

  PPaletteEntry = ^TPaletteEntry;
  {$EXTERNALSYM tagPALETTEENTRY}
  tagPALETTEENTRY = packed record
    peRed: Byte;
    peGreen: Byte;
    peBlue: Byte;
    peFlags: Byte;
  end;
  TPaletteEntry = tagPALETTEENTRY;
  {$EXTERNALSYM PALETTEENTRY}
  PALETTEENTRY = tagPALETTEENTRY;
  
    PRGBQuad = ^TRGBQuad;
    {$EXTERNALSYM tagRGBQUAD}
    tagRGBQUAD = packed record
        rgbBlue: Byte;
        rgbGreen: Byte;
        rgbRed: Byte;
        rgbReserved: Byte;
    end;
    TRGBQuad = tagRGBQUAD;
    {$EXTERNALSYM RGBQUAD}
    RGBQUAD = tagRGBQUAD;

    PBitmapInfoHeader = ^TBitmapInfoHeader;
    {$EXTERNALSYM tagBITMAPINFOHEADER}
    tagBITMAPINFOHEADER = packed record
        biSize: DWORD;
        biWidth: Longint;
        biHeight: Longint;
        biPlanes: Word;
        biBitCount: Word;
        biCompression: DWORD;
        biSizeImage: DWORD;
        biXPelsPerMeter: Longint;
        biYPelsPerMeter: Longint;
        biClrUsed: DWORD;
        biClrImportant: DWORD;
    end;
    TBitmapInfoHeader = tagBITMAPINFOHEADER;
    {$EXTERNALSYM BITMAPINFOHEADER}
    BITMAPINFOHEADER = tagBITMAPINFOHEADER;

    PBitmapInfo = ^TBitmapInfo;
    {$EXTERNALSYM tagBITMAPINFO}
    tagBITMAPINFO = packed record
        bmiHeader: TBitmapInfoHeader;
        bmiColors: array[0..0] of TRGBQuad;
    end;
    TBitmapInfo = tagBITMAPINFO;
    {$EXTERNALSYM BITMAPINFO}
    BITMAPINFO = tagBITMAPINFO;

    function MakeLong(a, b: Word): Longint;
    procedure ZeroMemory(Destination: Pointer; Length: DWORD);
    function QueryPerformanceFrequency(var lpFrequency: TLargeInteger): BOOL;
    function QueryPerformanceCounter(var lpPerformanceCount: TLargeInteger): BOOL;

implementation

uses SDL {$IFDEF MSWINDOWS}, Windows{$ENDIF};

function MakeLong(A, B: Word): Longint;
begin
  Result := (LongInt(B) shl 16) + A;
end;

procedure ZeroMemory(Destination: Pointer; Length: DWORD);
begin
    FillChar( Destination^, Length, 0);
end;

function QueryPerformanceFrequency(var lpFrequency: TLargeInteger): BOOL;
begin
{$IFDEF MSWINDOWS}
    Result := Windows.QueryPerformanceFrequency(lpFrequency);
{$ENDIF}
{$IFDEF MACOS}
    Result := true;
    lpFrequency := 1000;
{$ENDIF}
end;

function QueryPerformanceCounter(var lpPerformanceCount: TLargeInteger): BOOL;
begin
{$IFDEF MSWINDOWS}
    Result := Windows.QueryPerformanceCounter(lpPerformanceCount);
{$ENDIF}
{$IFDEF MACOS}
    Result := true;
    lpPerformanceCount := SDL_GetTicks;
{$ENDIF}
end;

end.