aboutsummaryrefslogtreecommitdiff
path: root/sword2/driver/ddutil.h
diff options
context:
space:
mode:
Diffstat (limited to 'sword2/driver/ddutil.h')
-rw-r--r--sword2/driver/ddutil.h159
1 files changed, 159 insertions, 0 deletions
diff --git a/sword2/driver/ddutil.h b/sword2/driver/ddutil.h
new file mode 100644
index 0000000000..f6976eca15
--- /dev/null
+++ b/sword2/driver/ddutil.h
@@ -0,0 +1,159 @@
+/* Copyright (C) 1994-2003 Revolution Software Ltd
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+//-----------------------------------------------------------------------------
+// File: ddutil.cpp
+//
+// Desc: Routines for loading bitmap and palettes from resources
+//
+// Copyright (C) 1998-2001 Microsoft Corporation. All Rights Reserved.
+//-----------------------------------------------------------------------------
+#ifndef DDUTIL_H
+#define DDUTIL_H
+
+#include <ddraw.h>
+#include <d3d.h>
+
+
+
+
+//-----------------------------------------------------------------------------
+// Classes defined in this header file
+//-----------------------------------------------------------------------------
+class CDisplay;
+class CSurface;
+
+
+
+
+//-----------------------------------------------------------------------------
+// Flags for the CDisplay and CSurface methods
+//-----------------------------------------------------------------------------
+#define DSURFACELOCK_READ
+#define DSURFACELOCK_WRITE
+
+
+
+
+//-----------------------------------------------------------------------------
+// Name: class CDisplay
+// Desc: Class to handle all DDraw aspects of a display, including creation of
+// front and back buffers, creating offscreen surfaces and palettes,
+// and blitting surface and displaying bitmaps.
+//-----------------------------------------------------------------------------
+class CDisplay
+{
+protected:
+ LPDIRECTDRAW7 m_pDD;
+ LPDIRECTDRAWSURFACE7 m_pddsFrontBuffer;
+ LPDIRECTDRAWSURFACE7 m_pddsBackBuffer;
+ LPDIRECTDRAWSURFACE7 m_pddsBackBufferLeft; // For stereo modes
+
+ HWND m_hWnd;
+ RECT m_rcWindow;
+ BOOL m_bWindowed;
+ BOOL m_bStereo;
+
+public:
+ CDisplay();
+ ~CDisplay();
+
+ // Access functions
+ HWND GetHWnd() { return m_hWnd; }
+ LPDIRECTDRAW7 GetDirectDraw() { return m_pDD; }
+ LPDIRECTDRAWSURFACE7 GetFrontBuffer() { return m_pddsFrontBuffer; }
+ LPDIRECTDRAWSURFACE7 GetBackBuffer() { return m_pddsBackBuffer; }
+ LPDIRECTDRAWSURFACE7 GetBackBufferLeft() { return m_pddsBackBufferLeft; }
+
+ // Status functions
+ BOOL IsWindowed() { return m_bWindowed; }
+ BOOL IsStereo() { return m_bStereo; }
+
+ // Creation/destruction methods
+ HRESULT CreateFullScreenDisplay( HWND hWnd, DWORD dwWidth, DWORD dwHeight,
+ DWORD dwBPP );
+ HRESULT CreateWindowedDisplay( HWND hWnd, DWORD dwWidth, DWORD dwHeight );
+ HRESULT InitClipper();
+ HRESULT UpdateBounds();
+ virtual HRESULT DestroyObjects();
+
+ // Methods to create child objects
+ HRESULT CreateSurface( CSurface** ppSurface, DWORD dwWidth,
+ DWORD dwHeight );
+ HRESULT CreateSurfaceFromBitmap( CSurface** ppSurface, TCHAR* strBMP,
+ DWORD dwDesiredWidth,
+ DWORD dwDesiredHeight );
+ HRESULT CreateSurfaceFromText( CSurface** ppSurface, HFONT hFont,
+ TCHAR* strText,
+ COLORREF crBackground,
+ COLORREF crForeground );
+ HRESULT CreatePaletteFromBitmap( LPDIRECTDRAWPALETTE* ppPalette, const TCHAR* strBMP );
+
+ // Display methods
+ HRESULT Clear( DWORD dwColor = 0L );
+ HRESULT ColorKeyBlt( DWORD x, DWORD y, LPDIRECTDRAWSURFACE7 pdds,
+ RECT* prc = NULL );
+ HRESULT Blt( DWORD x, DWORD y, LPDIRECTDRAWSURFACE7 pdds,
+ RECT* prc=NULL, DWORD dwFlags=0 );
+ HRESULT Blt( DWORD x, DWORD y, CSurface* pSurface, RECT* prc = NULL );
+ HRESULT ShowBitmap( HBITMAP hbm, LPDIRECTDRAWPALETTE pPalette=NULL );
+ HRESULT SetPalette( LPDIRECTDRAWPALETTE pPalette );
+ HRESULT Present();
+};
+
+
+
+
+//-----------------------------------------------------------------------------
+// Name: class CSurface
+// Desc: Class to handle aspects of a DirectDrawSurface.
+//-----------------------------------------------------------------------------
+class CSurface
+{
+ LPDIRECTDRAWSURFACE7 m_pdds;
+ DDSURFACEDESC2 m_ddsd;
+ BOOL m_bColorKeyed;
+
+public:
+ LPDIRECTDRAWSURFACE7 GetDDrawSurface() { return m_pdds; }
+ BOOL IsColorKeyed() { return m_bColorKeyed; }
+
+ HRESULT DrawBitmap( HBITMAP hBMP, DWORD dwBMPOriginX = 0, DWORD dwBMPOriginY = 0,
+ DWORD dwBMPWidth = 0, DWORD dwBMPHeight = 0 );
+ HRESULT DrawBitmap( TCHAR* strBMP, DWORD dwDesiredWidth, DWORD dwDesiredHeight );
+ HRESULT DrawText( HFONT hFont, TCHAR* strText, DWORD dwOriginX, DWORD dwOriginY,
+ COLORREF crBackground, COLORREF crForeground );
+
+ HRESULT SetColorKey( DWORD dwColorKey );
+ DWORD ConvertGDIColor( COLORREF dwGDIColor );
+ static HRESULT GetBitMaskInfo( DWORD dwBitMask, DWORD* pdwShift, DWORD* pdwBits );
+
+ HRESULT Create( LPDIRECTDRAW7 pDD, DDSURFACEDESC2* pddsd );
+ HRESULT Create( LPDIRECTDRAWSURFACE7 pdds );
+ HRESULT Destroy();
+
+ CSurface();
+ ~CSurface();
+};
+
+
+
+
+#endif // DDUTIL_H
+