Ignore:
Timestamp:
Jun 26, 1999, 1:36:08 PM (26 years ago)
Author:
hugh
Message:

Include for DX6 verion of ddraw

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/ddraw/OS2DDRAW.H

    r97 r211  
    1 /* $Id: OS2DDRAW.H,v 1.3 1999-06-10 17:10:56 phaller Exp $ */
     1#ifndef __OS2DDRAW_HPP__
     2  #define __OS2DDRAW_HPP__
    23
    3 /*
    4  * DirectDraw main class
    5  *
    6  * Copyright 1998 Sander van Leeuwen (sandervl@xs4all.nl)
    7  *
    8  * Project Odin Software License can be found in LICENSE.TXT
    9  *
    10  */
    11 #ifndef __OS2DDRAW_HPP__
    12 #define __OS2DDRAW_HPP__
     4#include <ddraw.h>
     5#include <d3d.h>
     6#include <dive.h>
    137
    14 
    15 /* KSO Apr 19 1999: Set correct interface.           *
    16  * (INTERFACE is used in the THIS and THIS_ macros)  */
    17 #undef  INTERFACE
    18 #define INTERFACE   IDirectDraw2
    19 
     8#define DEBUG 1
     9#define mmioFOURCC( ch0, ch1, ch2, ch3 )                         \
     10                  ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) |    \
     11                  ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
     12#include <fourcc.h>
     13#define THIS VOID*
    2014class OS2IDirectDraw
    2115{
    22  public:
     16  public:
    2317    //this one has to go first!
    24     IDirectDraw2Vtbl *lpVtbl;
     18    IDirectDraw4Vtbl *lpVtbl;
    2519    IDirectDraw2Vtbl  Vtbl;
     20    // MS did it again with direct/X 6 they changed the behavior of the directdraw component
     21    // So we now need 2 Virt. Tables one for the old and one for the new so we return the
     22    // right interface if one creates a DX6 directdraw object but wants a DX2,3,5 interface
     23    IDirectDraw4Vtbl  Vtbl4;
    2624    IDirect3DVtbl     Vtbl3D;
    2725
    2826    OS2IDirectDraw(GUID *lpGUID);
    2927    ~OS2IDirectDraw();
     28    // Simple management for Surfaces should be good enougth for now
     29    inline  BOOL          HasPrimarySurface() { return PrimaryExists;}
     30            void          SetPrimarySurface(BOOL NewStatus){PrimaryExists = NewStatus;}
     31            int           Referenced;
     32    inline  HRESULT       GetLastError()    { return lastError;    }
     33    inline  HDIVE         GetDiveInstance() { return hDive;        }
     34    inline  HDIVE         GetCCDiveInstance() { return hDiveColorConv;}
     35    inline  char *        GetFrameBuffer()  { return pFrameBuffer; }
     36    inline  int           GetScreenWidth()  { return screenwidth;  }
     37    inline  int           GetScreenHeight() { return screenheight; }
     38    inline  int           GetScreenBpp()    { return screenbpp;}
     39    FOURCC        GetScreenFourCC();
     40    // We should be able to use any mode with less or same bits and same or
     41    // smaller size to be able to report all supported mode in the enum
     42    // functions we need the physical screen size. Other information is later
     43    // also needed so get all the info we can get
     44    DIVE_CAPS dCaps;
    3045
    31             int           Referenced;
    32     inline  HRESULT       GetLastError()    { return lastError;    };
    33     inline  HDIVE         GetDiveInstance() { return hDive;        };
    34     inline  char *        GetFrameBuffer()  { return pFrameBuffer; };
    35     inline  int           GetScreenWidth()  { return screenwidth;  };
    36     inline  int           GetScreenHeight() { return screenheight; };
    37     inline  BOOL          IsFullScreen()    { return fFullScreen;  };
    38     inline  W32_HWND      GetWindowHandle() { return hwndClient;   };
     46  private:
     47   VOID SwitchDisplay(HWND hwnd);
    3948
    40  private:
    4149
    42  protected:
    43           HRESULT   lastError;
    44           HDIVE     hDive;
    45           char     *pFrameBuffer;
    46           W32_HWND  hwndClient;
    47           int       screenwidth, screenheight, screenbpp;
     50  protected:
    4851
    49           BOOL      fFullScreen;
     52    HRESULT lastError;
     53    HDIVE   hDive;           // Handle to Screen DIVE instance
     54    HDIVE   hDiveColorConv;  // Handle to Offscreen DIVE instance for Color conversion
     55    char   *pFrameBuffer;
     56    HWND    hwndClient;
     57    int     screenwidth, screenheight, screenbpp;
     58    BOOL    PrimaryExists;
     59    BOOL    bScale;
    5060
    51               // Linked list management
     61   // Linked list management
    5262              OS2IDirectDraw* next;                   // Next OS2IDirectDraw
    5363    static    OS2IDirectDraw* ddraw;                  // List of OS2IDirectDraw
    5464
    55     friend    HRESULT __stdcall DrawQueryInterface(THIS, REFIID riid, LPVOID FAR * ppvObj);
     65    friend    HRESULT __stdcall DrawQueryInterface(THIS, REFIID riid, LPVOID * ppvObj);
    5666    friend    ULONG   __stdcall DrawAddRef(THIS);
    5767    friend    ULONG   __stdcall DrawRelease(THIS);
    5868    friend    HRESULT __stdcall DrawCompact(THIS);
    59     friend    HRESULT __stdcall DrawCreateClipper(THIS, DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * );
    60     friend    HRESULT __stdcall DrawCreatePalette(THIS, DWORD, W32_LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * );
    61     friend    HRESULT __stdcall DrawCreateSurface(THIS, LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *);
    62     friend    HRESULT __stdcall DrawDuplicateSurface(THIS, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * );
     69    friend    HRESULT __stdcall DrawCreateClipper(THIS, DWORD, LPDIRECTDRAWCLIPPER *, IUnknown  * );
     70    friend    HRESULT __stdcall DrawCreatePalette(THIS, DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown  * );
     71    friend    HRESULT __stdcall DrawCreateSurface(THIS, LPDDSURFACEDESC, LPDIRECTDRAWSURFACE  *, IUnknown  *);
     72    friend    HRESULT __stdcall DrawCreateSurface4(THIS, LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE4  *, IUnknown  *);
     73    friend    HRESULT __stdcall DrawDuplicateSurface(THIS, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE  * );
     74    friend    HRESULT __stdcall DrawDuplicateSurface4(THIS, LPDIRECTDRAWSURFACE4, LPDIRECTDRAWSURFACE4  * );
    6375    friend    HRESULT __stdcall DrawEnumDisplayModes(THIS, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK );
     76    friend    HRESULT __stdcall DrawEnumDisplayModes4(THIS, DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 );
    6477    friend    HRESULT __stdcall DrawEnumSurfaces(THIS, DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK );
     78    friend    HRESULT __stdcall DrawEnumSurfaces4(THIS, DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 );
    6579    friend    HRESULT __stdcall DrawFlipToGDISurface(THIS);
    6680    friend    HRESULT __stdcall DrawGetCaps(THIS, LPDDCAPS, LPDDCAPS);
    6781    friend    HRESULT __stdcall DrawGetDisplayMode(THIS, LPDDSURFACEDESC);
    6882    friend    HRESULT __stdcall DrawGetFourCCCodes(THIS, LPDWORD, LPDWORD);
    69     friend    HRESULT __stdcall DrawGetGDISurface(THIS, LPDIRECTDRAWSURFACE FAR *);
     83    friend    HRESULT __stdcall DrawGetGDISurface(THIS, LPDIRECTDRAWSURFACE  *);
     84    friend    HRESULT __stdcall DrawGetGDISurface4(THIS, LPDIRECTDRAWSURFACE4  *);
    7085    friend    HRESULT __stdcall DrawGetMonitorFrequency(THIS, LPDWORD);
    7186    friend    HRESULT __stdcall DrawGetScanLine(THIS, LPDWORD);
    7287    friend    HRESULT __stdcall DrawGetVerticalBlankStatus(THIS, LPBOOL);
    73     friend    HRESULT __stdcall DrawInitialize(THIS, GUID FAR *);
     88    friend    HRESULT __stdcall DrawInitialize(THIS, GUID *);
    7489    friend    HRESULT __stdcall DrawRestoreDisplayMode(THIS);
    75     friend    HRESULT __stdcall DrawSetCooperativeLevel(THIS, W32_HWND, DWORD);
     90    friend    HRESULT __stdcall DrawSetCooperativeLevel(THIS, HWND, DWORD);
    7691    friend    HRESULT __stdcall DrawSetDisplayMode(THIS, DWORD, DWORD,DWORD);
    7792    friend    HRESULT __stdcall DrawSetDisplayMode2(THIS, DWORD, DWORD,DWORD, DWORD, DWORD);
    78     friend    HRESULT __stdcall DrawWaitForVerticalBlank(THIS, DWORD, W32_HANDLE);
     93    friend    HRESULT __stdcall DrawWaitForVerticalBlank(THIS, DWORD, HANDLE);
     94    // V2 Interface
    7995    friend    HRESULT __stdcall DrawGetAvailableVidMem(THIS, LPDDSCAPS, LPDWORD, LPDWORD);
    80 
     96    friend    HRESULT __stdcall DrawGetAvailableVidMem4(THIS, LPDDSCAPS2, LPDWORD, LPDWORD);
     97    // V4 Interface
     98    friend    HRESULT __stdcall GetSurfaceFromDC(THIS, HDC, LPDIRECTDRAWSURFACE4 *);
     99    friend    HRESULT __stdcall RestoreAllSurfaces(THIS) ;
     100    friend    HRESULT __stdcall TestCooperativeLevel(THIS) ;
     101    friend    HRESULT __stdcall GetDeviceIdentifier(THIS, LPDDDEVICEIDENTIFIER, DWORD );
    81102    /*** IDirect3D methods ***/
    82     /* KSO Apr 19 1999: Set correct interface.           *
    83      * (INTERFACE is used in the THIS and THIS_ macros)  */
    84     #undef  INTERFACE
    85     #define INTERFACE   IDirect3D
    86     friend    HRESULT __stdcall D3DQueryInterface(THIS, REFIID riid, LPVOID FAR * ppvObj);
     103    friend    HRESULT __stdcall D3DQueryInterface(THIS, REFIID riid, LPVOID  * ppvObj);
    87104    friend    ULONG   __stdcall D3DAddRef(THIS);
    88105    friend    ULONG   __stdcall D3DRelease(THIS);
     
    93110    friend    HRESULT __stdcall D3DCreateViewport(THIS, LPDIRECT3DVIEWPORT*, IUnknown*);
    94111    friend    HRESULT __stdcall D3DFindDevice(THIS, LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT);
     112
    95113};
    96114
    97 
    98115//******************************************************************************
    99 /* KSO Apr 19 1999: Set correct interface.           *
    100  * (INTERFACE is used in the THIS and THIS_ macros)  */
    101 #undef  INTERFACE
    102 #define INTERFACE   IDirectDraw2
    103 HRESULT __stdcall DrawQueryInterface(THIS, REFIID riid, LPVOID FAR * ppvObj);
     116HRESULT __stdcall DrawQueryInterface(THIS, REFIID riid, LPVOID  * ppvObj);
    104117ULONG   __stdcall DrawAddRef(THIS);
    105118ULONG   __stdcall DrawRelease(THIS);
    106119HRESULT __stdcall DrawCompact(THIS);
    107 HRESULT __stdcall DrawCreateClipper(THIS, DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * );
    108 HRESULT __stdcall DrawCreatePalette(THIS, DWORD, W32_LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * );
    109 HRESULT __stdcall DrawCreateSurface(THIS, LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *);
    110 HRESULT __stdcall DrawDuplicateSurface(THIS, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * );
     120HRESULT __stdcall DrawCreateClipper(THIS, DWORD, LPDIRECTDRAWCLIPPER *, IUnknown * );
     121HRESULT __stdcall DrawCreatePalette(THIS, DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown * );
     122HRESULT __stdcall DrawCreateSurface(THIS, LPDDSURFACEDESC, LPDIRECTDRAWSURFACE  *, IUnknown *);
     123HRESULT __stdcall DrawDuplicateSurface(THIS, LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE * );
    111124HRESULT __stdcall DrawEnumDisplayModes(THIS, DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK );
    112125HRESULT __stdcall DrawEnumSurfaces(THIS, DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK );
     
    115128HRESULT __stdcall DrawGetDisplayMode(THIS, LPDDSURFACEDESC);
    116129HRESULT __stdcall DrawGetFourCCCodes(THIS, LPDWORD, LPDWORD);
    117 HRESULT __stdcall DrawGetGDISurface(THIS, LPDIRECTDRAWSURFACE FAR *);
     130HRESULT __stdcall DrawGetGDISurface(THIS, LPDIRECTDRAWSURFACE *);
    118131HRESULT __stdcall DrawGetMonitorFrequency(THIS, LPDWORD);
    119132HRESULT __stdcall DrawGetScanLine(THIS, LPDWORD);
    120133HRESULT __stdcall DrawGetVerticalBlankStatus(THIS, LPBOOL);
    121 HRESULT __stdcall DrawInitialize(THIS, GUID FAR *);
     134HRESULT __stdcall DrawInitialize(THIS, GUID *);
    122135HRESULT __stdcall DrawRestoreDisplayMode(THIS);
    123 HRESULT __stdcall DrawSetCooperativeLevel(THIS, W32_HWND, DWORD);
     136HRESULT __stdcall DrawSetCooperativeLevel(THIS, HWND, DWORD);
    124137HRESULT __stdcall DrawSetDisplayMode(THIS, DWORD, DWORD,DWORD);
    125138HRESULT __stdcall DrawSetDisplayMode2(THIS, DWORD, DWORD,DWORD, DWORD, DWORD);
    126 HRESULT __stdcall DrawWaitForVerticalBlank(THIS, DWORD, W32_HANDLE);
     139HRESULT __stdcall DrawWaitForVerticalBlank(THIS, DWORD, HANDLE);
     140// V2
    127141HRESULT __stdcall DrawGetAvailableVidMem(THIS, LPDDSCAPS, LPDWORD, LPDWORD);
     142// V4
     143HRESULT __stdcall DrawGetSurfaceFromDC(THIS, HDC, LPDIRECTDRAWSURFACE4 *);
     144HRESULT __stdcall DrawRestoreAllSurfaces(THIS) ;
     145HRESULT __stdcall DrawTestCooperativeLevel(THIS) ;
     146HRESULT __stdcall DrawGetDeviceIdentifier(THIS, LPDDDEVICEIDENTIFIER, DWORD );
     147// functions which ifaces are changed in DirectX6 after all MS uses COM where an programmer
     148// isn't allowd to change a function iface after he published the iface (See MS COM docs!)
     149HRESULT __stdcall DrawCreateSurface4(THIS, LPDDSURFACEDESC2, LPDIRECTDRAWSURFACE4  *, IUnknown  *);
     150HRESULT __stdcall DrawDuplicateSurface4(THIS, LPDIRECTDRAWSURFACE4, LPDIRECTDRAWSURFACE4  * );
     151HRESULT __stdcall DrawEnumDisplayModes4(THIS, DWORD, LPDDSURFACEDESC2, LPVOID, LPDDENUMMODESCALLBACK2 );
     152HRESULT __stdcall DrawEnumSurfaces4(THIS, DWORD, LPDDSURFACEDESC2, LPVOID,LPDDENUMSURFACESCALLBACK2 );
     153HRESULT __stdcall DrawGetDisplayMode4(THIS, LPDDSURFACEDESC2);
     154HRESULT __stdcall DrawGetGDISurface4(THIS, LPDIRECTDRAWSURFACE4  *);
     155HRESULT __stdcall DrawGetAvailableVidMem4(THIS, LPDDSCAPS2, LPDWORD, LPDWORD);
    128156
    129157/*** IDirect3D methods ***/
    130 /* KSO Apr 19 1999: Set correct interface.           *
    131  * (INTERFACE is used in the THIS and THIS_ macros)  */
    132 #undef  INTERFACE
    133 #define INTERFACE   IDirect3D
    134 HRESULT __stdcall D3DQueryInterface(THIS, REFIID riid, LPVOID FAR * ppvObj);
     158HRESULT __stdcall D3DQueryInterface(THIS, REFIID riid, LPVOID  * ppvObj);
    135159ULONG   __stdcall D3DAddRef(THIS);
    136160ULONG   __stdcall D3DRelease(THIS);
    137 HRESULT __stdcall D3DInitialize(THIS_ REFIID);
    138 HRESULT __stdcall D3DEnumDevices(THIS_ LPD3DENUMDEVICESCALLBACK, LPVOID);
    139 HRESULT __stdcall D3DCreateLight(THIS_ LPDIRECT3DLIGHT*, IUnknown*);
    140 HRESULT __stdcall D3DCreateMaterial(THIS_ LPDIRECT3DMATERIAL*, IUnknown*);
    141 HRESULT __stdcall D3DCreateViewport(THIS_ LPDIRECT3DVIEWPORT*, IUnknown*);
    142 HRESULT __stdcall D3DFindDevice(THIS_ LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT);
     161HRESULT __stdcall D3DInitialize(THIS, REFIID);
     162HRESULT __stdcall D3DEnumDevices(THIS, LPD3DENUMDEVICESCALLBACK, LPVOID);
     163HRESULT __stdcall D3DCreateLight(THIS, LPDIRECT3DLIGHT*, IUnknown*);
     164HRESULT __stdcall D3DCreateMaterial(THIS, LPDIRECT3DMATERIAL*, IUnknown*);
     165HRESULT __stdcall D3DCreateViewport(THIS, LPDIRECT3DVIEWPORT*, IUnknown*);
     166HRESULT __stdcall D3DFindDevice(THIS, LPD3DFINDDEVICESEARCH, LPD3DFINDDEVICERESULT);
    143167
    144168#endif
Note: See TracChangeset for help on using the changeset viewer.