2008-03-14 14:12:30 +01:00
|
|
|
/*
|
2009-07-11 18:00:20 +02:00
|
|
|
* Copyright (C) 2002 Raphael Junqueira
|
2009-07-11 18:06:44 +02:00
|
|
|
* Copyright (C) 2008 David Adam
|
2008-03-14 14:12:30 +01:00
|
|
|
* Copyright (C) 2008 Tony Wasserka
|
|
|
|
*
|
|
|
|
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __WINE_D3DX9_36_PRIVATE_H
|
|
|
|
#define __WINE_D3DX9_36_PRIVATE_H
|
|
|
|
|
|
|
|
#include <stdarg.h>
|
|
|
|
|
|
|
|
#define COBJMACROS
|
2009-06-01 18:30:15 +02:00
|
|
|
#include "winbase.h"
|
2008-03-14 14:12:30 +01:00
|
|
|
#include "wingdi.h"
|
2009-06-01 18:30:15 +02:00
|
|
|
#include "winuser.h"
|
2008-03-14 14:12:30 +01:00
|
|
|
#include "d3dx9.h"
|
|
|
|
|
2009-06-01 18:25:32 +02:00
|
|
|
/* for internal use */
|
2009-10-13 13:58:29 +02:00
|
|
|
typedef enum _FormatType {
|
|
|
|
FORMAT_ARGB, /* unsigned */
|
|
|
|
FORMAT_UNKNOWN
|
|
|
|
} FormatType;
|
|
|
|
|
|
|
|
typedef struct _PixelFormatDesc {
|
|
|
|
D3DFORMAT format;
|
|
|
|
BYTE bits[4];
|
|
|
|
BYTE shift[4];
|
|
|
|
UINT bytes_per_pixel;
|
|
|
|
FormatType type;
|
|
|
|
} PixelFormatDesc;
|
|
|
|
|
2009-06-01 18:25:32 +02:00
|
|
|
HRESULT map_view_of_file(LPCWSTR filename, LPVOID *buffer, DWORD *length);
|
|
|
|
HRESULT load_resource_into_memory(HMODULE module, HRSRC resinfo, LPVOID *buffer, DWORD *length);
|
|
|
|
|
2009-10-13 13:58:29 +02:00
|
|
|
const PixelFormatDesc *get_format_info(D3DFORMAT format);
|
2010-10-05 21:58:59 +02:00
|
|
|
const PixelFormatDesc *get_format_info_idx(int idx);
|
2009-10-13 13:58:29 +02:00
|
|
|
|
2009-07-11 18:00:20 +02:00
|
|
|
extern const ID3DXBufferVtbl D3DXBuffer_Vtbl;
|
|
|
|
|
|
|
|
/* ID3DXBUFFER */
|
|
|
|
typedef struct ID3DXBufferImpl
|
|
|
|
{
|
|
|
|
/* IUnknown fields */
|
|
|
|
const ID3DXBufferVtbl *lpVtbl;
|
|
|
|
LONG ref;
|
|
|
|
|
|
|
|
/* ID3DXBuffer fields */
|
|
|
|
DWORD *buffer;
|
|
|
|
DWORD bufferSize;
|
|
|
|
} ID3DXBufferImpl;
|
|
|
|
|
2008-03-14 14:12:30 +01:00
|
|
|
|
2008-11-05 12:32:47 +01:00
|
|
|
/* ID3DXFont */
|
2008-03-14 14:12:30 +01:00
|
|
|
typedef struct ID3DXFontImpl
|
|
|
|
{
|
2008-07-23 16:50:01 +02:00
|
|
|
/* IUnknown fields */
|
|
|
|
const ID3DXFontVtbl *lpVtbl;
|
|
|
|
LONG ref;
|
2008-03-14 14:12:30 +01:00
|
|
|
|
2008-07-23 16:50:01 +02:00
|
|
|
/* ID3DXFont fields */
|
2009-06-05 13:15:44 +02:00
|
|
|
IDirect3DDevice9 *device;
|
2009-06-05 13:26:11 +02:00
|
|
|
D3DXFONT_DESCW desc;
|
2009-06-05 13:45:12 +02:00
|
|
|
|
|
|
|
HDC hdc;
|
2009-06-05 13:57:23 +02:00
|
|
|
HFONT hfont;
|
2008-03-14 14:12:30 +01:00
|
|
|
} ID3DXFontImpl;
|
|
|
|
|
2009-07-11 18:06:44 +02:00
|
|
|
/* ID3DXMatrixStack */
|
|
|
|
typedef struct ID3DXMatrixStackImpl
|
|
|
|
{
|
|
|
|
/* IUnknown fields */
|
|
|
|
const ID3DXMatrixStackVtbl *lpVtbl;
|
|
|
|
LONG ref;
|
|
|
|
|
|
|
|
/* ID3DXMatrixStack fields */
|
|
|
|
unsigned int current;
|
|
|
|
unsigned int stack_size;
|
|
|
|
D3DXMATRIX *stack;
|
|
|
|
} ID3DXMatrixStackImpl;
|
2008-11-05 12:32:47 +01:00
|
|
|
|
2010-09-17 00:02:48 +02:00
|
|
|
/* ID3DXMesh */
|
|
|
|
typedef struct ID3DXMeshImpl
|
|
|
|
{
|
|
|
|
/* IUnknown fields */
|
|
|
|
const ID3DXMeshVtbl *lpVtbl;
|
|
|
|
LONG ref;
|
|
|
|
|
|
|
|
/* ID3DXMesh fields */
|
|
|
|
DWORD numfaces;
|
|
|
|
DWORD numvertices;
|
|
|
|
DWORD options;
|
|
|
|
DWORD fvf;
|
|
|
|
IDirect3DDevice9 *device;
|
|
|
|
IDirect3DVertexDeclaration9 *vertex_declaration;
|
|
|
|
IDirect3DVertexBuffer9 *vertex_buffer;
|
|
|
|
IDirect3DIndexBuffer9 *index_buffer;
|
|
|
|
} ID3DXMeshImpl;
|
|
|
|
|
2008-11-05 12:32:47 +01:00
|
|
|
/*ID3DXSprite */
|
|
|
|
typedef struct _SPRITE {
|
|
|
|
LPDIRECT3DTEXTURE9 texture;
|
|
|
|
UINT texw, texh;
|
|
|
|
RECT rect;
|
|
|
|
D3DXVECTOR3 center;
|
|
|
|
D3DXVECTOR3 pos;
|
|
|
|
D3DCOLOR color;
|
2010-10-05 23:06:15 +02:00
|
|
|
D3DXMATRIX transform;
|
2008-11-05 12:32:47 +01:00
|
|
|
} SPRITE;
|
|
|
|
|
2008-07-23 16:50:01 +02:00
|
|
|
typedef struct ID3DXSpriteImpl
|
|
|
|
{
|
|
|
|
/* IUnknown fields */
|
|
|
|
const ID3DXSpriteVtbl *lpVtbl;
|
|
|
|
LONG ref;
|
|
|
|
|
|
|
|
/* ID3DXSprite fields */
|
2008-11-05 12:32:47 +01:00
|
|
|
IDirect3DDevice9 *device;
|
|
|
|
IDirect3DVertexDeclaration9 *vdecl;
|
|
|
|
IDirect3DStateBlock9 *stateblock;
|
|
|
|
D3DXMATRIX transform;
|
|
|
|
D3DXMATRIX view;
|
|
|
|
DWORD flags;
|
2008-11-07 16:50:22 +01:00
|
|
|
BOOL ready;
|
2008-11-05 12:32:47 +01:00
|
|
|
|
|
|
|
/* Store the relevant caps to prevent multiple GetDeviceCaps calls */
|
|
|
|
DWORD texfilter_caps;
|
|
|
|
DWORD maxanisotropy;
|
|
|
|
DWORD alphacmp_caps;
|
|
|
|
|
|
|
|
SPRITE *sprites;
|
2008-11-05 13:00:35 +01:00
|
|
|
int sprite_count; /* number of sprites to be drawn */
|
|
|
|
int allocated_sprites; /* number of (pre-)allocated sprites */
|
2008-07-23 16:50:01 +02:00
|
|
|
} ID3DXSpriteImpl;
|
|
|
|
|
2008-03-14 14:12:30 +01:00
|
|
|
#endif /* __WINE_D3DX9_36_PRIVATE_H */
|