[AMSTREAM] We don't need to define WIDL_C_INLINE_WRAPPERS here anymore.
[reactos.git] / dll / directx / wine / d3dx9_36 / line.c
index cac954e..e1b691a 100644 (file)
 
 #include "d3dx9_36_private.h"
 
-typedef struct ID3DXLineImpl {
+struct d3dx9_line
+{
     ID3DXLine ID3DXLine_iface;
     LONG ref;
 
     IDirect3DDevice9 *device;
     IDirect3DStateBlock9 *state;
-} ID3DXLineImpl;
+};
 
-static inline ID3DXLineImpl *impl_from_ID3DXLine(ID3DXLine *iface)
+static inline struct d3dx9_line *impl_from_ID3DXLine(ID3DXLine *iface)
 {
-    return CONTAINING_RECORD(iface, ID3DXLineImpl, ID3DXLine_iface);
+    return CONTAINING_RECORD(iface, struct d3dx9_line, ID3DXLine_iface);
 }
 
-/*** IUnknown methods ***/
-static HRESULT WINAPI ID3DXLineImpl_QueryInterface(ID3DXLine* iface, REFIID riid, LPVOID* object)
+static HRESULT WINAPI d3dx9_line_QueryInterface(ID3DXLine *iface, REFIID riid, void **out)
 {
-    TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), object);
+    TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
 
-    if (IsEqualGUID(riid, &IID_IUnknown) ||
-        IsEqualGUID(riid, &IID_ID3DXLine))
+    if (IsEqualGUID(riid, &IID_ID3DXLine)
+            || IsEqualGUID(riid, &IID_IUnknown))
     {
         ID3DXLine_AddRef(iface);
-        *object = iface;
+        *out = iface;
         return S_OK;
     }
 
-    ERR("Interface %s not found\n", debugstr_guid(riid));
+    WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
 
+    *out = NULL;
     return E_NOINTERFACE;
 }
 
-static ULONG WINAPI ID3DXLineImpl_AddRef(ID3DXLine* iface)
+static ULONG WINAPI d3dx9_line_AddRef(ID3DXLine *iface)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
+    struct d3dx9_line *line = impl_from_ID3DXLine(iface);
+    ULONG refcount = InterlockedIncrement(&line->ref);
 
-    TRACE("(%p)->(): AddRef from %u\n", This, This->ref);
+    TRACE("%p increasing refcount to %u.\n", line, refcount);
 
-    return InterlockedIncrement(&This->ref);
+    return refcount;
 }
 
-static ULONG WINAPI ID3DXLineImpl_Release(ID3DXLine* iface)
+static ULONG WINAPI d3dx9_line_Release(ID3DXLine *iface)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-    ULONG ref = InterlockedDecrement(&This->ref);
+    struct d3dx9_line *line = impl_from_ID3DXLine(iface);
+    ULONG refcount = InterlockedDecrement(&line->ref);
 
-    TRACE("(%p)->(): Release from %u\n", This, ref + 1);
+    TRACE("%p decreasing refcount to %u.\n", line, refcount);
 
-    if (!ref)
+    if (!refcount)
     {
-        IDirect3DDevice9_Release(This->device);
-        HeapFree(GetProcessHeap(), 0, This);
+        IDirect3DDevice9_Release(line->device);
+        HeapFree(GetProcessHeap(), 0, line);
     }
 
-    return ref;
+    return refcount;
 }
 
-/*** ID3DXLine methods ***/
-static HRESULT WINAPI ID3DXLineImpl_GetDevice(struct ID3DXLine *iface, struct IDirect3DDevice9 **device)
+static HRESULT WINAPI d3dx9_line_GetDevice(struct ID3DXLine *iface, struct IDirect3DDevice9 **device)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
+    struct d3dx9_line *line = impl_from_ID3DXLine(iface);
 
-    TRACE ("(%p)->(%p)\n", This, device);
+    TRACE("iface %p, device %p.\n", iface, line);
 
-    if (device == NULL) return D3DERR_INVALIDCALL;
+    if (!device)
+        return D3DERR_INVALIDCALL;
 
-    *device = This->device;
-    IDirect3DDevice9_AddRef(This->device);
+    *device = line->device;
+    IDirect3DDevice9_AddRef(line->device);
 
     return D3D_OK;
 }
 
-static HRESULT WINAPI ID3DXLineImpl_Begin(ID3DXLine* iface)
+static HRESULT WINAPI d3dx9_line_Begin(ID3DXLine *iface)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-
-    HRESULT hr;
+    struct d3dx9_line *line = impl_from_ID3DXLine(iface);
     D3DXMATRIX identity, projection;
     D3DVIEWPORT9 vp;
 
-    TRACE ("(%p)->()\n", This);
+    TRACE("iface %p.\n", iface);
 
-    if (This->state != NULL) /* We already began. Return error. */
+    if (line->state)
         return D3DERR_INVALIDCALL;
 
-    hr = IDirect3DDevice9_CreateStateBlock(This->device, D3DSBT_ALL, &This->state);
-    if (FAILED(hr)) return D3DXERR_INVALIDDATA;
+    if (FAILED(IDirect3DDevice9_CreateStateBlock(line->device, D3DSBT_ALL, &line->state)))
+        return D3DXERR_INVALIDDATA;
 
-    hr = IDirect3DDevice9_GetViewport(This->device, &vp);
-    if (FAILED(hr)) goto failed;
+    if (FAILED(IDirect3DDevice9_GetViewport(line->device, &vp)))
+        goto failed;
 
     D3DXMatrixIdentity(&identity);
-    D3DXMatrixOrthoOffCenterLH(&projection,
-                               0.0, vp.Width, /* Min and max x */
-                               vp.Height, 0.0, /* Min and max y. Screen y is on top so this is inverted */
-                               0.0, 1.0); /* Min and max z */
-
-    hr = IDirect3DDevice9_SetTransform(This->device, D3DTS_WORLD, &identity);
-    if (FAILED(hr)) goto failed;
-
-    hr = IDirect3DDevice9_SetTransform(This->device, D3DTS_VIEW, &identity);
-    if (FAILED(hr)) goto failed;
-
-    hr = IDirect3DDevice9_SetTransform(This->device, D3DTS_PROJECTION, &projection);
-    if (FAILED(hr)) goto failed;
-
-    /* Windows sets similar states so we do the same */
-
-    hr = IDirect3DDevice9_SetRenderState(This->device, D3DRS_LIGHTING, FALSE);
-    if (FAILED(hr)) goto failed;
-
-    hr = IDirect3DDevice9_SetRenderState(This->device, D3DRS_FOGENABLE, FALSE);
-    if (FAILED(hr)) goto failed;
-
-    hr = IDirect3DDevice9_SetRenderState(This->device, D3DRS_SHADEMODE, D3DSHADE_FLAT);
-    if (FAILED(hr)) goto failed;
-
-    hr = IDirect3DDevice9_SetRenderState(This->device, D3DRS_ALPHABLENDENABLE, TRUE);
-    if (FAILED(hr)) goto failed;
-
-    hr = IDirect3DDevice9_SetRenderState(This->device, D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
-    if (FAILED(hr)) goto failed;
-
-    hr = IDirect3DDevice9_SetRenderState(This->device, D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
-    if (FAILED(hr)) goto failed;
+    D3DXMatrixOrthoOffCenterLH(&projection, 0.0, (FLOAT)vp.Width, (FLOAT)vp.Height, 0.0, 0.0, 1.0);
+
+    if (FAILED(IDirect3DDevice9_SetTransform(line->device, D3DTS_WORLD, &identity)))
+        goto failed;
+    if (FAILED(IDirect3DDevice9_SetTransform(line->device, D3DTS_VIEW, &identity)))
+        goto failed;
+    if (FAILED(IDirect3DDevice9_SetTransform(line->device, D3DTS_PROJECTION, &projection)))
+        goto failed;
+
+    if (FAILED(IDirect3DDevice9_SetRenderState(line->device, D3DRS_LIGHTING, FALSE)))
+        goto failed;
+    if (FAILED(IDirect3DDevice9_SetRenderState(line->device, D3DRS_FOGENABLE, FALSE)))
+        goto failed;
+    if (FAILED(IDirect3DDevice9_SetRenderState(line->device, D3DRS_SHADEMODE, D3DSHADE_FLAT)))
+        goto failed;
+    if (FAILED(IDirect3DDevice9_SetRenderState(line->device, D3DRS_ALPHABLENDENABLE, TRUE)))
+        goto failed;
+    if (FAILED(IDirect3DDevice9_SetRenderState(line->device, D3DRS_SRCBLEND, D3DBLEND_SRCALPHA)))
+        goto failed;
+    if (FAILED(IDirect3DDevice9_SetRenderState(line->device, D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA)))
+        goto failed;
 
     return D3D_OK;
+
 failed:
-    IDirect3DStateBlock9_Apply(This->state);
-    IDirect3DStateBlock9_Release(This->state);
-    This->state = NULL;
+    IDirect3DStateBlock9_Apply(line->state);
+    IDirect3DStateBlock9_Release(line->state);
+    line->state = NULL;
     return D3DXERR_INVALIDDATA;
 }
 
-static HRESULT WINAPI ID3DXLineImpl_Draw(ID3DXLine* iface, CONST D3DXVECTOR2* vertexlist, DWORD vertexlistcount, D3DCOLOR color)
+static HRESULT WINAPI d3dx9_line_Draw(ID3DXLine *iface, const D3DXVECTOR2 *vertex_list,
+        DWORD vertex_list_count, D3DCOLOR color)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-
-    FIXME("(%p)->(%p, %u, %#x): stub\n", This, vertexlist, vertexlistcount, color);
+    FIXME("iface %p, vertex_list %p, vertex_list_count %u, color 0x%08x stub!\n",
+            iface, vertex_list, vertex_list_count, color);
 
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI ID3DXLineImpl_DrawTransform(ID3DXLine* iface, CONST D3DXVECTOR3* vertexlist, DWORD vertexlistcount,
-                                                  CONST D3DXMATRIX* transform, D3DCOLOR color)
+static HRESULT WINAPI d3dx9_line_DrawTransform(ID3DXLine *iface, const D3DXVECTOR3 *vertex_list,
+        DWORD vertex_list_count, const D3DXMATRIX *transform, D3DCOLOR color)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-
-    FIXME("(%p)->(%p, %u, %p, %#x): stub\n", This, vertexlist, vertexlistcount, transform, color);
+    FIXME("iface %p, vertex_list %p, vertex_list_count %u, transform %p, color 0x%08x stub!\n",
+            iface, vertex_list, vertex_list_count, transform, color);
 
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI ID3DXLineImpl_SetPattern(ID3DXLine* iface, DWORD pattern)
+static HRESULT WINAPI d3dx9_line_SetPattern(ID3DXLine *iface, DWORD pattern)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-
-    FIXME("(%p)->(%#x): stub\n", This, pattern);
+    FIXME("iface %p, pattern 0x%08x stub!\n", iface, pattern);
 
     return E_NOTIMPL;
 }
 
-static DWORD WINAPI ID3DXLineImpl_GetPattern(ID3DXLine* iface)
+static DWORD WINAPI d3dx9_line_GetPattern(ID3DXLine *iface)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-
-    FIXME("(%p)->(): stub\n", This);
+    FIXME("iface %p stub!\n", iface);
 
-    return 0xFFFFFFFF;
+    return 0xffffffff;
 }
 
-static HRESULT WINAPI ID3DXLineImpl_SetPatternScale(ID3DXLine* iface, FLOAT scale)
+static HRESULT WINAPI d3dx9_line_SetPatternScale(ID3DXLine *iface, float scale)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-
-    FIXME("(%p)->(%f): stub\n", This, scale);
+    FIXME("iface %p, scale %.8e stub!\n", iface, scale);
 
     return E_NOTIMPL;
 }
 
-static FLOAT WINAPI ID3DXLineImpl_GetPatternScale(ID3DXLine* iface)
+static float WINAPI d3dx9_line_GetPatternScale(ID3DXLine *iface)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-
-    FIXME("(%p)->(): stub\n", This);
+    FIXME("iface %p stub!\n", iface);
 
     return 1.0f;
 }
 
-static HRESULT WINAPI ID3DXLineImpl_SetWidth(ID3DXLine* iface, FLOAT width)
+static HRESULT WINAPI d3dx9_line_SetWidth(ID3DXLine *iface, float width)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-
-    FIXME("(%p)->(%f): stub\n", This, width);
+    FIXME("iface %p, width %.8e stub!\n", iface, width);
 
     return E_NOTIMPL;
 }
 
-static FLOAT WINAPI ID3DXLineImpl_GetWidth(ID3DXLine* iface)
+static float WINAPI d3dx9_line_GetWidth(ID3DXLine *iface)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-
-    FIXME("(%p)->(): stub\n", This);
+    FIXME("iface %p stub!\n", iface);
 
     return 1.0f;
 }
 
-static HRESULT WINAPI ID3DXLineImpl_SetAntialias(ID3DXLine* iface, BOOL antialias)
+static HRESULT WINAPI d3dx9_line_SetAntialias(ID3DXLine *iface, BOOL antialias)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-
-    FIXME("(%p)->(%u): stub\n", This, antialias);
+    FIXME("iface %p, antialias %#x stub!\n", iface, antialias);
 
     return E_NOTIMPL;
 }
 
-static BOOL WINAPI ID3DXLineImpl_GetAntialias(ID3DXLine* iface)
+static BOOL WINAPI d3dx9_line_GetAntialias(ID3DXLine *iface)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-
-    FIXME("(%p)->(): stub\n", This);
+    FIXME("iface %p stub!\n", iface);
 
     return FALSE;
 }
 
-static HRESULT WINAPI ID3DXLineImpl_SetGLLines(ID3DXLine* iface, BOOL gl_lines)
+static HRESULT WINAPI d3dx9_line_SetGLLines(ID3DXLine *iface, BOOL gl_lines)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-
-    FIXME("(%p)->(%u): stub\n", This, gl_lines);
+    FIXME("iface %p, gl_lines %#x stub!\n", iface, gl_lines);
 
     return E_NOTIMPL;
 }
 
-static BOOL WINAPI ID3DXLineImpl_GetGLLines(ID3DXLine* iface)
+static BOOL WINAPI d3dx9_line_GetGLLines(ID3DXLine *iface)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-
-    FIXME("(%p)->(): stub\n", This);
+    FIXME("iface %p stub!\n", iface);
 
     return FALSE;
 }
 
-static HRESULT WINAPI ID3DXLineImpl_End(ID3DXLine* iface)
+static HRESULT WINAPI d3dx9_line_End(ID3DXLine *iface)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
+    struct d3dx9_line *line = impl_from_ID3DXLine(iface);
 
     HRESULT hr;
 
-    TRACE ("(%p)->()\n", This);
+    TRACE("iface %p.\n", iface);
 
-    if (This->state == NULL) /* We haven't begun yet. */
+    if (!line->state)
         return D3DERR_INVALIDCALL;
 
-    hr = IDirect3DStateBlock9_Apply(This->state);
-    IDirect3DStateBlock9_Release(This->state);
-    This->state = NULL;
+    hr = IDirect3DStateBlock9_Apply(line->state);
+    IDirect3DStateBlock9_Release(line->state);
+    line->state = NULL;
 
-    if (FAILED(hr)) return D3DXERR_INVALIDDATA;
-    else return D3D_OK;
+    if (FAILED(hr))
+        return D3DXERR_INVALIDDATA;
+
+    return D3D_OK;
 }
 
-static HRESULT WINAPI ID3DXLineImpl_OnLostDevice(ID3DXLine* iface)
+static HRESULT WINAPI d3dx9_line_OnLostDevice(ID3DXLine *iface)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-
-    FIXME("(%p)->(): stub\n", This);
+    FIXME("iface %p stub!\n", iface);
 
     return E_NOTIMPL;
 }
-static HRESULT WINAPI ID3DXLineImpl_OnResetDevice(ID3DXLine* iface)
+static HRESULT WINAPI d3dx9_line_OnResetDevice(ID3DXLine *iface)
 {
-    ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
-
-    FIXME("(%p)->(): stub\n", This);
+    FIXME("iface %p stub!\n", iface);
 
     return E_NOTIMPL;
 }
 
-static const struct ID3DXLineVtbl ID3DXLine_Vtbl =
+static const struct ID3DXLineVtbl d3dx9_line_vtbl =
 {
-    /*** IUnknown methods ***/
-    ID3DXLineImpl_QueryInterface,
-    ID3DXLineImpl_AddRef,
-    ID3DXLineImpl_Release,
-    /*** ID3DXLine methods ***/
-    ID3DXLineImpl_GetDevice,
-    ID3DXLineImpl_Begin,
-    ID3DXLineImpl_Draw,
-    ID3DXLineImpl_DrawTransform,
-    ID3DXLineImpl_SetPattern,
-    ID3DXLineImpl_GetPattern,
-    ID3DXLineImpl_SetPatternScale,
-    ID3DXLineImpl_GetPatternScale,
-    ID3DXLineImpl_SetWidth,
-    ID3DXLineImpl_GetWidth,
-    ID3DXLineImpl_SetAntialias,
-    ID3DXLineImpl_GetAntialias,
-    ID3DXLineImpl_SetGLLines,
-    ID3DXLineImpl_GetGLLines,
-    ID3DXLineImpl_End,
-    ID3DXLineImpl_OnLostDevice,
-    ID3DXLineImpl_OnResetDevice
+    d3dx9_line_QueryInterface,
+    d3dx9_line_AddRef,
+    d3dx9_line_Release,
+    d3dx9_line_GetDevice,
+    d3dx9_line_Begin,
+    d3dx9_line_Draw,
+    d3dx9_line_DrawTransform,
+    d3dx9_line_SetPattern,
+    d3dx9_line_GetPattern,
+    d3dx9_line_SetPatternScale,
+    d3dx9_line_GetPatternScale,
+    d3dx9_line_SetWidth,
+    d3dx9_line_GetWidth,
+    d3dx9_line_SetAntialias,
+    d3dx9_line_GetAntialias,
+    d3dx9_line_SetGLLines,
+    d3dx9_line_GetGLLines,
+    d3dx9_line_End,
+    d3dx9_line_OnLostDevice,
+    d3dx9_line_OnResetDevice,
 };
 
 HRESULT WINAPI D3DXCreateLine(struct IDirect3DDevice9 *device, struct ID3DXLine **line)
 {
-    ID3DXLineImpl* object;
+    struct d3dx9_line *object;
 
-    TRACE("(%p, %p)\n", device, line);
+    TRACE("device %p, line %p.\n", device, line);
 
     if (!device || !line)
         return D3DERR_INVALIDCALL;
 
-    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ID3DXLineImpl));
-    if (!object)
+    if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
         return E_OUTOFMEMORY;
 
-    object->ID3DXLine_iface.lpVtbl = &ID3DXLine_Vtbl;
+    object->ID3DXLine_iface.lpVtbl = &d3dx9_line_vtbl;
     object->ref = 1;
     object->device = device;
-    object->state = NULL; /* We only initialize it on Begin */
     IDirect3DDevice9_AddRef(device);
 
     *line = &object->ID3DXLine_iface;