Add support for building x64 executables ()

* d3drm: store LPVOID data instead of DWORD

* m_extraCharacterId is an integer, not a pointer

* cmake: look for iniparser using config file first, then try our custom module file

Our custom module file is still useful.
My linux distro does not package the cmake files.

* x86's stdcall becomes MS's x64 calling canvention

* Fix 64-bit mxdsbuffer pointer arithmetic

* Casting from void* to a smaller-sized integer needs an intermediate equally-sized integer

* Don't cast address to scalar (this is fishy)

* Add mingw64 build to the ci matrix

* Ignore -Wdiscarded-qualifiers warning with const vtables

* Ignore different 'const' qualifiers with MSVC

* Create d3dxof import library for MSVC

* DESCRIPTION in .def file(s) is deprecated

* Assume mmx is supported on x64, require a test for x86 and disabled on other archs

* 32- and 64-bit LEGO1.dll export different symbol names

* Introduce d3drm_guid containing the guids of d3drm

* Disable __wine_dbg_cdecl

* Include d3drm directory with EXCLUDE_FROM_ALL

* lego1 leaks d3drm headers

* Add dxfile.h

* Add 64-bit MSVC to the build matrix

* cmake: using ISLE_USE_DX5 means going all-in

* Load d3dxof.dll dynamically

* cmake: don't emit a warning about bitness anymore
This commit is contained in:
Anonymous Maarten 2024-06-26 03:47:43 +02:00 committed by GitHub
parent 554a679dc0
commit 659a54b221
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
35 changed files with 844 additions and 154 deletions

View file

@ -13,12 +13,18 @@ jobs:
fail-fast: false
matrix:
toolchain:
- { name: 'MSVC', shell: 'sh', setup-cmake: true, setup-ninja: true, setup-msvc: true }
# TODO: Add back eventually, but exclude 3rdparty code from warnings as errors
- { name: 'msys2 mingw32', shell: 'msys2 {0}', msystem: mingw32, msys-env: mingw-w64-i686, clang-tidy: true, werror: true, no-dx5-libs: true }
# - { name: 'msys2 clang32', shell: 'msys2 {0}', msystem: clang32, msys-env: mingw-w64-clang-i686, clang-tidy: true, werror: true, no-dx5-libs: true }
- { name: 'MSVC (32-bit)', shell: 'sh', setup-cmake: true, setup-ninja: true, setup-msvc: true, vc-arch: 'amd64_x86', dx5-libs: true, d3drm-from-wine: false }
- { name: 'MSVC (64-bit)', shell: 'sh', setup-cmake: true, setup-ninja: true, setup-msvc: true, vc-arch: 'amd64', dx5-libs: false, d3drm-from-wine: true }
- { name: 'msys2 mingw32', shell: 'msys2 {0}', msystem: mingw32, msys-env: mingw-w64-i686, clang-tidy: true, werror: true, dx5-libs: false, d3drm-from-wine: true }
- { name: 'msys2 mingw64', shell: 'msys2 {0}', msystem: mingw64, msys-env: mingw-w64-x86_64, clang-tidy: true, werror: true, dx5-libs: false, d3drm-from-wine: true }
# - { name: 'msys2 clang32', shell: 'msys2 {0}', msystem: clang32, msys-env: mingw-w64-clang-i686, clang-tidy: true, werror: true, dx5-libs: true, d3drm-from-wine: true }
steps:
- name: Setup vcvars
if: matrix.toolchain.setup-msvc
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.toolchain.vc-arch }}
# Figure out how to build for 32-bit arch
# - name: Set up SDL
# id: sdl
@ -45,12 +51,6 @@ jobs:
if: matrix.toolchain.setup-ninja
uses: ashutoshvarma/setup-ninja@master
- name: Setup vcvars
if: matrix.toolchain.setup-msvc
uses: ilammy/msvc-dev-cmd@v1
with:
arch: amd64_x86 # Use the 64-bit x64-native cross tools to build 32-bit x86 code
- uses: actions/checkout@v4
with:
submodules: true
@ -60,7 +60,8 @@ jobs:
run: |
cmake -S . -B build -GNinja \
-DCMAKE_BUILD_TYPE=Debug \
-DISLE_USE_DX5_LIBS=${{ !matrix.toolchain.no-dx5-libs }} \
-DISLE_USE_DX5=${{ matrix.toolchain.dx5-libs }} \
-DISLE_D3DRM_FROM_WINE=${{ matrix.toolchain.d3drm-from-wine }} \
-DENABLE_CLANG_TIDY=${{ !!matrix.toolchain.clang-tidy }} \
-DISLE_WERROR=${{ !!matrix.toolchain.werror }} \
-Werror=dev

View file

@ -2,7 +2,35 @@ project(wine_d3drm LANGUAGES C)
set(CMAKE_C_CLANG_TIDY)
add_library(d3drm-wine SHARED EXCLUDE_FROM_ALL
if(MSVC)
# FIXME: this is wrong.
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(def "${CMAKE_CURRENT_SOURCE_DIR}/d3dxof32.def")
else()
set(def "${CMAKE_CURRENT_SOURCE_DIR}/d3dxof64.def")
endif()
set(imp "${CMAKE_CURRENT_BINARY_DIR}/d3dxof.lib")
set(exp "${CMAKE_CURRENT_BINARY_DIR}/d3dxof.exp")
add_custom_command(OUTPUT "${imp}" "${exp}"
COMMAND "${CMAKE_AR}" "${CMAKE_STATIC_LINKER_FLAGS}" "/NOLOGO" "/DEF:${def}" "/OUT:${imp}"
DEPENDS "${def}"
)
add_custom_target(d3dxof-implib DEPENDS "${imp}")
target_sources(d3dxof-implib PRIVATE "${def}")
add_library(d3dxof INTERFACE)
target_link_libraries(d3dxof INTERFACE "${imp}")
add_dependencies(d3dxof "d3dxof-implib")
add_library(d3drm_guid STATIC d3drm_guid.c)
target_include_directories(d3drm_guid PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/include")
else()
set(d3drm_guid)
add_library(d3drm_guid INTERFACE)
endif()
option(WINE_D3DRM_DYNAMIC_D3DXOF "Dynamic d3dxof" ON)
add_library(d3drm-wine SHARED
d3drm.c
d3drm_main.c
d3drm_private.h
@ -17,11 +45,22 @@ add_library(d3drm-wine SHARED EXCLUDE_FROM_ALL
texture.c
version.rc
viewport.c
d3drm.def
)
target_include_directories(d3drm-wine SYSTEM INTERFACE "${CMAKE_CURRENT_LIST_DIR}/include")
target_link_libraries(d3drm-wine PRIVATE d3dxof ddraw)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
target_sources(d3drm-wine PRIVATE d3drm32.def)
else()
target_sources(d3drm-wine PRIVATE d3drm64.def)
endif()
if(WINE_D3DRM_DYNAMIC_D3DXOF)
target_sources(d3drm-wine PRIVATE dyn_d3dxof.c dyn_d3dxof.h)
target_compile_definitions(d3drm-wine PRIVATE DYNAMIC_D3DXOF)
endif()
target_include_directories(d3drm-wine SYSTEM PUBLIC "${CMAKE_CURRENT_LIST_DIR}/include")
if(NOT WINE_D3DRM_DYNAMIC_D3DXOF)
target_link_libraries(d3drm-wine PRIVATE d3dxof)
endif()
target_link_libraries(d3drm-wine PRIVATE ddraw)
set_property(TARGET d3drm-wine PROPERTY PREFIX "")
set_property(TARGET d3drm-wine PROPERTY OUTPUT_NAME "d3drm")
target_compile_definitions(d3drm-wine PRIVATE "__WINESRC__")

View file

@ -2145,7 +2145,11 @@ static HRESULT WINAPI d3drm3_Load(IDirect3DRM3 *iface, void *source, void *objec
return E_NOTIMPL;
}
#ifdef DYNAMIC_D3DXOF
hr = DynamicDirectXFileCreate(&file);
#else
hr = DirectXFileCreate(&file);
#endif
if (hr != DXFILE_OK)
goto end;
@ -2328,9 +2332,21 @@ HRESULT WINAPI Direct3DRMCreate(IDirect3DRM **d3drm)
if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
#elif defined(_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4090 ) /* different 'const' qualifiers */
#endif
object->IDirect3DRM_iface.lpVtbl = &d3drm1_vtbl;
object->IDirect3DRM2_iface.lpVtbl = &d3drm2_vtbl;
object->IDirect3DRM3_iface.lpVtbl = &d3drm3_vtbl;
#ifdef __GNUC__
#pragma GCC diagnostic pop
#elif defined(_MSC_VER)
#pragma warning( pop )
#endif
object->ref1 = 1;
object->iface_count = 1;

22
3rdparty/d3drm/d3drm64.def vendored Normal file
View file

@ -0,0 +1,22 @@
EXPORTS
D3DRMColorGetAlpha
D3DRMColorGetBlue
D3DRMColorGetGreen
D3DRMColorGetRed
D3DRMCreateColorRGB
D3DRMCreateColorRGBA
D3DRMMatrixFromQuaternion
D3DRMQuaternionFromRotation
D3DRMQuaternionMultiply
D3DRMQuaternionSlerp
D3DRMVectorAdd
D3DRMVectorCrossProduct
D3DRMVectorDotProduct
D3DRMVectorModulus
D3DRMVectorNormalize
D3DRMVectorRandom
D3DRMVectorReflect
D3DRMVectorRotate
D3DRMVectorScale
D3DRMVectorSubtract
Direct3DRMCreate

3
3rdparty/d3drm/d3drm_guid.c vendored Normal file
View file

@ -0,0 +1,3 @@
#define INITGUID
#include <d3drm.h>
#include <d3drmwin.h>

View file

@ -30,6 +30,10 @@
#include "wine/debug.h"
#include "wine/list.h"
#ifdef DYNAMIC_D3DXOF
#include "dyn_d3dxof.h"
#endif
struct d3drm_matrix
{
float _11, _12, _13, _14;
@ -46,7 +50,7 @@ static inline struct d3drm_matrix *d3drm_matrix(D3DRMMATRIX4D m)
struct d3drm_object
{
LONG ref;
DWORD appdata;
LPVOID appdata;
struct list destroy_callbacks;
const char *classname;
char *name;

View file

@ -49,8 +49,8 @@ DECLARE_INTERFACE_(IDirect3DRMWinDevice,IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;

4
3rdparty/d3drm/d3dxof32.def vendored Normal file
View file

@ -0,0 +1,4 @@
LIBRARY d3dxof.dll
EXPORTS
DirectXFileCreate@4

4
3rdparty/d3drm/d3dxof64.def vendored Normal file
View file

@ -0,0 +1,4 @@
LIBRARY d3dxof.dll
EXPORTS
DirectXFileCreate

View file

@ -471,7 +471,7 @@ static HRESULT WINAPI d3drm_device1_DeleteDestroyCallback(IDirect3DRMDevice *ifa
return d3drm_device3_DeleteDestroyCallback(&device->IDirect3DRMDevice3_iface, cb, ctx);
}
static HRESULT WINAPI d3drm_device3_SetAppData(IDirect3DRMDevice3 *iface, DWORD data)
static HRESULT WINAPI d3drm_device3_SetAppData(IDirect3DRMDevice3 *iface, LPVOID data)
{
struct d3drm_device *device = impl_from_IDirect3DRMDevice3(iface);
@ -482,7 +482,7 @@ static HRESULT WINAPI d3drm_device3_SetAppData(IDirect3DRMDevice3 *iface, DWORD
return D3DRM_OK;
}
static HRESULT WINAPI d3drm_device2_SetAppData(IDirect3DRMDevice2 *iface, DWORD data)
static HRESULT WINAPI d3drm_device2_SetAppData(IDirect3DRMDevice2 *iface, LPVOID data)
{
struct d3drm_device *device = impl_from_IDirect3DRMDevice2(iface);
@ -491,7 +491,7 @@ static HRESULT WINAPI d3drm_device2_SetAppData(IDirect3DRMDevice2 *iface, DWORD
return d3drm_device3_SetAppData(&device->IDirect3DRMDevice3_iface, data);
}
static HRESULT WINAPI d3drm_device1_SetAppData(IDirect3DRMDevice *iface, DWORD data)
static HRESULT WINAPI d3drm_device1_SetAppData(IDirect3DRMDevice *iface, LPVOID data)
{
struct d3drm_device *device = impl_from_IDirect3DRMDevice(iface);
@ -500,7 +500,7 @@ static HRESULT WINAPI d3drm_device1_SetAppData(IDirect3DRMDevice *iface, DWORD d
return d3drm_device3_SetAppData(&device->IDirect3DRMDevice3_iface, data);
}
static DWORD WINAPI d3drm_device3_GetAppData(IDirect3DRMDevice3 *iface)
static LPVOID WINAPI d3drm_device3_GetAppData(IDirect3DRMDevice3 *iface)
{
struct d3drm_device *device = impl_from_IDirect3DRMDevice3(iface);
@ -509,7 +509,7 @@ static DWORD WINAPI d3drm_device3_GetAppData(IDirect3DRMDevice3 *iface)
return device->obj.appdata;
}
static DWORD WINAPI d3drm_device2_GetAppData(IDirect3DRMDevice2 *iface)
static LPVOID WINAPI d3drm_device2_GetAppData(IDirect3DRMDevice2 *iface)
{
struct d3drm_device *device = impl_from_IDirect3DRMDevice2(iface);
@ -518,7 +518,7 @@ static DWORD WINAPI d3drm_device2_GetAppData(IDirect3DRMDevice2 *iface)
return d3drm_device3_GetAppData(&device->IDirect3DRMDevice3_iface);
}
static DWORD WINAPI d3drm_device1_GetAppData(IDirect3DRMDevice *iface)
static LPVOID WINAPI d3drm_device1_GetAppData(IDirect3DRMDevice *iface)
{
struct d3drm_device *device = impl_from_IDirect3DRMDevice(iface);
@ -1568,7 +1568,7 @@ static HRESULT WINAPI d3drm_device_win_DeleteDestroyCallback(IDirect3DRMWinDevic
return E_NOTIMPL;
}
static HRESULT WINAPI d3drm_device_win_SetAppData(IDirect3DRMWinDevice *iface, DWORD data)
static HRESULT WINAPI d3drm_device_win_SetAppData(IDirect3DRMWinDevice *iface, LPVOID data)
{
struct d3drm_device *device = impl_from_IDirect3DRMWinDevice(iface);
@ -1577,7 +1577,7 @@ static HRESULT WINAPI d3drm_device_win_SetAppData(IDirect3DRMWinDevice *iface, D
return d3drm_device3_SetAppData(&device->IDirect3DRMDevice3_iface, data);
}
static DWORD WINAPI d3drm_device_win_GetAppData(IDirect3DRMWinDevice *iface)
static LPVOID WINAPI d3drm_device_win_GetAppData(IDirect3DRMWinDevice *iface)
{
struct d3drm_device *device = impl_from_IDirect3DRMWinDevice(iface);
@ -1663,10 +1663,22 @@ HRESULT d3drm_device_create(struct d3drm_device **device, IDirect3DRM *d3drm)
if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
#elif defined(_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4090 ) /* different 'const' qualifiers */
#endif
object->IDirect3DRMDevice_iface.lpVtbl = &d3drm_device1_vtbl;
object->IDirect3DRMDevice2_iface.lpVtbl = &d3drm_device2_vtbl;
object->IDirect3DRMDevice3_iface.lpVtbl = &d3drm_device3_vtbl;
object->IDirect3DRMWinDevice_iface.lpVtbl = &d3drm_device_win_vtbl;
#ifdef __GNUC__
#pragma GCC diagnostic pop
#elif defined(_MSC_VER)
#pragma warning( pop )
#endif
object->d3drm = d3drm;
d3drm_object_init(&object->obj, classname);

32
3rdparty/d3drm/dyn_d3dxof.c vendored Normal file
View file

@ -0,0 +1,32 @@
#include "dyn_d3dxof.h"
static enum {
DYN_D3DXOF_INIT = 0,
DYN_D3DXOF_SUCCESS = 1,
} g_dyn_d3dxof_state = DYN_D3DXOF_INIT;
static HMODULE g_d3dxof;
static HRESULT (STDAPICALLTYPE * g_DynamicDirectXFileCreate)(LPDIRECTXFILE *lplpDirectXFile);
static void init_dyn_d3d(void) {
if (g_dyn_d3dxof_state == DYN_D3DXOF_SUCCESS) {
return;
}
g_d3dxof = LoadLibraryA("d3dxof.dll");
if (g_d3dxof == NULL) {
MessageBoxA(NULL, "Cannot find d3dxof.dll", "Cannot find d3dxof.dll", MB_ICONERROR);
abort();
}
g_DynamicDirectXFileCreate = (void*)GetProcAddress(g_d3dxof, "DirectXFileCreate");
if (g_d3dxof == NULL) {
MessageBoxA(NULL, "Missing symbols", "d3dxof.dll misses DirectXFileCreate", MB_ICONERROR);
abort();
}
g_dyn_d3dxof_state = DYN_D3DXOF_SUCCESS;
}
STDAPI DynamicDirectXFileCreate(LPDIRECTXFILE *lplpDirectXFile)
{
init_dyn_d3d();
return g_DynamicDirectXFileCreate(lplpDirectXFile);
}

8
3rdparty/d3drm/dyn_d3dxof.h vendored Normal file
View file

@ -0,0 +1,8 @@
#ifndef __DYN_D3DXOF_H__
#define __DYN_D3DXOF_H__
#include <dxfile.h>
STDAPI DynamicDirectXFileCreate(LPDIRECTXFILE *lplpDirectXFile);
#endif /* __DYN_D3DXOF_H__ */

20
3rdparty/d3drm/face.c vendored
View file

@ -113,7 +113,7 @@ static HRESULT WINAPI d3drm_face1_DeleteDestroyCallback(IDirect3DRMFace *iface,
return IDirect3DRMFace2_DeleteDestroyCallback(&face->IDirect3DRMFace2_iface, cb, ctx);
}
static HRESULT WINAPI d3drm_face2_SetAppData(IDirect3DRMFace2 *iface, DWORD data)
static HRESULT WINAPI d3drm_face2_SetAppData(IDirect3DRMFace2 *iface, LPVOID data)
{
struct d3drm_face *face = impl_from_IDirect3DRMFace2(iface);
@ -124,7 +124,7 @@ static HRESULT WINAPI d3drm_face2_SetAppData(IDirect3DRMFace2 *iface, DWORD data
return D3DRM_OK;
}
static HRESULT WINAPI d3drm_face1_SetAppData(IDirect3DRMFace *iface, DWORD data)
static HRESULT WINAPI d3drm_face1_SetAppData(IDirect3DRMFace *iface, LPVOID data)
{
struct d3drm_face *face = impl_from_IDirect3DRMFace(iface);
@ -133,7 +133,7 @@ static HRESULT WINAPI d3drm_face1_SetAppData(IDirect3DRMFace *iface, DWORD data)
return d3drm_face2_SetAppData(&face->IDirect3DRMFace2_iface, data);
}
static DWORD WINAPI d3drm_face2_GetAppData(IDirect3DRMFace2 *iface)
static LPVOID WINAPI d3drm_face2_GetAppData(IDirect3DRMFace2 *iface)
{
struct d3drm_face *face = impl_from_IDirect3DRMFace2(iface);
@ -142,7 +142,7 @@ static DWORD WINAPI d3drm_face2_GetAppData(IDirect3DRMFace2 *iface)
return face->obj.appdata;
}
static DWORD WINAPI d3drm_face1_GetAppData(IDirect3DRMFace *iface)
static LPVOID WINAPI d3drm_face1_GetAppData(IDirect3DRMFace *iface)
{
struct d3drm_face *face = impl_from_IDirect3DRMFace(iface);
@ -627,8 +627,20 @@ HRESULT d3drm_face_create(struct d3drm_face **face)
if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
#elif defined(_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4090 ) /* different 'const' qualifiers */
#endif
object->IDirect3DRMFace_iface.lpVtbl = &d3drm_face1_vtbl;
object->IDirect3DRMFace2_iface.lpVtbl = &d3drm_face2_vtbl;
#ifdef __GNUC__
#pragma GCC diagnostic pop
#elif defined(_MSC_VER)
#pragma warning( pop )
#endif
object->ref = 1;
d3drm_object_init(&object->obj, classname);

View file

@ -261,7 +261,19 @@ static struct d3drm_frame_array *d3drm_frame_array_create(unsigned int frame_cou
if (!(array = calloc(1, sizeof(*array))))
return NULL;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
#elif defined(_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4090 ) /* different 'const' qualifiers */
#endif
array->IDirect3DRMFrameArray_iface.lpVtbl = &d3drm_frame_array_vtbl;
#ifdef __GNUC__
#pragma GCC diagnostic pop
#elif defined(_MSC_VER)
#pragma warning( pop )
#endif
array->ref = 1;
array->size = frame_count;
@ -379,7 +391,19 @@ static struct d3drm_visual_array *d3drm_visual_array_create(unsigned int visual_
if (!(array = calloc(1, sizeof(*array))))
return NULL;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
#elif defined(_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4090 ) /* different 'const' qualifiers */
#endif
array->IDirect3DRMVisualArray_iface.lpVtbl = &d3drm_visual_array_vtbl;
#ifdef __GNUC__
#pragma GCC diagnostic pop
#elif defined(_MSC_VER)
#pragma warning( pop )
#endif
array->ref = 1;
array->size = visual_count;
@ -498,7 +522,19 @@ static struct d3drm_light_array *d3drm_light_array_create(unsigned int light_cou
if (!(array = calloc(1, sizeof(*array))))
return NULL;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
#elif defined(_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4090 ) /* different 'const' qualifiers */
#endif
array->IDirect3DRMLightArray_iface.lpVtbl = &d3drm_light_array_vtbl;
#ifdef __GNUC__
#pragma GCC diagnostic pop
#elif defined(_MSC_VER)
#pragma warning( pop )
#endif
array->ref = 1;
array->size = light_count;
@ -733,7 +769,7 @@ static HRESULT WINAPI d3drm_frame1_DeleteDestroyCallback(IDirect3DRMFrame *iface
return IDirect3DRMFrame3_DeleteDestroyCallback(&frame->IDirect3DRMFrame3_iface, cb, ctx);
}
static HRESULT WINAPI d3drm_frame3_SetAppData(IDirect3DRMFrame3 *iface, DWORD data)
static HRESULT WINAPI d3drm_frame3_SetAppData(IDirect3DRMFrame3 *iface, LPVOID data)
{
struct d3drm_frame *frame = impl_from_IDirect3DRMFrame3(iface);
@ -744,7 +780,7 @@ static HRESULT WINAPI d3drm_frame3_SetAppData(IDirect3DRMFrame3 *iface, DWORD da
return D3DRM_OK;
}
static HRESULT WINAPI d3drm_frame2_SetAppData(IDirect3DRMFrame2 *iface, DWORD data)
static HRESULT WINAPI d3drm_frame2_SetAppData(IDirect3DRMFrame2 *iface, LPVOID data)
{
struct d3drm_frame *frame = impl_from_IDirect3DRMFrame2(iface);
@ -753,7 +789,7 @@ static HRESULT WINAPI d3drm_frame2_SetAppData(IDirect3DRMFrame2 *iface, DWORD da
return d3drm_frame3_SetAppData(&frame->IDirect3DRMFrame3_iface, data);
}
static HRESULT WINAPI d3drm_frame1_SetAppData(IDirect3DRMFrame *iface, DWORD data)
static HRESULT WINAPI d3drm_frame1_SetAppData(IDirect3DRMFrame *iface, LPVOID data)
{
struct d3drm_frame *frame = impl_from_IDirect3DRMFrame(iface);
@ -762,7 +798,7 @@ static HRESULT WINAPI d3drm_frame1_SetAppData(IDirect3DRMFrame *iface, DWORD dat
return d3drm_frame3_SetAppData(&frame->IDirect3DRMFrame3_iface, data);
}
static DWORD WINAPI d3drm_frame3_GetAppData(IDirect3DRMFrame3 *iface)
static LPVOID WINAPI d3drm_frame3_GetAppData(IDirect3DRMFrame3 *iface)
{
struct d3drm_frame *frame = impl_from_IDirect3DRMFrame3(iface);
@ -771,7 +807,7 @@ static DWORD WINAPI d3drm_frame3_GetAppData(IDirect3DRMFrame3 *iface)
return frame->obj.appdata;
}
static DWORD WINAPI d3drm_frame2_GetAppData(IDirect3DRMFrame2 *iface)
static LPVOID WINAPI d3drm_frame2_GetAppData(IDirect3DRMFrame2 *iface)
{
struct d3drm_frame *frame = impl_from_IDirect3DRMFrame2(iface);
@ -780,7 +816,7 @@ static DWORD WINAPI d3drm_frame2_GetAppData(IDirect3DRMFrame2 *iface)
return d3drm_frame3_GetAppData(&frame->IDirect3DRMFrame3_iface);
}
static DWORD WINAPI d3drm_frame1_GetAppData(IDirect3DRMFrame *iface)
static LPVOID WINAPI d3drm_frame1_GetAppData(IDirect3DRMFrame *iface)
{
struct d3drm_frame *frame = impl_from_IDirect3DRMFrame(iface);
@ -3137,9 +3173,21 @@ HRESULT d3drm_frame_create(struct d3drm_frame **frame, IUnknown *parent_frame, I
if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
#elif defined(_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4090 ) /* different 'const' qualifiers */
#endif
object->IDirect3DRMFrame_iface.lpVtbl = &d3drm_frame1_vtbl;
object->IDirect3DRMFrame2_iface.lpVtbl = &d3drm_frame2_vtbl;
object->IDirect3DRMFrame3_iface.lpVtbl = &d3drm_frame3_vtbl;
#ifdef __GNUC__
#pragma GCC diagnostic pop
#elif defined(_MSC_VER)
#pragma warning( pop )
#endif
object->d3drm = d3drm;
object->ref = 1;
d3drm_set_color(&object->scenebackground, 0.0f, 0.0f, 0.0f, 1.0f);
@ -3302,7 +3350,7 @@ static HRESULT WINAPI d3drm_animation1_DeleteDestroyCallback(IDirect3DRMAnimatio
return IDirect3DRMAnimation2_DeleteDestroyCallback(&animation->IDirect3DRMAnimation2_iface, cb, ctx);
}
static HRESULT WINAPI d3drm_animation2_SetAppData(IDirect3DRMAnimation2 *iface, DWORD data)
static HRESULT WINAPI d3drm_animation2_SetAppData(IDirect3DRMAnimation2 *iface, LPVOID data)
{
struct d3drm_animation *animation = impl_from_IDirect3DRMAnimation2(iface);
@ -3313,7 +3361,7 @@ static HRESULT WINAPI d3drm_animation2_SetAppData(IDirect3DRMAnimation2 *iface,
return D3DRM_OK;
}
static HRESULT WINAPI d3drm_animation1_SetAppData(IDirect3DRMAnimation *iface, DWORD data)
static HRESULT WINAPI d3drm_animation1_SetAppData(IDirect3DRMAnimation *iface, LPVOID data)
{
struct d3drm_animation *animation = impl_from_IDirect3DRMAnimation(iface);
@ -3322,7 +3370,7 @@ static HRESULT WINAPI d3drm_animation1_SetAppData(IDirect3DRMAnimation *iface, D
return d3drm_animation2_SetAppData(&animation->IDirect3DRMAnimation2_iface, data);
}
static DWORD WINAPI d3drm_animation2_GetAppData(IDirect3DRMAnimation2 *iface)
static LPVOID WINAPI d3drm_animation2_GetAppData(IDirect3DRMAnimation2 *iface)
{
struct d3drm_animation *animation = impl_from_IDirect3DRMAnimation2(iface);
@ -3331,7 +3379,7 @@ static DWORD WINAPI d3drm_animation2_GetAppData(IDirect3DRMAnimation2 *iface)
return animation->obj.appdata;
}
static DWORD WINAPI d3drm_animation1_GetAppData(IDirect3DRMAnimation *iface)
static LPVOID WINAPI d3drm_animation1_GetAppData(IDirect3DRMAnimation *iface)
{
struct d3drm_animation *animation = impl_from_IDirect3DRMAnimation(iface);
@ -3889,8 +3937,20 @@ HRESULT d3drm_animation_create(struct d3drm_animation **animation, IDirect3DRM *
if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
#elif defined(_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4090 ) /* different 'const' qualifiers */
#endif
object->IDirect3DRMAnimation_iface.lpVtbl = &d3drm_animation1_vtbl;
object->IDirect3DRMAnimation2_iface.lpVtbl = &d3drm_animation2_vtbl;
#ifdef __GNUC__
#pragma GCC diagnostic pop
#elif defined(_MSC_VER)
#pragma warning( pop )
#endif
object->d3drm = d3drm;
object->ref = 1;
object->options = D3DRMANIMATION_CLOSED | D3DRMANIMATION_LINEARPOSITION;

View file

@ -28,6 +28,10 @@
extern "C" {
#endif
#ifndef __MSABI_LONG
#define __MSABI_LONG(X) (X)
#endif
typedef struct _D3DRMVECTOR4D
{
D3DVALUE x;

View file

@ -29,6 +29,10 @@
extern "C" {
#endif
#ifdef INTERFACE
#undef INTERFACE
#endif
/* Direct3DRM object CLSIDs */
DEFINE_GUID(CLSID_CDirect3DRMDevice, 0x4fa3568e, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
@ -205,8 +209,8 @@ DECLARE_INTERFACE_(IDirect3DRMObject,IUnknown)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -315,8 +319,8 @@ DECLARE_INTERFACE_(IDirect3DRMVisual,IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -370,8 +374,8 @@ DECLARE_INTERFACE_(IDirect3DRMDevice,IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -497,8 +501,8 @@ DECLARE_INTERFACE_(IDirect3DRMDevice2,IDirect3DRMDevice)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -642,8 +646,8 @@ DECLARE_INTERFACE_(IDirect3DRMDevice3,IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -802,8 +806,8 @@ DECLARE_INTERFACE_(IDirect3DRMViewport,IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -942,8 +946,8 @@ DECLARE_INTERFACE_(IDirect3DRMViewport2,IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -1090,8 +1094,8 @@ DECLARE_INTERFACE_(IDirect3DRMFrame,IDirect3DRMVisual)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -1323,8 +1327,8 @@ DECLARE_INTERFACE_(IDirect3DRMFrame2,IDirect3DRMFrame)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -1605,8 +1609,8 @@ DECLARE_INTERFACE_(IDirect3DRMFrame3,IDirect3DRMVisual)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -1903,8 +1907,8 @@ DECLARE_INTERFACE_(IDirect3DRMMesh,IDirect3DRMVisual)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -2018,8 +2022,8 @@ DECLARE_INTERFACE_(IDirect3DRMProgressiveMesh,IDirect3DRMVisual)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -2128,8 +2132,8 @@ DECLARE_INTERFACE_(IDirect3DRMShadow,IDirect3DRMVisual)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -2187,8 +2191,8 @@ DECLARE_INTERFACE_(IDirect3DRMShadow2,IDirect3DRMVisual)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -2275,8 +2279,8 @@ DECLARE_INTERFACE_(IDirect3DRMFace,IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -2385,8 +2389,8 @@ DECLARE_INTERFACE_(IDirect3DRMFace2,IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -2495,8 +2499,8 @@ DECLARE_INTERFACE_(IDirect3DRMMeshBuilder,IDirect3DRMVisual)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -2667,8 +2671,8 @@ DECLARE_INTERFACE_(IDirect3DRMMeshBuilder2,IDirect3DRMMeshBuilder)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -2848,8 +2852,8 @@ DECLARE_INTERFACE_(IDirect3DRMMeshBuilder3,IDirect3DRMVisual)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -3085,8 +3089,8 @@ DECLARE_INTERFACE_(IDirect3DRMLight,IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -3197,8 +3201,8 @@ DECLARE_INTERFACE_(IDirect3DRMTexture, IDirect3DRMVisual)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -3309,8 +3313,8 @@ DECLARE_INTERFACE_(IDirect3DRMTexture2, IDirect3DRMTexture)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -3433,8 +3437,8 @@ DECLARE_INTERFACE_(IDirect3DRMTexture3, IDirect3DRMVisual)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -3569,8 +3573,8 @@ DECLARE_INTERFACE_(IDirect3DRMWrap, IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -3635,8 +3639,8 @@ DECLARE_INTERFACE_(IDirect3DRMMaterial, IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -3708,8 +3712,8 @@ DECLARE_INTERFACE_(IDirect3DRMMaterial2, IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -3787,8 +3791,8 @@ DECLARE_INTERFACE_(IDirect3DRMAnimation, IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -3866,8 +3870,8 @@ DECLARE_INTERFACE_(IDirect3DRMAnimation2, IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -3960,8 +3964,8 @@ DECLARE_INTERFACE_(IDirect3DRMAnimationSet, IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -4028,8 +4032,8 @@ DECLARE_INTERFACE_(IDirect3DRMAnimationSet2, IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -4099,8 +4103,8 @@ DECLARE_INTERFACE_(IDirect3DRMUserVisual, IDirect3DRMVisual)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -4560,8 +4564,8 @@ DECLARE_INTERFACE_(IDirect3DRMInterpolator, IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;
@ -4633,8 +4637,8 @@ DECLARE_INTERFACE_(IDirect3DRMClippedVisual, IDirect3DRMVisual)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;

View file

@ -49,8 +49,8 @@ DECLARE_INTERFACE_(IDirect3DRMWinDevice,IDirect3DRMObject)
STDMETHOD(Clone)(THIS_ IUnknown *outer, REFIID iid, void **out) PURE;
STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK cb, void *ctx) PURE;
STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
STDMETHOD(SetAppData)(THIS_ LPVOID data) PURE;
STDMETHOD_(LPVOID, GetAppData)(THIS) PURE;
STDMETHOD(SetName)(THIS_ const char *name) PURE;
STDMETHOD(GetName)(THIS_ DWORD *size, char *name) PURE;
STDMETHOD(GetClassName)(THIS_ DWORD *size, char *name) PURE;

303
3rdparty/d3drm/include/dxfile.h vendored Normal file
View file

@ -0,0 +1,303 @@
/*
* Copyright 2004 Christian Costa
*
* 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_DXFILE_H
#define __WINE_DXFILE_H
#include <objbase.h>
//#include <winnt.h>
#ifdef INTERFACE
#undef INTERFACE
#endif
#ifdef __cplusplus
extern "C" {
#endif /* defined(__cplusplus) */
typedef DWORD DXFILEFORMAT;
#define DXFILEFORMAT_BINARY 0
#define DXFILEFORMAT_TEXT 1
#define DXFILEFORMAT_COMPRESSED 2
typedef DWORD DXFILELOADOPTIONS;
#define DXFILELOAD_FROMFILE __MSABI_LONG(0x00)
#define DXFILELOAD_FROMRESOURCE __MSABI_LONG(0x01)
#define DXFILELOAD_FROMMEMORY __MSABI_LONG(0x02)
#define DXFILELOAD_FROMSTREAM __MSABI_LONG(0x04)
#define DXFILELOAD_FROMURL __MSABI_LONG(0x08)
typedef struct _DXFILELOADRESOURCE {
HMODULE hModule;
LPCSTR /*LPCTSTR*/ lpName;
LPCSTR /*LPCTSTR*/ lpType;
} DXFILELOADRESOURCE, *LPDXFILELOADRESOURCE;
typedef struct _DXFILELOADMEMORY {
LPVOID lpMemory;
DWORD dSize;
} DXFILELOADMEMORY, *LPDXFILELOADMEMORY;
typedef struct IDirectXFile *LPDIRECTXFILE;
typedef struct IDirectXFileEnumObject *LPDIRECTXFILEENUMOBJECT;
typedef struct IDirectXFileSaveObject *LPDIRECTXFILESAVEOBJECT;
typedef struct IDirectXFileObject *LPDIRECTXFILEOBJECT;
typedef struct IDirectXFileData *LPDIRECTXFILEDATA;
typedef struct IDirectXFileDataReference *LPDIRECTXFILEDATAREFERENCE;
typedef struct IDirectXFileBinary *LPDIRECTXFILEBINARY;
STDAPI DirectXFileCreate(LPDIRECTXFILE *lplpDirectXFile);
#define INTERFACE IDirectXFile
DECLARE_INTERFACE_(IDirectXFile,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectXFile methods ***/
STDMETHOD(CreateEnumObject) (THIS_ LPVOID, DXFILELOADOPTIONS, LPDIRECTXFILEENUMOBJECT *) PURE;
STDMETHOD(CreateSaveObject) (THIS_ LPCSTR, DXFILEFORMAT, LPDIRECTXFILESAVEOBJECT *) PURE;
STDMETHOD(RegisterTemplates) (THIS_ LPVOID, DWORD) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IDirectXFile_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectXFile_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectXFile_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectXFile methods ***/
#define IDirectXFile_CreateEnumObject(p,a,b,c) (p)->lpVtbl->CreateEnumObject(p,a,b,c)
#define IDirectXFile_CreateSaveObject(p,a,b,c) (p)->lpVtbl->CreateSaveObject(p,a,b,c)
#define IDirectXFile_RegisterTemplates(p,a,b) (p)->lpVtbl->RegisterTemplates(p,a,b)
#endif
#define INTERFACE IDirectXFileEnumObject
DECLARE_INTERFACE_(IDirectXFileEnumObject,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectXFileEnumObject methods ***/
STDMETHOD(GetNextDataObject) (THIS_ LPDIRECTXFILEDATA *) PURE;
STDMETHOD(GetDataObjectById) (THIS_ REFGUID, LPDIRECTXFILEDATA *) PURE;
STDMETHOD(GetDataObjectByName) (THIS_ LPCSTR, LPDIRECTXFILEDATA *) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IDirectXFileEnumObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectXFileEnumObject_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectXFileEnumObject_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectXFileEnumObject methods ***/
#define IDirectXFileEnumObject_GetNextDataObject(p,a) (p)->lpVtbl->GetNextDataObject(p,a)
#define IDirectXFileEnumObject_GetDataObjectById(p,a,b) (p)->lpVtbl->GetDataObjectById(p,a,b)
#define IDirectXFileEnumObject_GetDataObjectByName(p,a,b) (p)->lpVtbl->GetDataObjectByName(p,a,b)
#endif
#define INTERFACE IDirectXFileSaveObject
DECLARE_INTERFACE_(IDirectXFileSaveObject,IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectXFileSaveObject methods ***/
STDMETHOD(SaveTemplates) (THIS_ DWORD, const GUID **) PURE;
STDMETHOD(CreateDataObject) (THIS_ REFGUID, LPCSTR, const GUID *, DWORD, LPVOID, LPDIRECTXFILEDATA *) PURE;
STDMETHOD(SaveData) (THIS_ LPDIRECTXFILEDATA) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IDirectXFileSaveObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectXFileSaveObject_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectXFileSaveObject_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectXFileSaveObject methods ***/
#define IDirectXFileSaveObject_SaveTemplates(p,a,b) (p)->lpVtbl->SaveTemplates(p,a,b)
#define IDirectXFileSaveObject_CreateDataObject(p,a,b,c,d,e,f) (p)->lpVtbl->CreateDataObject(p,a,b,c,d,e,f)
#define IDirectXFileSaveObject_SaveData(p,a) (p)->lpVtbl->SaveData(p,a)
#endif
#define IUNKNOWN_METHODS(kind) \
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) kind; \
STDMETHOD_(ULONG,AddRef)(THIS) kind; \
STDMETHOD_(ULONG,Release)(THIS) kind
#define IDIRECTXFILEOBJECT_METHODS(kind) \
STDMETHOD(GetName) (THIS_ LPSTR, LPDWORD) kind; \
STDMETHOD(GetId) (THIS_ LPGUID) kind
#define INTERFACE IDirectXFileObject
DECLARE_INTERFACE_(IDirectXFileObject,IUnknown)
{
IUNKNOWN_METHODS(PURE);
IDIRECTXFILEOBJECT_METHODS(PURE);
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IDirectXFileObject_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectXFileObject_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectXFileObject_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectXFileObject methods ***/
#define IDirectXFileObject_GetName(p,a,b) (p)->lpVtbl->GetName(p,a,b)
#define IDirectXFileObject_GetId(p,a) (p)->lpVtbl->GetId(p,a)
#endif
#define INTERFACE IDirectXFileData
DECLARE_INTERFACE_(IDirectXFileData,IDirectXFileObject)
{
IUNKNOWN_METHODS(PURE);
IDIRECTXFILEOBJECT_METHODS(PURE);
/*** IDirectXFileData methods ***/
STDMETHOD(GetData) (THIS_ LPCSTR, DWORD *, void **) PURE;
STDMETHOD(GetType) (THIS_ const GUID **) PURE;
STDMETHOD(GetNextObject) (THIS_ LPDIRECTXFILEOBJECT *) PURE;
STDMETHOD(AddDataObject) (THIS_ LPDIRECTXFILEDATA) PURE;
STDMETHOD(AddDataReference) (THIS_ LPCSTR, const GUID *) PURE;
STDMETHOD(AddBinaryObject) (THIS_ LPCSTR, const GUID *, LPCSTR, LPVOID, DWORD) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IDirectXFileData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectXFileData_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectXFileData_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectXFileObject methods ***/
#define IDirectXFileData_GetName(p,a,b) (p)->lpVtbl->GetName(p,a,b)
#define IDirectXFileData_GetId(p,a) (p)->lpVtbl->GetId(p,a)
/*** IDirectXFileData methods ***/
#define IDirectXFileData_GetData(p,a,b,c) (p)->lpVtbl->GetData(p,a,b,c)
#define IDirectXFileData_GetType(p,a) (p)->lpVtbl->GetType(p,a)
#define IDirectXFileData_GetNextObject(p,a) (p)->lpVtbl->GetNextObject(p,a)
#define IDirectXFileData_AddDataObject(p,a) (p)->lpVtbl->AddDataObject(p,a)
#define IDirectXFileData_AddDataReference(p,a,b) (p)->lpVtbl->AddDataReference(p,a,b)
#define IDirectXFileData_AddBinaryObject(p,a,b,c,d,e) (p)->lpVtbl->AddBinaryObject(p,a,b,c,d,e)
#endif
#define INTERFACE IDirectXFileDataReference
DECLARE_INTERFACE_(IDirectXFileDataReference,IDirectXFileObject)
{
IUNKNOWN_METHODS(PURE);
IDIRECTXFILEOBJECT_METHODS(PURE);
/*** IDirectXFileDataReference methods ***/
STDMETHOD(Resolve) (THIS_ LPDIRECTXFILEDATA *) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IDirectXFileDataReference_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectXFileDataReference_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectXFileDataReference_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectXFileObject methods ***/
#define IDirectXFileDataReference_GetName(p,a,b) (p)->lpVtbl->GetName(p,a,b)
#define IDirectXFileDataReference_GetId(p,a) (p)->lpVtbl->GetId(p,a)
/*** IDirectXFileDataReference methods ***/
#define IDirectXFileDataReference_Resolve(p,a) (p)->lpVtbl->Resolve(p,a)
#endif
#define INTERFACE IDirectXFileBinary
DECLARE_INTERFACE_(IDirectXFileBinary,IDirectXFileObject)
{
IUNKNOWN_METHODS(PURE);
IDIRECTXFILEOBJECT_METHODS(PURE);
/*** IDirectXFileBinary methods ***/
STDMETHOD(GetSize) (THIS_ DWORD *) PURE;
STDMETHOD(GetMimeType) (THIS_ LPCSTR *) PURE;
STDMETHOD(Read) (THIS_ LPVOID, DWORD, LPDWORD) PURE;
};
#undef INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IDirectXFileBinary_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectXFileBinary_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectXFileBinary_Release(p) (p)->lpVtbl->Release(p)
/*** IDirectXFileObject methods ***/
#define IDirectXFileBinary_GetName(p,a,b) (p)->lpVtbl->GetName(p,a,b)
#define IDirectXFileBinary_GetId(p,a) (p)->lpVtbl->GetId(p,a)
/*** IDirectXFileBinary methods ***/
#define IDirectXFileBinary_GetSize(p,a) (p)->lpVtbl->GetSize(p,a)
#define IDirectXFileBinary_GetMimeType(p,a) (p)->lpVtbl->GetMimeType(p,a)
#define IDirectXFileBinary_Read(p,a,b,c) (p)->lpVtbl->Read(p,a,b,c)
#endif
/* DirectXFile Object CLSID */
DEFINE_GUID(CLSID_CDirectXFile, 0x4516ec43, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
/* DirectX File Interface GUIDs */
DEFINE_GUID(IID_IDirectXFile, 0x3d82ab40, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
DEFINE_GUID(IID_IDirectXFileEnumObject, 0x3d82ab41, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
DEFINE_GUID(IID_IDirectXFileSaveObject, 0x3d82ab42, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
DEFINE_GUID(IID_IDirectXFileObject, 0x3d82ab43, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
DEFINE_GUID(IID_IDirectXFileData, 0x3d82ab44, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
DEFINE_GUID(IID_IDirectXFileDataReference, 0x3d82ab45, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
DEFINE_GUID(IID_IDirectXFileBinary, 0x3d82ab46, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
/* DirectX File Header template's GUID */
DEFINE_GUID(TID_DXFILEHeader, 0x3d82ab43, 0x62da, 0x11cf, 0xab, 0x39, 0x00, 0x20, 0xaf, 0x71, 0xe4, 0x33);
/* DirectX File errors */
#define _FACDD 0x876
#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
#define DXFILE_OK 0
#define DXFILEERR_BADOBJECT MAKE_DDHRESULT(850)
#define DXFILEERR_BADVALUE MAKE_DDHRESULT(851)
#define DXFILEERR_BADTYPE MAKE_DDHRESULT(852)
#define DXFILEERR_BADSTREAMHANDLE MAKE_DDHRESULT(853)
#define DXFILEERR_BADALLOC MAKE_DDHRESULT(854)
#define DXFILEERR_NOTFOUND MAKE_DDHRESULT(855)
#define DXFILEERR_NOTDONEYET MAKE_DDHRESULT(856)
#define DXFILEERR_FILENOTFOUND MAKE_DDHRESULT(857)
#define DXFILEERR_RESOURCENOTFOUND MAKE_DDHRESULT(858)
#define DXFILEERR_URLNOTFOUND MAKE_DDHRESULT(859)
#define DXFILEERR_BADRESOURCE MAKE_DDHRESULT(860)
#define DXFILEERR_BADFILETYPE MAKE_DDHRESULT(861)
#define DXFILEERR_BADFILEVERSION MAKE_DDHRESULT(862)
#define DXFILEERR_BADFILEFLOATSIZE MAKE_DDHRESULT(863)
#define DXFILEERR_BADFILECOMPRESSIONTYPE MAKE_DDHRESULT(864)
#define DXFILEERR_BADFILE MAKE_DDHRESULT(865)
#define DXFILEERR_PARSEERROR MAKE_DDHRESULT(866)
#define DXFILEERR_NOTEMPLATE MAKE_DDHRESULT(867)
#define DXFILEERR_BADARRAYSIZE MAKE_DDHRESULT(868)
#define DXFILEERR_BADDATAREFERENCE MAKE_DDHRESULT(869)
#define DXFILEERR_INTERNALERROR MAKE_DDHRESULT(870)
#define DXFILEERR_NOMOREOBJECTS MAKE_DDHRESULT(871)
#define DXFILEERR_BADINTRINSICS MAKE_DDHRESULT(872)
#define DXFILEERR_NOMORESTREAMHANDLES MAKE_DDHRESULT(873)
#define DXFILEERR_NOMOREDATA MAKE_DDHRESULT(874)
#define DXFILEERR_BADCACHEFILE MAKE_DDHRESULT(875)
#define DXFILEERR_NOINTERNET MAKE_DDHRESULT(876)
#ifdef __cplusplus
} /* extern "C" */
#endif /* defined(__cplusplus) */
#endif /* __WINE_DXFILE_H */

View file

@ -101,7 +101,7 @@ static HRESULT WINAPI d3drm_light_DeleteDestroyCallback(IDirect3DRMLight *iface,
return d3drm_object_delete_destroy_callback(&light->obj, cb, ctx);
}
static HRESULT WINAPI d3drm_light_SetAppData(IDirect3DRMLight *iface, DWORD data)
static HRESULT WINAPI d3drm_light_SetAppData(IDirect3DRMLight *iface, LPVOID data)
{
struct d3drm_light *light = impl_from_IDirect3DRMLight(iface);
@ -112,7 +112,7 @@ static HRESULT WINAPI d3drm_light_SetAppData(IDirect3DRMLight *iface, DWORD data
return D3DRM_OK;
}
static DWORD WINAPI d3drm_light_GetAppData(IDirect3DRMLight *iface)
static LPVOID WINAPI d3drm_light_GetAppData(IDirect3DRMLight *iface)
{
struct d3drm_light *light = impl_from_IDirect3DRMLight(iface);
@ -378,7 +378,19 @@ HRESULT d3drm_light_create(struct d3drm_light **light, IDirect3DRM *d3drm)
if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
#elif defined(_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4090 ) /* different 'const' qualifiers */
#endif
object->IDirect3DRMLight_iface.lpVtbl = &d3drm_light_vtbl;
#ifdef __GNUC__
#pragma GCC diagnostic pop
#elif defined(_MSC_VER)
#pragma warning( pop )
#endif
object->ref = 1;
object->d3drm = d3drm;
IDirect3DRM_AddRef(object->d3drm);

View file

@ -102,7 +102,7 @@ static HRESULT WINAPI d3drm_material_DeleteDestroyCallback(IDirect3DRMMaterial2
return d3drm_object_delete_destroy_callback(&material->obj, cb, ctx);
}
static HRESULT WINAPI d3drm_material_SetAppData(IDirect3DRMMaterial2 *iface, DWORD data)
static HRESULT WINAPI d3drm_material_SetAppData(IDirect3DRMMaterial2 *iface, LPVOID data)
{
struct d3drm_material *material = impl_from_IDirect3DRMMaterial2(iface);
@ -113,7 +113,7 @@ static HRESULT WINAPI d3drm_material_SetAppData(IDirect3DRMMaterial2 *iface, DWO
return D3DRM_OK;
}
static DWORD WINAPI d3drm_material_GetAppData(IDirect3DRMMaterial2 *iface)
static LPVOID WINAPI d3drm_material_GetAppData(IDirect3DRMMaterial2 *iface)
{
struct d3drm_material *material = impl_from_IDirect3DRMMaterial2(iface);
@ -286,7 +286,19 @@ HRESULT d3drm_material_create(struct d3drm_material **material, IDirect3DRM *d3d
if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
#elif defined(_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4090 ) /* different 'const' qualifiers */
#endif
object->IDirect3DRMMaterial2_iface.lpVtbl = &d3drm_material_vtbl;
#ifdef __GNUC__
#pragma GCC diagnostic pop
#elif defined(_MSC_VER)
#pragma warning( pop )
#endif
object->ref = 1;
object->d3drm = d3drm;
IDirect3DRM_AddRef(object->d3drm);

View file

@ -427,7 +427,7 @@ static HRESULT WINAPI d3drm_mesh_builder2_DeleteDestroyCallback(IDirect3DRMMeshB
return IDirect3DRMMeshBuilder3_DeleteDestroyCallback(&mesh_builder->IDirect3DRMMeshBuilder3_iface, cb, ctx);
}
static HRESULT WINAPI d3drm_mesh_builder3_SetAppData(IDirect3DRMMeshBuilder3 *iface, DWORD data)
static HRESULT WINAPI d3drm_mesh_builder3_SetAppData(IDirect3DRMMeshBuilder3 *iface, LPVOID data)
{
struct d3drm_mesh_builder *mesh_builder = impl_from_IDirect3DRMMeshBuilder3(iface);
@ -438,7 +438,7 @@ static HRESULT WINAPI d3drm_mesh_builder3_SetAppData(IDirect3DRMMeshBuilder3 *if
return D3DRM_OK;
}
static HRESULT WINAPI d3drm_mesh_builder2_SetAppData(IDirect3DRMMeshBuilder2 *iface, DWORD data)
static HRESULT WINAPI d3drm_mesh_builder2_SetAppData(IDirect3DRMMeshBuilder2 *iface, LPVOID data)
{
struct d3drm_mesh_builder *mesh_builder = impl_from_IDirect3DRMMeshBuilder2(iface);
@ -447,7 +447,7 @@ static HRESULT WINAPI d3drm_mesh_builder2_SetAppData(IDirect3DRMMeshBuilder2 *if
return d3drm_mesh_builder3_SetAppData(&mesh_builder->IDirect3DRMMeshBuilder3_iface, data);
}
static DWORD WINAPI d3drm_mesh_builder3_GetAppData(IDirect3DRMMeshBuilder3 *iface)
static LPVOID WINAPI d3drm_mesh_builder3_GetAppData(IDirect3DRMMeshBuilder3 *iface)
{
struct d3drm_mesh_builder *mesh_builder = impl_from_IDirect3DRMMeshBuilder3(iface);
@ -456,7 +456,7 @@ static DWORD WINAPI d3drm_mesh_builder3_GetAppData(IDirect3DRMMeshBuilder3 *ifac
return mesh_builder->obj.appdata;
}
static DWORD WINAPI d3drm_mesh_builder2_GetAppData(IDirect3DRMMeshBuilder2 *iface)
static LPVOID WINAPI d3drm_mesh_builder2_GetAppData(IDirect3DRMMeshBuilder2 *iface)
{
struct d3drm_mesh_builder *mesh_builder = impl_from_IDirect3DRMMeshBuilder2(iface);
@ -1483,7 +1483,11 @@ static HRESULT WINAPI d3drm_mesh_builder3_Load(IDirect3DRMMeshBuilder3 *iface, v
clean_mesh_builder_data(mesh_builder);
#ifdef DYNAMIC_D3DXOF
hr = DynamicDirectXFileCreate(&dxfile);
#else
hr = DirectXFileCreate(&dxfile);
#endif
if (hr != DXFILE_OK)
goto end;
@ -2343,8 +2347,20 @@ HRESULT d3drm_mesh_builder_create(struct d3drm_mesh_builder **mesh_builder, IDir
if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
#elif defined(_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4090 ) /* different 'const' qualifiers */
#endif
object->IDirect3DRMMeshBuilder2_iface.lpVtbl = &d3drm_mesh_builder2_vtbl;
object->IDirect3DRMMeshBuilder3_iface.lpVtbl = &d3drm_mesh_builder3_vtbl;
#ifdef __GNUC__
#pragma GCC diagnostic pop
#elif defined(_MSC_VER)
#pragma warning( pop )
#endif
object->ref = 1;
object->d3drm = d3drm;
object->quality = D3DRMRENDER_GOURAUD;
@ -2444,7 +2460,7 @@ static HRESULT WINAPI d3drm_mesh_DeleteDestroyCallback(IDirect3DRMMesh *iface,
return d3drm_object_delete_destroy_callback(&mesh->obj, cb, ctx);
}
static HRESULT WINAPI d3drm_mesh_SetAppData(IDirect3DRMMesh *iface, DWORD data)
static HRESULT WINAPI d3drm_mesh_SetAppData(IDirect3DRMMesh *iface, LPVOID data)
{
struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
@ -2455,7 +2471,7 @@ static HRESULT WINAPI d3drm_mesh_SetAppData(IDirect3DRMMesh *iface, DWORD data)
return D3DRM_OK;
}
static DWORD WINAPI d3drm_mesh_GetAppData(IDirect3DRMMesh *iface)
static LPVOID WINAPI d3drm_mesh_GetAppData(IDirect3DRMMesh *iface)
{
struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
@ -2843,7 +2859,19 @@ HRESULT d3drm_mesh_create(struct d3drm_mesh **mesh, IDirect3DRM *d3drm)
if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
#elif defined(_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4090 ) /* different 'const' qualifiers */
#endif
object->IDirect3DRMMesh_iface.lpVtbl = &d3drm_mesh_vtbl;
#ifdef __GNUC__
#pragma GCC diagnostic pop
#elif defined(_MSC_VER)
#pragma warning( pop )
#endif
object->ref = 1;
object->d3drm = d3drm;
IDirect3DRM_AddRef(object->d3drm);
@ -2928,7 +2956,7 @@ static HRESULT WINAPI d3drm_wrap_DeleteDestroyCallback(IDirect3DRMWrap *iface,
return d3drm_object_delete_destroy_callback(&wrap->obj, cb, ctx);
}
static HRESULT WINAPI d3drm_wrap_SetAppData(IDirect3DRMWrap *iface, DWORD data)
static HRESULT WINAPI d3drm_wrap_SetAppData(IDirect3DRMWrap *iface, LPVOID data)
{
struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
@ -2939,7 +2967,7 @@ static HRESULT WINAPI d3drm_wrap_SetAppData(IDirect3DRMWrap *iface, DWORD data)
return D3DRM_OK;
}
static DWORD WINAPI d3drm_wrap_GetAppData(IDirect3DRMWrap *iface)
static LPVOID WINAPI d3drm_wrap_GetAppData(IDirect3DRMWrap *iface)
{
struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
@ -3029,7 +3057,19 @@ HRESULT d3drm_wrap_create(struct d3drm_wrap **wrap, IDirect3DRM *d3drm)
if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
#elif defined(_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4090 ) /* different 'const' qualifiers */
#endif
object->IDirect3DRMWrap_iface.lpVtbl = &d3drm_wrap_vtbl;
#ifdef __GNUC__
#pragma GCC diagnostic pop
#elif defined(_MSC_VER)
#pragma warning( pop )
#endif
object->ref = 1;
d3drm_object_init(&object->obj, classname);

View file

@ -421,7 +421,7 @@ static HRESULT WINAPI d3drm_texture1_DeleteDestroyCallback(IDirect3DRMTexture *i
return IDirect3DRMTexture3_DeleteDestroyCallback(&texture->IDirect3DRMTexture3_iface, cb, ctx);
}
static HRESULT WINAPI d3drm_texture1_SetAppData(IDirect3DRMTexture *iface, DWORD data)
static HRESULT WINAPI d3drm_texture1_SetAppData(IDirect3DRMTexture *iface, LPVOID data)
{
struct d3drm_texture *texture = impl_from_IDirect3DRMTexture(iface);
@ -430,7 +430,7 @@ static HRESULT WINAPI d3drm_texture1_SetAppData(IDirect3DRMTexture *iface, DWORD
return IDirect3DRMTexture3_SetAppData(&texture->IDirect3DRMTexture3_iface, data);
}
static DWORD WINAPI d3drm_texture1_GetAppData(IDirect3DRMTexture *iface)
static LPVOID WINAPI d3drm_texture1_GetAppData(IDirect3DRMTexture *iface)
{
struct d3drm_texture *texture = impl_from_IDirect3DRMTexture(iface);
@ -730,7 +730,7 @@ static HRESULT WINAPI d3drm_texture2_DeleteDestroyCallback(IDirect3DRMTexture2 *
return IDirect3DRMTexture3_DeleteDestroyCallback(&texture->IDirect3DRMTexture3_iface, cb, ctx);
}
static HRESULT WINAPI d3drm_texture2_SetAppData(IDirect3DRMTexture2 *iface, DWORD data)
static HRESULT WINAPI d3drm_texture2_SetAppData(IDirect3DRMTexture2 *iface, LPVOID data)
{
struct d3drm_texture *texture = impl_from_IDirect3DRMTexture2(iface);
@ -739,7 +739,7 @@ static HRESULT WINAPI d3drm_texture2_SetAppData(IDirect3DRMTexture2 *iface, DWOR
return IDirect3DRMTexture3_SetAppData(&texture->IDirect3DRMTexture3_iface, data);
}
static DWORD WINAPI d3drm_texture2_GetAppData(IDirect3DRMTexture2 *iface)
static LPVOID WINAPI d3drm_texture2_GetAppData(IDirect3DRMTexture2 *iface)
{
struct d3drm_texture *texture = impl_from_IDirect3DRMTexture2(iface);
@ -1090,7 +1090,7 @@ static HRESULT WINAPI d3drm_texture3_DeleteDestroyCallback(IDirect3DRMTexture3 *
return d3drm_object_delete_destroy_callback(&texture->obj, cb, ctx);
}
static HRESULT WINAPI d3drm_texture3_SetAppData(IDirect3DRMTexture3 *iface, DWORD data)
static HRESULT WINAPI d3drm_texture3_SetAppData(IDirect3DRMTexture3 *iface, LPVOID data)
{
struct d3drm_texture *texture = impl_from_IDirect3DRMTexture3(iface);
@ -1101,7 +1101,7 @@ static HRESULT WINAPI d3drm_texture3_SetAppData(IDirect3DRMTexture3 *iface, DWOR
return D3DRM_OK;
}
static DWORD WINAPI d3drm_texture3_GetAppData(IDirect3DRMTexture3 *iface)
static LPVOID WINAPI d3drm_texture3_GetAppData(IDirect3DRMTexture3 *iface)
{
struct d3drm_texture *texture = impl_from_IDirect3DRMTexture3(iface);
@ -1467,9 +1467,21 @@ HRESULT d3drm_texture_create(struct d3drm_texture **texture, IDirect3DRM *d3drm)
if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
#elif defined(_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4090 ) /* different 'const' qualifiers */
#endif
object->IDirect3DRMTexture_iface.lpVtbl = &d3drm_texture1_vtbl;
object->IDirect3DRMTexture2_iface.lpVtbl = &d3drm_texture2_vtbl;
object->IDirect3DRMTexture3_iface.lpVtbl = &d3drm_texture3_vtbl;
#ifdef __GNUC__
#pragma GCC diagnostic pop
#elif defined(_MSC_VER)
#pragma warning( pop )
#endif
object->d3drm = d3drm;
object->max_colors = 8;
object->max_shades = 16;

View file

@ -209,7 +209,7 @@ static HRESULT WINAPI d3drm_viewport1_DeleteDestroyCallback(IDirect3DRMViewport
return d3drm_viewport2_DeleteDestroyCallback(&viewport->IDirect3DRMViewport2_iface, cb, ctx);
}
static HRESULT WINAPI d3drm_viewport2_SetAppData(IDirect3DRMViewport2 *iface, DWORD data)
static HRESULT WINAPI d3drm_viewport2_SetAppData(IDirect3DRMViewport2 *iface, LPVOID data)
{
struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
@ -219,7 +219,7 @@ static HRESULT WINAPI d3drm_viewport2_SetAppData(IDirect3DRMViewport2 *iface, DW
return S_OK;
}
static HRESULT WINAPI d3drm_viewport1_SetAppData(IDirect3DRMViewport *iface, DWORD data)
static HRESULT WINAPI d3drm_viewport1_SetAppData(IDirect3DRMViewport *iface, LPVOID data)
{
struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
@ -228,7 +228,7 @@ static HRESULT WINAPI d3drm_viewport1_SetAppData(IDirect3DRMViewport *iface, DWO
return d3drm_viewport2_SetAppData(&viewport->IDirect3DRMViewport2_iface, data);
}
static DWORD WINAPI d3drm_viewport2_GetAppData(IDirect3DRMViewport2 *iface)
static LPVOID WINAPI d3drm_viewport2_GetAppData(IDirect3DRMViewport2 *iface)
{
struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport2(iface);
@ -237,7 +237,7 @@ static DWORD WINAPI d3drm_viewport2_GetAppData(IDirect3DRMViewport2 *iface)
return viewport->obj.appdata;
}
static DWORD WINAPI d3drm_viewport1_GetAppData(IDirect3DRMViewport *iface)
static LPVOID WINAPI d3drm_viewport1_GetAppData(IDirect3DRMViewport *iface)
{
struct d3drm_viewport *viewport = impl_from_IDirect3DRMViewport(iface);
@ -1136,8 +1136,20 @@ HRESULT d3drm_viewport_create(struct d3drm_viewport **viewport, IDirect3DRM *d3d
if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY;
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
#elif defined(_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4090 ) /* different 'const' qualifiers */
#endif
object->IDirect3DRMViewport_iface.lpVtbl = &d3drm_viewport1_vtbl;
object->IDirect3DRMViewport2_iface.lpVtbl = &d3drm_viewport2_vtbl;
#ifdef __GNUC__
#pragma GCC diagnostic pop
#elif defined(_MSC_VER)
#pragma warning( pop )
#endif
object->d3drm = d3drm;
d3drm_object_init(&object->obj, classname);

View file

@ -123,7 +123,7 @@ extern DECLSPEC_EXPORT int __cdecl __wine_dbg_header( enum __wine_debug_class cl
quotes. The string will be valid for some time, but not indefinitely
as strings are re-used. */
#if (defined(__x86_64__) || (defined(__aarch64__) && __has_attribute(ms_abi))) && defined(__GNUC__) && defined(__WINE_USE_MSVCRT)
#if 0//(defined(__x86_64__) || (defined(__aarch64__) && __has_attribute(ms_abi))) && defined(__GNUC__) && defined(__WINE_USE_MSVCRT)
# define __wine_dbg_cdecl __cdecl
#else
# define __wine_dbg_cdecl

View file

@ -42,7 +42,10 @@ else()
# to add search paths.
find_package(SDL3 CONFIG REQUIRED)
find_package(iniparser REQUIRED COMPONENTS static)
find_package(iniparser CONFIG COMPONENTS static)
if(NOT TARGET iniparser-static)
find_package(iniparser REQUIRED MODULE COMPONENTS static)
endif()
endif()
include(CheckCXXSourceCompiles)
@ -57,12 +60,6 @@ if (ENABLE_CLANG_TIDY)
set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_BIN}")
endif()
math(EXPR bits "8 * ${CMAKE_SIZEOF_VOID_P}")
message(STATUS "Building ${bits}-bit LEGO Island")
if (NOT bits EQUAL 32)
message(WARNING "Only 32-bit executables are supported")
endif()
set(MSVC_FOR_DECOMP FALSE)
if (MSVC)
# Visual C++ 4.2 -> cl version 10.2.0
@ -122,11 +119,9 @@ add_cxx_warning(parentheses)
add_library(DirectX5::DirectX5 INTERFACE IMPORTED)
target_include_directories(DirectX5::DirectX5 INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/inc")
if(ISLE_USE_DX5)
target_link_directories(DirectX5::DirectX5 INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/lib")
endif()
target_link_directories(DirectX5::DirectX5 INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/dx5/lib")
add_subdirectory(3rdparty/d3drm)
add_subdirectory(3rdparty/d3drm EXCLUDE_FROM_ALL)
add_library(Vec::Vec INTERFACE IMPORTED)
target_include_directories(Vec::Vec INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/vec")
@ -452,7 +447,11 @@ if (MINGW)
endif()
if (MSVC)
target_sources(lego1 PRIVATE LEGO1/LegoOmni.def)
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
target_sources(lego1 PRIVATE LEGO1/LegoOmni.def)
else()
target_sources(lego1 PRIVATE LEGO1/LegoOmni64.def)
endif()
else()
target_sources(lego1 PRIVATE LEGO1/LegoOmni.mingw.def)
endif()
@ -465,9 +464,10 @@ target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/lego/legoomni
target_include_directories(lego1 PUBLIC "${CMAKE_SOURCE_DIR}/LEGO1/lego/legoomni/include/actions")
# Link libraries
target_link_libraries(lego1 PRIVATE tglrl viewmanager realtime mxdirectx roi geom anim Vec::Vec dxguid misc 3dmanager miniaudio omni)
target_link_libraries(lego1 PRIVATE tglrl viewmanager realtime mxdirectx roi geom anim Vec::Vec dxguid d3drm_guid misc 3dmanager miniaudio omni)
foreach(tgt IN LISTS lego1_targets)
target_include_directories(${tgt} PRIVATE $<$<BOOL:${ISLE_D3DRM_FROM_WINE}>:$<TARGET_PROPERTY:d3drm-wine,INTERFACE_INCLUDE_DIRECTORIES>>)
target_link_libraries(${tgt} PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DirectX5::DirectX5> SDL3::SDL3)
target_compile_definitions(${tgt} PRIVATE $<$<BOOL:${ISLE_USE_DX5}>:DIRECTX5_SDK>)
endforeach()
@ -494,6 +494,8 @@ if (ISLE_BUILD_APP)
# Link DSOUND, WINMM, and LEGO1
target_link_libraries(isle PRIVATE winmm lego1)
target_include_directories(isle PRIVATE $<$<BOOL:${ISLE_D3DRM_FROM_WINE}>:$<TARGET_PROPERTY:d3drm-wine,INTERFACE_INCLUDE_DIRECTORIES>>)
# Make sure filenames are ALL CAPS
set_property(TARGET isle PROPERTY OUTPUT_NAME ISLE)
set_property(TARGET isle PROPERTY SUFFIX ".EXE")

View file

@ -385,10 +385,11 @@ int SDL_AppEvent(void* appstate, const SDL_Event* event)
break;
}
// FIXME: use g_userEvent instead of SDL_EVENT_USER
if (event->type >= SDL_EVENT_USER && event->type <= SDL_EVENT_LAST - 1) {
switch (event->user.code) {
case WM_ISLE_SETCURSOR:
g_isle->SetupCursor((Cursor) (MxS32) event->user.data1);
g_isle->SetupCursor((Cursor) (uintptr_t) event->user.data1);
break;
}
}

View file

@ -1,6 +1,6 @@
; LegoOmni.def : Declares the module paarameters for the LEGO1.DLL.
DESCRIPTION "Lego OMNI Windows Dynamic Link Library"
; DESCRIPTION "Lego OMNI Windows Dynamic Link Library"
EXPORTS

64
LEGO1/LegoOmni64.def Normal file
View file

@ -0,0 +1,64 @@
; LegoOmni64.def : Declares the module paarameters for the LEGO1.DLL.
; DESCRIPTION "Lego OMNI Windows Dynamic Link Library"
EXPORTS
; EXPORTs really required only.
?SetCD@MxOmni@@SAXPEBD@Z
?VariableTable@@YAPEAVMxVariableTable@@XZ
?SetVariable@MxVariableTable@@QEAAXPEBD0@Z
?CreateInstance@LegoOmni@@SAXXZ
?TickleManager@@YAPEAVMxTickleManager@@XZ
??1MxVideoParam@@QEAA@XZ
?configureLegoModelPresenter@LegoModelPresenter@@SAXH@Z
?SetHD@MxOmni@@SAXPEBD@Z
?QueueEvent@LegoInputManager@@QEAAXW4NotificationId@@EJJE@Z
?TransitionManager@@YAPEAVMxTransitionManager@@XZ
??1MxString@@UEAA@XZ
??0MxOmniCreateParam@@QEAA@PEBDPEAUHWND__@@AEAVMxVideoParam@@VMxOmniCreateFlags@@@Z
?configureLegoAnimationManager@LegoAnimationManager@@SAXH@Z
?GetCD@MxOmni@@SAPEBDXZ
?configureLegoWorldPresenter@LegoWorldPresenter@@SAXH@Z
?GameState@@YAPEAVLegoGameState@@XZ
?Streamer@@YAPEAVMxStreamer@@XZ
??1MxOmniCreateParam@@UEAA@XZ
?configureLegoROI@LegoROI@@SAXH@Z
?Lego@@YAPEAVLegoOmni@@XZ
??0MxVideoParamFlags@@QEAA@XZ
??0MxDSAction@@QEAA@XZ
?VideoManager@@YAPEAVLegoVideoManager@@XZ
?Timer@@YAPEAVMxTimer@@XZ
?RemoveAll@ViewManager@@QEAAXPEAVViewROI@@@Z
??4MxAtomId@@QEAAAEAV0@AEBV0@@Z
?Enable@MxBackgroundAudioManager@@QEAAXE@Z
?SetDeviceName@MxVideoParam@@QEAAXPEAD@Z
??0MxVideoParam@@QEAA@XZ
?SetSavePath@LegoGameState@@QEAAXPEAD@Z
?MoveCursor@LegoVideoManager@@QEAAXHH@Z
?SetWaitIndicator@MxTransitionManager@@QEAAXPEAVMxVideoPresenter@@@Z
?Save@LegoGameState@@QEAAJK@Z
??1MxDSAction@@UEAA@XZ
?RemoveWorld@LegoOmni@@QEAAXAEBVMxAtomId@@J@Z
?GetPrimaryBitDepth@MxDirectDraw@@SAHXZ
?CreateBackgroundAudio@LegoOmni@@QEAAXXZ
?SerializePlayersInfo@LegoGameState@@QEAAXF@Z
?GetInstance@LegoOmni@@SAPEAV1@XZ
?BackgroundAudioManager@@YAPEAVMxBackgroundAudioManager@@XZ
?configureLegoPartPresenter@LegoPartPresenter@@SAXHH@Z
?EnableRMDevice@LegoVideoManager@@QEAAHXZ
?GetRealTime@MxTimer@@QEAAJXZ
?SetAtomId@MxDSObject@@UEAAXVMxAtomId@@@Z
?DestroyInstance@MxOmni@@SAXXZ
?InputManager@@YAPEAVLegoInputManager@@XZ
?Open@MxStreamer@@QEAAPEAVMxStreamController@@PEBDG@Z
?Start@@YAJPEAVMxDSAction@@@Z
??4MxVideoParam@@QEAAAEAV0@AEBV0@@Z
?EnableFullScreenMovie@LegoVideoManager@@QEAAXEE@Z
?configureLegoBuildingManager@LegoBuildingManager@@SAXH@Z
?SerializeScoreHistory@LegoGameState@@QEAAXF@Z
?Close@MxStreamer@@QEAAJPEBD@Z
??0MxOmniCreateFlags@@QEAA@XZ
??1MxAtomId@@QEAA@XZ
?SetSound3D@MxOmni@@SAXE@Z

View file

@ -2954,7 +2954,7 @@ MxResult AnimState::Serialize(LegoFile* p_file)
MxBool AnimState::SetFlag()
{
if (m_unk0x10 != NULL) {
m_extraCharacterId = NULL;
m_extraCharacterId = 0;
for (MxS32 i = 0; i < m_unk0x0c; i++) {
m_unk0x10[i] = 0;

View file

@ -127,7 +127,7 @@ LegoTextureInfo* LegoTextureInfo::Create(const char* p_name, LegoTexture* p_text
goto done;
}
textureInfo->m_texture->SetAppData((DWORD) textureInfo);
textureInfo->m_texture->SetAppData((LPD3DRM_APPDATA) textureInfo);
return textureInfo;
done:

View file

@ -501,7 +501,8 @@ MxAtomId* LegoOmni::GetWorldAtom(MxU32 p_id)
MxS32 LegoOmni::GetWorldId(const char* p_key)
{
for (MxS32 i = 0; i < 19; i++) {
if ((MxS32) &m_worlds[i] != -4 && !strcmpi(m_worlds[i].GetKey(), p_key)) {
// FIXME: this looks very fishy. Is this guarding against out-of-bounds access?
if ((MxS32*) &m_worlds[i] != (MxS32*) -4 && !strcmpi(m_worlds[i].GetKey(), p_key)) {
return m_worlds[i].GetId();
}
}

View file

@ -92,7 +92,7 @@ LegoTextureInfo* LegoTextureContainer::GetCached(LegoTextureInfo* p_textureInfo)
return NULL;
}
else {
textureInfo->m_texture->SetAppData((DWORD) textureInfo);
textureInfo->m_texture->SetAppData((LPD3DRM_APPDATA) textureInfo);
m_cached.push_back(LegoCachedTexture(textureInfo, TRUE));
textureInfo->m_texture->AddRef();

View file

@ -1014,6 +1014,7 @@ int MxDeviceEnumerate::SupportsMMX()
}
int supports_mmx;
#ifdef _MSC_VER
#if defined(_M_IX86)
__asm {
mov eax, 0x0 ; EAX=0: Highest Function Parameter and Manufacturer ID
#if _MSC_VER > 1100
@ -1034,6 +1035,11 @@ int MxDeviceEnumerate::SupportsMMX()
adc eax, eax ; Add with carry: EAX = EAX + EAX + CF = CF
mov supports_mmx, eax ; Save eax into C variable
}
#elif defined(_M_IX64)
supports_mmx = 1;
#else
supports_mmx = 0;
#endif
#else
__asm__("movl $0x0, %%eax\n\t" // EAX=0: Highest Function Parameter and Manufacturer ID
"cpuid\n\t" // Run CPUID\n"

View file

@ -353,7 +353,7 @@ MxU8* MxDSBuffer::SkipToData()
case FOURCC('M', 'x', 'O', 'b'):
case FOURCC('M', 'x', 'C', 'h'):
result = m_pIntoBuffer;
m_pIntoBuffer = (MxU8*) ((ptr[1] & 1) + ptr[1] + (MxU32) ptr);
m_pIntoBuffer = (MxU8*) ptr + ((ptr[1] & 1) + ptr[1]);
m_pIntoBuffer = (MxU8*) ((MxU32*) m_pIntoBuffer + 2);
if (m_pBuffer + (m_writeOffset - 8) < m_pIntoBuffer) {
m_pIntoBuffer2 = result;
@ -366,7 +366,7 @@ MxU8* MxDSBuffer::SkipToData()
m_pIntoBuffer = (MxU8*) (ptr + 2);
break;
case FOURCC('M', 'x', 'H', 'd'):
m_pIntoBuffer = (MxU8*) ((MxU32) ptr + ptr[1] + 8);
m_pIntoBuffer = (MxU8*) ptr + (ptr[1] + 8);
break;
default:
m_pIntoBuffer = NULL;
@ -460,7 +460,7 @@ MxU8* MxDSBuffer::FUN_100c6fa0(MxU8* p_data)
if (current != p_data) {
return current;
}
current = ((MxU32) current & 1) + current;
current += ((uintptr_t) current) & 1;
current += 8;
break;
case FOURCC('M', 'x', 'H', 'd'):