Michael Stefaniuc : windowscodecs: Use ifaces instead of vtbl pointers in PngEncoder.

Alexandre Julliard julliard at winehq.org
Fri Dec 17 11:30:44 CST 2010


Module: wine
Branch: master
Commit: 53af9f2b1ec93df8713eedc841637f26efdf7100
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=53af9f2b1ec93df8713eedc841637f26efdf7100

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Thu Dec 16 01:04:24 2010 +0100

windowscodecs: Use ifaces instead of vtbl pointers in PngEncoder.

---

 dlls/windowscodecs/pngformat.c |   53 ++++++++++++++++++++++------------------
 1 files changed, 29 insertions(+), 24 deletions(-)

diff --git a/dlls/windowscodecs/pngformat.c b/dlls/windowscodecs/pngformat.c
index 9923097..f1c0e3c 100644
--- a/dlls/windowscodecs/pngformat.c
+++ b/dlls/windowscodecs/pngformat.c
@@ -803,8 +803,8 @@ static const struct png_pixelformat formats[] = {
 };
 
 typedef struct PngEncoder {
-    const IWICBitmapEncoderVtbl *lpVtbl;
-    const IWICBitmapFrameEncodeVtbl *lpFrameVtbl;
+    IWICBitmapEncoder IWICBitmapEncoder_iface;
+    IWICBitmapFrameEncode IWICBitmapFrameEncode_iface;
     LONG ref;
     IStream *stream;
     png_structp png_ptr;
@@ -821,15 +821,20 @@ typedef struct PngEncoder {
     CRITICAL_SECTION lock;
 } PngEncoder;
 
-static inline PngEncoder *encoder_from_frame(IWICBitmapFrameEncode *iface)
+static inline PngEncoder *impl_from_IWICBitmapEncoder(IWICBitmapEncoder *iface)
 {
-    return CONTAINING_RECORD(iface, PngEncoder, lpFrameVtbl);
+    return CONTAINING_RECORD(iface, PngEncoder, IWICBitmapEncoder_iface);
+}
+
+static inline PngEncoder *impl_from_IWICBitmapFrameEncode(IWICBitmapFrameEncode *iface)
+{
+    return CONTAINING_RECORD(iface, PngEncoder, IWICBitmapFrameEncode_iface);
 }
 
 static HRESULT WINAPI PngFrameEncode_QueryInterface(IWICBitmapFrameEncode *iface, REFIID iid,
     void **ppv)
 {
-    PngEncoder *This = encoder_from_frame(iface);
+    PngEncoder *This = impl_from_IWICBitmapFrameEncode(iface);
     TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), ppv);
 
     if (!ppv) return E_INVALIDARG;
@@ -837,7 +842,7 @@ static HRESULT WINAPI PngFrameEncode_QueryInterface(IWICBitmapFrameEncode *iface
     if (IsEqualIID(&IID_IUnknown, iid) ||
         IsEqualIID(&IID_IWICBitmapFrameEncode, iid))
     {
-        *ppv = &This->lpFrameVtbl;
+        *ppv = &This->IWICBitmapFrameEncode_iface;
     }
     else
     {
@@ -851,20 +856,20 @@ static HRESULT WINAPI PngFrameEncode_QueryInterface(IWICBitmapFrameEncode *iface
 
 static ULONG WINAPI PngFrameEncode_AddRef(IWICBitmapFrameEncode *iface)
 {
-    PngEncoder *This = encoder_from_frame(iface);
+    PngEncoder *This = impl_from_IWICBitmapFrameEncode(iface);
     return IUnknown_AddRef((IUnknown*)This);
 }
 
 static ULONG WINAPI PngFrameEncode_Release(IWICBitmapFrameEncode *iface)
 {
-    PngEncoder *This = encoder_from_frame(iface);
+    PngEncoder *This = impl_from_IWICBitmapFrameEncode(iface);
     return IUnknown_Release((IUnknown*)This);
 }
 
 static HRESULT WINAPI PngFrameEncode_Initialize(IWICBitmapFrameEncode *iface,
     IPropertyBag2 *pIEncoderOptions)
 {
-    PngEncoder *This = encoder_from_frame(iface);
+    PngEncoder *This = impl_from_IWICBitmapFrameEncode(iface);
     TRACE("(%p,%p)\n", iface, pIEncoderOptions);
 
     EnterCriticalSection(&This->lock);
@@ -885,7 +890,7 @@ static HRESULT WINAPI PngFrameEncode_Initialize(IWICBitmapFrameEncode *iface,
 static HRESULT WINAPI PngFrameEncode_SetSize(IWICBitmapFrameEncode *iface,
     UINT uiWidth, UINT uiHeight)
 {
-    PngEncoder *This = encoder_from_frame(iface);
+    PngEncoder *This = impl_from_IWICBitmapFrameEncode(iface);
     TRACE("(%p,%u,%u)\n", iface, uiWidth, uiHeight);
 
     EnterCriticalSection(&This->lock);
@@ -907,7 +912,7 @@ static HRESULT WINAPI PngFrameEncode_SetSize(IWICBitmapFrameEncode *iface,
 static HRESULT WINAPI PngFrameEncode_SetResolution(IWICBitmapFrameEncode *iface,
     double dpiX, double dpiY)
 {
-    PngEncoder *This = encoder_from_frame(iface);
+    PngEncoder *This = impl_from_IWICBitmapFrameEncode(iface);
     TRACE("(%p,%0.2f,%0.2f)\n", iface, dpiX, dpiY);
 
     EnterCriticalSection(&This->lock);
@@ -929,7 +934,7 @@ static HRESULT WINAPI PngFrameEncode_SetResolution(IWICBitmapFrameEncode *iface,
 static HRESULT WINAPI PngFrameEncode_SetPixelFormat(IWICBitmapFrameEncode *iface,
     WICPixelFormatGUID *pPixelFormat)
 {
-    PngEncoder *This = encoder_from_frame(iface);
+    PngEncoder *This = impl_from_IWICBitmapFrameEncode(iface);
     int i;
     TRACE("(%p,%s)\n", iface, debugstr_guid(pPixelFormat));
 
@@ -981,7 +986,7 @@ static HRESULT WINAPI PngFrameEncode_SetThumbnail(IWICBitmapFrameEncode *iface,
 static HRESULT WINAPI PngFrameEncode_WritePixels(IWICBitmapFrameEncode *iface,
     UINT lineCount, UINT cbStride, UINT cbBufferSize, BYTE *pbPixels)
 {
-    PngEncoder *This = encoder_from_frame(iface);
+    PngEncoder *This = impl_from_IWICBitmapFrameEncode(iface);
     png_byte **row_pointers=NULL;
     UINT i;
     jmp_buf jmpbuf;
@@ -1056,7 +1061,7 @@ static HRESULT WINAPI PngFrameEncode_WritePixels(IWICBitmapFrameEncode *iface,
 static HRESULT WINAPI PngFrameEncode_WriteSource(IWICBitmapFrameEncode *iface,
     IWICBitmapSource *pIBitmapSource, WICRect *prc)
 {
-    PngEncoder *This = encoder_from_frame(iface);
+    PngEncoder *This = impl_from_IWICBitmapFrameEncode(iface);
     HRESULT hr;
     WICRect rc;
     WICPixelFormatGUID guid;
@@ -1128,7 +1133,7 @@ static HRESULT WINAPI PngFrameEncode_WriteSource(IWICBitmapFrameEncode *iface,
 
 static HRESULT WINAPI PngFrameEncode_Commit(IWICBitmapFrameEncode *iface)
 {
-    PngEncoder *This = encoder_from_frame(iface);
+    PngEncoder *This = impl_from_IWICBitmapFrameEncode(iface);
     jmp_buf jmpbuf;
     TRACE("(%p)\n", iface);
 
@@ -1184,7 +1189,7 @@ static const IWICBitmapFrameEncodeVtbl PngEncoder_FrameVtbl = {
 static HRESULT WINAPI PngEncoder_QueryInterface(IWICBitmapEncoder *iface, REFIID iid,
     void **ppv)
 {
-    PngEncoder *This = (PngEncoder*)iface;
+    PngEncoder *This = impl_from_IWICBitmapEncoder(iface);
     TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), ppv);
 
     if (!ppv) return E_INVALIDARG;
@@ -1206,7 +1211,7 @@ static HRESULT WINAPI PngEncoder_QueryInterface(IWICBitmapEncoder *iface, REFIID
 
 static ULONG WINAPI PngEncoder_AddRef(IWICBitmapEncoder *iface)
 {
-    PngEncoder *This = (PngEncoder*)iface;
+    PngEncoder *This = impl_from_IWICBitmapEncoder(iface);
     ULONG ref = InterlockedIncrement(&This->ref);
 
     TRACE("(%p) refcount=%u\n", iface, ref);
@@ -1216,7 +1221,7 @@ static ULONG WINAPI PngEncoder_AddRef(IWICBitmapEncoder *iface)
 
 static ULONG WINAPI PngEncoder_Release(IWICBitmapEncoder *iface)
 {
-    PngEncoder *This = (PngEncoder*)iface;
+    PngEncoder *This = impl_from_IWICBitmapEncoder(iface);
     ULONG ref = InterlockedDecrement(&This->ref);
 
     TRACE("(%p) refcount=%u\n", iface, ref);
@@ -1255,7 +1260,7 @@ static void user_flush(png_structp png_ptr)
 static HRESULT WINAPI PngEncoder_Initialize(IWICBitmapEncoder *iface,
     IStream *pIStream, WICBitmapEncoderCacheOption cacheOption)
 {
-    PngEncoder *This = (PngEncoder*)iface;
+    PngEncoder *This = impl_from_IWICBitmapEncoder(iface);
     jmp_buf jmpbuf;
 
     TRACE("(%p,%p,%u)\n", iface, pIStream, cacheOption);
@@ -1350,7 +1355,7 @@ static HRESULT WINAPI PngEncoder_SetPreview(IWICBitmapEncoder *iface, IWICBitmap
 static HRESULT WINAPI PngEncoder_CreateNewFrame(IWICBitmapEncoder *iface,
     IWICBitmapFrameEncode **ppIFrameEncode, IPropertyBag2 **ppIEncoderOptions)
 {
-    PngEncoder *This = (PngEncoder*)iface;
+    PngEncoder *This = impl_from_IWICBitmapEncoder(iface);
     HRESULT hr;
     TRACE("(%p,%p,%p)\n", iface, ppIFrameEncode, ppIEncoderOptions);
 
@@ -1380,14 +1385,14 @@ static HRESULT WINAPI PngEncoder_CreateNewFrame(IWICBitmapEncoder *iface,
     LeaveCriticalSection(&This->lock);
 
     IWICBitmapEncoder_AddRef(iface);
-    *ppIFrameEncode = (IWICBitmapFrameEncode*)&This->lpFrameVtbl;
+    *ppIFrameEncode = &This->IWICBitmapFrameEncode_iface;
 
     return S_OK;
 }
 
 static HRESULT WINAPI PngEncoder_Commit(IWICBitmapEncoder *iface)
 {
-    PngEncoder *This = (PngEncoder*)iface;
+    PngEncoder *This = impl_from_IWICBitmapEncoder(iface);
     TRACE("(%p)\n", iface);
 
     EnterCriticalSection(&This->lock);
@@ -1448,8 +1453,8 @@ HRESULT PngEncoder_CreateInstance(IUnknown *pUnkOuter, REFIID iid, void** ppv)
     This = HeapAlloc(GetProcessHeap(), 0, sizeof(PngEncoder));
     if (!This) return E_OUTOFMEMORY;
 
-    This->lpVtbl = &PngEncoder_Vtbl;
-    This->lpFrameVtbl = &PngEncoder_FrameVtbl;
+    This->IWICBitmapEncoder_iface.lpVtbl = &PngEncoder_Vtbl;
+    This->IWICBitmapFrameEncode_iface.lpVtbl = &PngEncoder_FrameVtbl;
     This->ref = 1;
     This->png_ptr = NULL;
     This->info_ptr = NULL;




More information about the wine-cvs mailing list