ReactOS  0.4.15-dev-448-gd6c4411
bitmap.c File Reference
#include "config.h"
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "objbase.h"
#include "wincodecs_private.h"
#include "wine/asm.h"
#include "wine/debug.h"
Include dependency graph for bitmap.c:

Go to the source code of this file.

Classes

struct  BitmapImpl
 
struct  BitmapLockImpl
 

Macros

#define COBJMACROS
 

Typedefs

typedef struct BitmapImpl BitmapImpl
 
typedef struct BitmapLockImpl BitmapLockImpl
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (wincodecs)
 
static BitmapImplimpl_from_IWICBitmap (IWICBitmap *iface)
 
static BitmapImplimpl_from_IMILBitmap (IMILBitmap *iface)
 
static BitmapImplimpl_from_IMILUnknown1 (IMILUnknown1 *iface)
 
static BitmapImplimpl_from_IMILUnknown2 (IMILUnknown2 *iface)
 
static BitmapLockImplimpl_from_IWICBitmapLock (IWICBitmapLock *iface)
 
static BOOL BitmapImpl_AcquireLock (BitmapImpl *This, int write)
 
static void BitmapImpl_ReleaseLock (BitmapImpl *This)
 
static HRESULT WINAPI BitmapLockImpl_QueryInterface (IWICBitmapLock *iface, REFIID iid, void **ppv)
 
static ULONG WINAPI BitmapLockImpl_AddRef (IWICBitmapLock *iface)
 
static ULONG WINAPI BitmapLockImpl_Release (IWICBitmapLock *iface)
 
static HRESULT WINAPI BitmapLockImpl_GetSize (IWICBitmapLock *iface, UINT *puiWidth, UINT *puiHeight)
 
static HRESULT WINAPI BitmapLockImpl_GetStride (IWICBitmapLock *iface, UINT *pcbStride)
 
static HRESULT WINAPI BitmapLockImpl_GetDataPointer (IWICBitmapLock *iface, UINT *pcbBufferSize, BYTE **ppbData)
 
static HRESULT WINAPI BitmapLockImpl_GetPixelFormat (IWICBitmapLock *iface, WICPixelFormatGUID *pPixelFormat)
 
static HRESULT WINAPI BitmapImpl_QueryInterface (IWICBitmap *iface, REFIID iid, void **ppv)
 
static ULONG WINAPI BitmapImpl_AddRef (IWICBitmap *iface)
 
static ULONG WINAPI BitmapImpl_Release (IWICBitmap *iface)
 
static HRESULT WINAPI BitmapImpl_GetSize (IWICBitmap *iface, UINT *puiWidth, UINT *puiHeight)
 
static HRESULT WINAPI BitmapImpl_GetPixelFormat (IWICBitmap *iface, WICPixelFormatGUID *pPixelFormat)
 
static HRESULT WINAPI BitmapImpl_GetResolution (IWICBitmap *iface, double *pDpiX, double *pDpiY)
 
static HRESULT WINAPI BitmapImpl_CopyPalette (IWICBitmap *iface, IWICPalette *pIPalette)
 
static HRESULT WINAPI BitmapImpl_CopyPixels (IWICBitmap *iface, const WICRect *prc, UINT cbStride, UINT cbBufferSize, BYTE *pbBuffer)
 
static HRESULT WINAPI BitmapImpl_Lock (IWICBitmap *iface, const WICRect *prcLock, DWORD flags, IWICBitmapLock **ppILock)
 
static HRESULT WINAPI BitmapImpl_SetPalette (IWICBitmap *iface, IWICPalette *pIPalette)
 
static HRESULT WINAPI BitmapImpl_SetResolution (IWICBitmap *iface, double dpiX, double dpiY)
 
static HRESULT WINAPI IMILBitmapImpl_QueryInterface (IMILBitmap *iface, REFIID iid, void **ppv)
 
static ULONG WINAPI IMILBitmapImpl_AddRef (IMILBitmap *iface)
 
static ULONG WINAPI IMILBitmapImpl_Release (IMILBitmap *iface)
 
static HRESULT WINAPI IMILBitmapImpl_GetSize (IMILBitmap *iface, UINT *width, UINT *height)
 
static HRESULT WINAPI IMILBitmapImpl_GetPixelFormat (IMILBitmap *iface, int *format)
 
static HRESULT WINAPI IMILBitmapImpl_GetResolution (IMILBitmap *iface, double *dpix, double *dpiy)
 
static HRESULT WINAPI IMILBitmapImpl_CopyPalette (IMILBitmap *iface, IWICPalette *palette)
 
static HRESULT WINAPI IMILBitmapImpl_CopyPixels (IMILBitmap *iface, const WICRect *rc, UINT stride, UINT size, BYTE *buffer)
 
static HRESULT WINAPI IMILBitmapImpl_unknown1 (IMILBitmap *iface, void **ppv)
 
static HRESULT WINAPI IMILBitmapImpl_Lock (IMILBitmap *iface, const WICRect *rc, DWORD flags, IWICBitmapLock **lock)
 
static HRESULT WINAPI IMILBitmapImpl_Unlock (IMILBitmap *iface, IWICBitmapLock *lock)
 
static HRESULT WINAPI IMILBitmapImpl_SetPalette (IMILBitmap *iface, IWICPalette *palette)
 
static HRESULT WINAPI IMILBitmapImpl_SetResolution (IMILBitmap *iface, double dpix, double dpiy)
 
static HRESULT WINAPI IMILBitmapImpl_AddDirtyRect (IMILBitmap *iface, const WICRect *rc)
 
static HRESULT WINAPI IMILUnknown1Impl_QueryInterface (IMILUnknown1 *iface, REFIID iid, void **ppv)
 
static ULONG WINAPI IMILUnknown1Impl_AddRef (IMILUnknown1 *iface)
 
static ULONG WINAPI IMILUnknown1Impl_Release (IMILUnknown1 *iface)
 
DECLSPEC_HIDDEN void WINAPI IMILUnknown1Impl_unknown1 (IMILUnknown1 *iface, void *arg)
 
static HRESULT WINAPI IMILUnknown1Impl_unknown2 (IMILUnknown1 *iface, void *arg1, void *arg2)
 
DECLSPEC_HIDDEN HRESULT WINAPI IMILUnknown1Impl_unknown3 (IMILUnknown1 *iface, void *arg)
 
static HRESULT WINAPI IMILUnknown1Impl_unknown4 (IMILUnknown1 *iface, void *arg)
 
static HRESULT WINAPI IMILUnknown1Impl_unknown5 (IMILUnknown1 *iface, void *arg)
 
static HRESULT WINAPI IMILUnknown1Impl_unknown6 (IMILUnknown1 *iface, DWORD64 arg)
 
static HRESULT WINAPI IMILUnknown1Impl_unknown7 (IMILUnknown1 *iface, void *arg)
 
DECLSPEC_HIDDEN HRESULT WINAPI IMILUnknown1Impl_unknown8 (IMILUnknown1 *iface)
 
static HRESULT WINAPI IMILUnknown2Impl_QueryInterface (IMILUnknown2 *iface, REFIID iid, void **ppv)
 
static ULONG WINAPI IMILUnknown2Impl_AddRef (IMILUnknown2 *iface)
 
static ULONG WINAPI IMILUnknown2Impl_Release (IMILUnknown2 *iface)
 
static HRESULT WINAPI IMILUnknown2Impl_unknown1 (IMILUnknown2 *iface, void *arg1, void **arg2)
 
static HRESULT WINAPI IMILUnknown2Impl_unknown2 (IMILUnknown2 *iface, void *arg1, void *arg2)
 
static HRESULT WINAPI IMILUnknown2Impl_unknown3 (IMILUnknown2 *iface, void *arg1)
 
HRESULT BitmapImpl_Create (UINT uiWidth, UINT uiHeight, UINT stride, UINT datasize, void *view, UINT offset, REFWICPixelFormatGUID pixelFormat, WICBitmapCreateCacheOption option, IWICBitmap **ppIBitmap)
 

Variables

static const IWICBitmapLockVtbl BitmapLockImpl_Vtbl
 
static const IWICBitmapVtbl BitmapImpl_Vtbl
 
struct {
   const GUID *   WIC_format
 
   int   enum_format
 
pixel_fmt_map []
 
static const IMILBitmapVtbl IMILBitmapImpl_Vtbl
 
static const IMILUnknown1Vtbl IMILUnknown1Impl_Vtbl
 
static const IMILUnknown2Vtbl IMILUnknown2Impl_Vtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 26 of file bitmap.c.

Typedef Documentation

◆ BitmapImpl

◆ BitmapLockImpl

Function Documentation

◆ BitmapImpl_AcquireLock()

static BOOL BitmapImpl_AcquireLock ( BitmapImpl This,
int  write 
)
static

Definition at line 95 of file bitmap.c.

96 {
97  if (write)
98  {
99  return 0 == InterlockedCompareExchange(&This->lock, -1, 0);
100  }
101  else
102  {
103  while (1)
104  {
105  LONG prev_val = This->lock;
106  if (prev_val == -1)
107  return FALSE;
108  if (prev_val == InterlockedCompareExchange(&This->lock, prev_val+1, prev_val))
109  return TRUE;
110  }
111  }
112 }
#define TRUE
Definition: types.h:120
#define InterlockedCompareExchange
Definition: interlocked.h:104
#define write
Definition: acwin.h:97
long LONG
Definition: pedump.c:60

Referenced by BitmapImpl_Lock().

◆ BitmapImpl_AddRef()

static ULONG WINAPI BitmapImpl_AddRef ( IWICBitmap iface)
static

Definition at line 274 of file bitmap.c.

275 {
278 
279  TRACE("(%p) refcount=%u\n", iface, ref);
280 
281  return ref;
282 }
static BitmapImpl * impl_from_IWICBitmap(IWICBitmap *iface)
Definition: bitmap.c:70
Definition: send.c:48
GLenum GLint ref
Definition: glext.h:6028
#define TRACE(s)
Definition: solgame.cpp:4
#define InterlockedIncrement
Definition: armddk.h:53
unsigned int ULONG
Definition: retypes.h:1

◆ BitmapImpl_CopyPalette()

static HRESULT WINAPI BitmapImpl_CopyPalette ( IWICBitmap iface,
IWICPalette pIPalette 
)
static

Definition at line 352 of file bitmap.c.

354 {
356  TRACE("(%p,%p)\n", iface, pIPalette);
357 
358  if (!This->palette_set)
360 
361  return IWICPalette_InitializeFromPalette(pIPalette, This->palette);
362 }
static BitmapImpl * impl_from_IWICBitmap(IWICBitmap *iface)
Definition: bitmap.c:70
#define WINCODEC_ERR_PALETTEUNAVAILABLE
Definition: winerror.h:3284
#define TRACE(s)
Definition: solgame.cpp:4

◆ BitmapImpl_CopyPixels()

static HRESULT WINAPI BitmapImpl_CopyPixels ( IWICBitmap iface,
const WICRect prc,
UINT  cbStride,
UINT  cbBufferSize,
BYTE pbBuffer 
)
static

Definition at line 364 of file bitmap.c.

366 {
368  TRACE("(%p,%s,%u,%u,%p)\n", iface, debug_wic_rect(prc), cbStride, cbBufferSize, pbBuffer);
369 
370  return copy_pixels(This->bpp, This->data, This->width, This->height,
371  This->stride, prc, cbStride, cbBufferSize, pbBuffer);
372 }
static BitmapImpl * impl_from_IWICBitmap(IWICBitmap *iface)
Definition: bitmap.c:70
#define TRACE(s)
Definition: solgame.cpp:4
static const char * debug_wic_rect(const WICRect *rect)
void copy_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slice_pitch, BYTE *dst, UINT dst_row_pitch, UINT dst_slice_pitch, const struct volume *size, const struct pixel_format_desc *format) DECLSPEC_HIDDEN
Definition: surface.c:1660
_Out_ LPRECT prc
Definition: ntgdi.h:1658

◆ BitmapImpl_Create()

HRESULT BitmapImpl_Create ( UINT  uiWidth,
UINT  uiHeight,
UINT  stride,
UINT  datasize,
void view,
UINT  offset,
REFWICPixelFormatGUID  pixelFormat,
WICBitmapCreateCacheOption  option,
IWICBitmap **  ppIBitmap 
)

Definition at line 793 of file bitmap.c.

796 {
797  HRESULT hr;
798  BitmapImpl *This;
799  BYTE *data;
800  UINT bpp;
801 
802  hr = get_pixelformat_bpp(pixelFormat, &bpp);
803  if (FAILED(hr)) return hr;
804 
805  if (!stride) stride = (((bpp*uiWidth)+31)/32)*4;
806  if (!datasize) datasize = stride * uiHeight;
807 
808  if (datasize < stride * uiHeight) return WINCODEC_ERR_INSUFFICIENTBUFFER;
809  if (stride < ((bpp*uiWidth)+7)/8) return E_INVALIDARG;
810 
811  This = HeapAlloc(GetProcessHeap(), 0, sizeof(BitmapImpl));
812  if (!This) return E_OUTOFMEMORY;
813 
814  if (view) data = (BYTE *)view + offset;
816  {
818  return E_OUTOFMEMORY;
819  }
820 
821  This->IWICBitmap_iface.lpVtbl = &BitmapImpl_Vtbl;
822  This->IMILBitmap_iface.lpVtbl = &IMILBitmapImpl_Vtbl;
823  This->IMILUnknown1_iface.lpVtbl = &IMILUnknown1Impl_Vtbl;
824  This->IMILUnknown2_iface.lpVtbl = &IMILUnknown2Impl_Vtbl;
825  This->ref = 1;
826  This->palette = NULL;
827  This->palette_set = 0;
828  This->lock = 0;
829  This->data = data;
830  This->view = view;
831  This->offset = offset;
832  This->width = uiWidth;
833  This->height = uiHeight;
834  This->stride = stride;
835  This->bpp = bpp;
836  memcpy(&This->pixelformat, pixelFormat, sizeof(GUID));
837  This->dpix = This->dpiy = 0.0;
839  This->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": BitmapImpl.lock");
840 
841  *ppIBitmap = &This->IWICBitmap_iface;
842 
843  return S_OK;
844 }
static const IMILUnknown1Vtbl IMILUnknown1Impl_Vtbl
Definition: bitmap.c:729
static const IMILUnknown2Vtbl IMILUnknown2Impl_Vtbl
Definition: bitmap.c:783
#define DWORD_PTR
Definition: treelist.c:76
HRESULT hr
Definition: shlfolder.c:183
GLintptr offset
Definition: glext.h:5920
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition: synch.c:751
smooth NULL
Definition: ftsmooth.c:416
static SIZE_T datasize
Definition: asm.c:30
GLsizei stride
Definition: glext.h:5848
#define GetProcessHeap()
Definition: compat.h:404
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
LONG HRESULT
Definition: typedefs.h:78
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
unsigned char BYTE
Definition: xxhash.c:193
#define S_OK
Definition: intsafe.h:59
static const IWICBitmapVtbl BitmapImpl_Vtbl
Definition: bitmap.c:471
unsigned int UINT
Definition: ndis.h:50
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
static IOleDocumentView * view
Definition: activex.c:1749
DWORD bpp
Definition: surface.c:182
#define WINCODEC_ERR_INSUFFICIENTBUFFER
Definition: winerror.h:3303
HRESULT get_pixelformat_bpp(const GUID *pixelformat, UINT *bpp)
Definition: main.c:231
static const IMILBitmapVtbl IMILBitmapImpl_Vtbl
Definition: bitmap.c:639
#define HeapFree(x, y, z)
Definition: compat.h:403

Referenced by create_bitmap_from_source_rect(), ImagingFactory_CreateBitmap(), ImagingFactory_CreateBitmapFromHBITMAP(), ImagingFactory_CreateBitmapFromHICON(), ImagingFactory_CreateBitmapFromMemory(), and WICCreateBitmapFromSectionEx().

◆ BitmapImpl_GetPixelFormat()

static HRESULT WINAPI BitmapImpl_GetPixelFormat ( IWICBitmap iface,
WICPixelFormatGUID pPixelFormat 
)
static

Definition at line 321 of file bitmap.c.

323 {
325  TRACE("(%p,%p)\n", iface, pPixelFormat);
326 
327  if (!pPixelFormat)
328  return E_INVALIDARG;
329 
330  memcpy(pPixelFormat, &This->pixelformat, sizeof(GUID));
331 
332  return S_OK;
333 }
static BitmapImpl * impl_from_IWICBitmap(IWICBitmap *iface)
Definition: bitmap.c:70
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRACE(s)
Definition: solgame.cpp:4
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define S_OK
Definition: intsafe.h:59

◆ BitmapImpl_GetResolution()

static HRESULT WINAPI BitmapImpl_GetResolution ( IWICBitmap iface,
double pDpiX,
double pDpiY 
)
static

Definition at line 335 of file bitmap.c.

337 {
339  TRACE("(%p,%p,%p)\n", iface, pDpiX, pDpiY);
340 
341  if (!pDpiX || !pDpiY)
342  return E_INVALIDARG;
343 
345  *pDpiX = This->dpix;
346  *pDpiY = This->dpiy;
348 
349  return S_OK;
350 }
static BitmapImpl * impl_from_IWICBitmap(IWICBitmap *iface)
Definition: bitmap.c:70
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)

◆ BitmapImpl_GetSize()

static HRESULT WINAPI BitmapImpl_GetSize ( IWICBitmap iface,
UINT puiWidth,
UINT puiHeight 
)
static

Definition at line 306 of file bitmap.c.

308 {
310  TRACE("(%p,%p,%p)\n", iface, puiWidth, puiHeight);
311 
312  if (!puiWidth || !puiHeight)
313  return E_INVALIDARG;
314 
315  *puiWidth = This->width;
316  *puiHeight = This->height;
317 
318  return S_OK;
319 }
static BitmapImpl * impl_from_IWICBitmap(IWICBitmap *iface)
Definition: bitmap.c:70
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59

◆ BitmapImpl_Lock()

static HRESULT WINAPI BitmapImpl_Lock ( IWICBitmap iface,
const WICRect prcLock,
DWORD  flags,
IWICBitmapLock **  ppILock 
)
static

Definition at line 374 of file bitmap.c.

376 {
379  WICRect rc;
380 
381  TRACE("(%p,%s,%x,%p)\n", iface, debug_wic_rect(prcLock), flags, ppILock);
382 
383  if (!(flags & (WICBitmapLockRead|WICBitmapLockWrite)) || !ppILock)
384  return E_INVALIDARG;
385 
386  if (!prcLock)
387  {
388  rc.X = rc.Y = 0;
389  rc.Width = This->width;
390  rc.Height = This->height;
391  prcLock = &rc;
392  }
393  else if (prcLock->X >= This->width || prcLock->Y >= This->height ||
394  prcLock->X + prcLock->Width > This->width ||
395  prcLock->Y + prcLock->Height > This->height ||
396  prcLock->Width <= 0 || prcLock->Height <= 0)
397  return E_INVALIDARG;
398  else if (((prcLock->X * This->bpp) % 8) != 0)
399  {
400  FIXME("Cannot lock at an X coordinate not at a full byte\n");
401  return E_FAIL;
402  }
403 
405  if (!result)
406  return E_OUTOFMEMORY;
407 
409  {
412  }
413 
414  result->IWICBitmapLock_iface.lpVtbl = &BitmapLockImpl_Vtbl;
415  result->ref = 1;
416  result->parent = This;
417  result->width = prcLock->Width;
418  result->height = prcLock->Height;
419  result->data = This->data + This->stride * prcLock->Y +
420  (This->bpp * prcLock->X)/8;
421 
422  IWICBitmap_AddRef(&This->IWICBitmap_iface);
423  *ppILock = &result->IWICBitmapLock_iface;
424 
425  return S_OK;
426 }
static BOOL BitmapImpl_AcquireLock(BitmapImpl *This, int write)
Definition: bitmap.c:95
static BitmapImpl * impl_from_IWICBitmap(IWICBitmap *iface)
Definition: bitmap.c:70
#define E_FAIL
Definition: ddrawi.h:102
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_INVALIDARG
Definition: ddrawi.h:101
INT Height
Definition: wincodec.idl:239
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:404
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
GLbitfield flags
Definition: glext.h:7161
#define WINCODEC_ERR_ALREADYLOCKED
Definition: winerror.h:3278
static const char * debug_wic_rect(const WICRect *rect)
#define S_OK
Definition: intsafe.h:59
static const IWICBitmapLockVtbl BitmapLockImpl_Vtbl
Definition: bitmap.c:234
INT Width
Definition: wincodec.idl:238
GLuint64EXT * result
Definition: glext.h:11304
#define HeapFree(x, y, z)
Definition: compat.h:403

◆ BitmapImpl_QueryInterface()

static HRESULT WINAPI BitmapImpl_QueryInterface ( IWICBitmap iface,
REFIID  iid,
void **  ppv 
)
static

Definition at line 244 of file bitmap.c.

246 {
248  TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), ppv);
249 
250  if (!ppv) return E_INVALIDARG;
251 
252  if (IsEqualIID(&IID_IUnknown, iid) ||
253  IsEqualIID(&IID_IWICBitmapSource, iid) ||
254  IsEqualIID(&IID_IWICBitmap, iid))
255  {
256  *ppv = &This->IWICBitmap_iface;
257  }
258  else if (IsEqualIID(&IID_IMILBitmap, iid) ||
259  IsEqualIID(&IID_IMILBitmapSource, iid))
260  {
261  *ppv = &This->IMILBitmap_iface;
262  }
263  else
264  {
265  FIXME("unknown interface %s\n", debugstr_guid(iid));
266  *ppv = NULL;
267  return E_NOINTERFACE;
268  }
269 
270  IUnknown_AddRef((IUnknown*)*ppv);
271  return S_OK;
272 }
#define E_NOINTERFACE
Definition: winerror.h:2364
static BitmapImpl * impl_from_IWICBitmap(IWICBitmap *iface)
Definition: bitmap.c:70
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
const GUID IID_IUnknown
#define S_OK
Definition: intsafe.h:59
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

◆ BitmapImpl_Release()

static ULONG WINAPI BitmapImpl_Release ( IWICBitmap iface)
static

Definition at line 284 of file bitmap.c.

285 {
288 
289  TRACE("(%p) refcount=%u\n", iface, ref);
290 
291  if (ref == 0)
292  {
293  if (This->palette) IWICPalette_Release(This->palette);
294  This->cs.DebugInfo->Spare[0] = 0;
296  if (This->view)
297  UnmapViewOfFile(This->view);
298  else
299  HeapFree(GetProcessHeap(), 0, This->data);
301  }
302 
303  return ref;
304 }
static BitmapImpl * impl_from_IWICBitmap(IWICBitmap *iface)
Definition: bitmap.c:70
Definition: send.c:48
GLenum GLint ref
Definition: glext.h:6028
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:404
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
#define InterlockedDecrement
Definition: armddk.h:52
unsigned int ULONG
Definition: retypes.h:1
#define UnmapViewOfFile
Definition: compat.h:412
#define HeapFree(x, y, z)
Definition: compat.h:403

◆ BitmapImpl_ReleaseLock()

static void BitmapImpl_ReleaseLock ( BitmapImpl This)
static

Definition at line 114 of file bitmap.c.

115 {
116  while (1)
117  {
118  LONG prev_val = This->lock, new_val;
119  if (prev_val == -1)
120  new_val = 0;
121  else
122  new_val = prev_val - 1;
123  if (prev_val == InterlockedCompareExchange(&This->lock, new_val, prev_val))
124  break;
125  }
126 }
#define InterlockedCompareExchange
Definition: interlocked.h:104
long LONG
Definition: pedump.c:60

Referenced by BitmapLockImpl_Release().

◆ BitmapImpl_SetPalette()

static HRESULT WINAPI BitmapImpl_SetPalette ( IWICBitmap iface,
IWICPalette pIPalette 
)
static

Definition at line 428 of file bitmap.c.

429 {
431  HRESULT hr;
432 
433  TRACE("(%p,%p)\n", iface, pIPalette);
434 
435  if (!This->palette)
436  {
437  IWICPalette *new_palette;
438  hr = PaletteImpl_Create(&new_palette);
439 
440  if (FAILED(hr)) return hr;
441 
442  if (InterlockedCompareExchangePointer((void**)&This->palette, new_palette, NULL))
443  {
444  /* someone beat us to it */
445  IWICPalette_Release(new_palette);
446  }
447  }
448 
449  hr = IWICPalette_InitializeFromPalette(This->palette, pIPalette);
450 
451  if (SUCCEEDED(hr))
452  This->palette_set = 1;
453 
454  return S_OK;
455 }
HRESULT hr
Definition: shlfolder.c:183
static BitmapImpl * impl_from_IWICBitmap(IWICBitmap *iface)
Definition: bitmap.c:70
HRESULT PaletteImpl_Create(IWICPalette **palette)
Definition: palette.c:899
#define InterlockedCompareExchangePointer
Definition: interlocked.h:129
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:78
#define S_OK
Definition: intsafe.h:59
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ BitmapImpl_SetResolution()

static HRESULT WINAPI BitmapImpl_SetResolution ( IWICBitmap iface,
double  dpiX,
double  dpiY 
)
static

Definition at line 457 of file bitmap.c.

459 {
461  TRACE("(%p,%f,%f)\n", iface, dpiX, dpiY);
462 
464  This->dpix = dpiX;
465  This->dpiy = dpiY;
467 
468  return S_OK;
469 }
static BitmapImpl * impl_from_IWICBitmap(IWICBitmap *iface)
Definition: bitmap.c:70
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)

◆ BitmapLockImpl_AddRef()

static ULONG WINAPI BitmapLockImpl_AddRef ( IWICBitmapLock iface)
static

Definition at line 153 of file bitmap.c.

154 {
157 
158  TRACE("(%p) refcount=%u\n", iface, ref);
159 
160  return ref;
161 }
Definition: send.c:48
GLenum GLint ref
Definition: glext.h:6028
#define TRACE(s)
Definition: solgame.cpp:4
#define InterlockedIncrement
Definition: armddk.h:53
static BitmapLockImpl * impl_from_IWICBitmapLock(IWICBitmapLock *iface)
Definition: bitmap.c:90
unsigned int ULONG
Definition: retypes.h:1

◆ BitmapLockImpl_GetDataPointer()

static HRESULT WINAPI BitmapLockImpl_GetDataPointer ( IWICBitmapLock iface,
UINT pcbBufferSize,
BYTE **  ppbData 
)
static

Definition at line 209 of file bitmap.c.

211 {
213  TRACE("(%p,%p,%p)\n", iface, pcbBufferSize, ppbData);
214 
215  if (!pcbBufferSize || !ppbData)
216  return E_INVALIDARG;
217 
218  *pcbBufferSize = This->parent->stride * (This->height - 1) +
219  ((This->parent->bpp * This->width) + 7)/8;
220  *ppbData = This->data;
221 
222  return S_OK;
223 }
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
static BitmapLockImpl * impl_from_IWICBitmapLock(IWICBitmapLock *iface)
Definition: bitmap.c:90

◆ BitmapLockImpl_GetPixelFormat()

static HRESULT WINAPI BitmapLockImpl_GetPixelFormat ( IWICBitmapLock iface,
WICPixelFormatGUID pPixelFormat 
)
static

Definition at line 225 of file bitmap.c.

227 {
229  TRACE("(%p,%p)\n", iface, pPixelFormat);
230 
231  return IWICBitmap_GetPixelFormat(&This->parent->IWICBitmap_iface, pPixelFormat);
232 }
#define TRACE(s)
Definition: solgame.cpp:4
static BitmapLockImpl * impl_from_IWICBitmapLock(IWICBitmapLock *iface)
Definition: bitmap.c:90

◆ BitmapLockImpl_GetSize()

static HRESULT WINAPI BitmapLockImpl_GetSize ( IWICBitmapLock iface,
UINT puiWidth,
UINT puiHeight 
)
static

Definition at line 180 of file bitmap.c.

182 {
184  TRACE("(%p,%p,%p)\n", iface, puiWidth, puiHeight);
185 
186  if (!puiWidth || !puiHeight)
187  return E_INVALIDARG;
188 
189  *puiWidth = This->width;
190  *puiHeight = This->height;
191 
192  return S_OK;
193 }
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
static BitmapLockImpl * impl_from_IWICBitmapLock(IWICBitmapLock *iface)
Definition: bitmap.c:90

◆ BitmapLockImpl_GetStride()

static HRESULT WINAPI BitmapLockImpl_GetStride ( IWICBitmapLock iface,
UINT pcbStride 
)
static

Definition at line 195 of file bitmap.c.

197 {
199  TRACE("(%p,%p)\n", iface, pcbStride);
200 
201  if (!pcbStride)
202  return E_INVALIDARG;
203 
204  *pcbStride = This->parent->stride;
205 
206  return S_OK;
207 }
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
static BitmapLockImpl * impl_from_IWICBitmapLock(IWICBitmapLock *iface)
Definition: bitmap.c:90

◆ BitmapLockImpl_QueryInterface()

static HRESULT WINAPI BitmapLockImpl_QueryInterface ( IWICBitmapLock iface,
REFIID  iid,
void **  ppv 
)
static

Definition at line 129 of file bitmap.c.

131 {
133  TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), ppv);
134 
135  if (!ppv) return E_INVALIDARG;
136 
137  if (IsEqualIID(&IID_IUnknown, iid) ||
138  IsEqualIID(&IID_IWICBitmapLock, iid))
139  {
140  *ppv = &This->IWICBitmapLock_iface;
141  }
142  else
143  {
144  FIXME("unknown interface %s\n", debugstr_guid(iid));
145  *ppv = NULL;
146  return E_NOINTERFACE;
147  }
148 
149  IUnknown_AddRef((IUnknown*)*ppv);
150  return S_OK;
151 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
const GUID IID_IUnknown
#define S_OK
Definition: intsafe.h:59
static BitmapLockImpl * impl_from_IWICBitmapLock(IWICBitmapLock *iface)
Definition: bitmap.c:90
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

◆ BitmapLockImpl_Release()

static ULONG WINAPI BitmapLockImpl_Release ( IWICBitmapLock iface)
static

Definition at line 163 of file bitmap.c.

164 {
167 
168  TRACE("(%p) refcount=%u\n", iface, ref);
169 
170  if (ref == 0)
171  {
172  BitmapImpl_ReleaseLock(This->parent);
173  IWICBitmap_Release(&This->parent->IWICBitmap_iface);
175  }
176 
177  return ref;
178 }
Definition: send.c:48
GLenum GLint ref
Definition: glext.h:6028
#define TRACE(s)
Definition: solgame.cpp:4
#define GetProcessHeap()
Definition: compat.h:404
#define InterlockedDecrement
Definition: armddk.h:52
static BitmapLockImpl * impl_from_IWICBitmapLock(IWICBitmapLock *iface)
Definition: bitmap.c:90
unsigned int ULONG
Definition: retypes.h:1
#define HeapFree(x, y, z)
Definition: compat.h:403
static void BitmapImpl_ReleaseLock(BitmapImpl *This)
Definition: bitmap.c:114

◆ IMILBitmapImpl_AddDirtyRect()

static HRESULT WINAPI IMILBitmapImpl_AddDirtyRect ( IMILBitmap *  iface,
const WICRect rc 
)
static

Definition at line 633 of file bitmap.c.

634 {
635  FIXME("(%p,%p): stub\n", iface, rc);
636  return E_NOTIMPL;
637 }
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ IMILBitmapImpl_AddRef()

static ULONG WINAPI IMILBitmapImpl_AddRef ( IMILBitmap *  iface)
static

Definition at line 493 of file bitmap.c.

494 {
496  return IWICBitmap_AddRef(&This->IWICBitmap_iface);
497 }
static BitmapImpl * impl_from_IMILBitmap(IMILBitmap *iface)
Definition: bitmap.c:75

◆ IMILBitmapImpl_CopyPalette()

static HRESULT WINAPI IMILBitmapImpl_CopyPalette ( IMILBitmap *  iface,
IWICPalette palette 
)
static

Definition at line 575 of file bitmap.c.

577 {
579  TRACE("(%p,%p)\n", iface, palette);
580  return IWICBitmap_CopyPalette(&This->IWICBitmap_iface, palette);
581 }
#define TRACE(s)
Definition: solgame.cpp:4
static BitmapImpl * impl_from_IMILBitmap(IMILBitmap *iface)
Definition: bitmap.c:75
static HPALETTE palette
Definition: clipboard.c:1345

◆ IMILBitmapImpl_CopyPixels()

static HRESULT WINAPI IMILBitmapImpl_CopyPixels ( IMILBitmap *  iface,
const WICRect rc,
UINT  stride,
UINT  size,
BYTE buffer 
)
static

Definition at line 583 of file bitmap.c.

585 {
587  TRACE("(%p,%p,%u,%u,%p)\n", iface, rc, stride, size, buffer);
588  return IWICBitmap_CopyPixels(&This->IWICBitmap_iface, rc, stride, size, buffer);
589 }
GLuint buffer
Definition: glext.h:5915
#define TRACE(s)
Definition: solgame.cpp:4
GLsizei stride
Definition: glext.h:5848
GLsizeiptr size
Definition: glext.h:5919
static BitmapImpl * impl_from_IMILBitmap(IMILBitmap *iface)
Definition: bitmap.c:75

◆ IMILBitmapImpl_GetPixelFormat()

static HRESULT WINAPI IMILBitmapImpl_GetPixelFormat ( IMILBitmap *  iface,
int format 
)
static

Definition at line 542 of file bitmap.c.

544 {
546  int i;
547 
548  TRACE("(%p,%p)\n", iface, format);
549 
550  if (!format) return E_INVALIDARG;
551 
552  *format = 0;
553 
554  for (i = 0; i < ARRAY_SIZE(pixel_fmt_map); i++)
555  {
556  if (IsEqualGUID(pixel_fmt_map[i].WIC_format, &This->pixelformat))
557  {
558  *format = pixel_fmt_map[i].enum_format;
559  break;
560  }
561  }
562 
563  TRACE("=> %u\n", *format);
564  return S_OK;
565 }
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define E_INVALIDARG
Definition: ddrawi.h:101
static const struct @577 pixel_fmt_map[]
#define TRACE(s)
Definition: solgame.cpp:4
static BitmapImpl * impl_from_IMILBitmap(IMILBitmap *iface)
Definition: bitmap.c:75
#define S_OK
Definition: intsafe.h:59
#define ARRAY_SIZE(a)
Definition: main.h:24
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112
const GUID * WIC_format
Definition: bitmap.c:515

◆ IMILBitmapImpl_GetResolution()

static HRESULT WINAPI IMILBitmapImpl_GetResolution ( IMILBitmap *  iface,
double dpix,
double dpiy 
)
static

Definition at line 567 of file bitmap.c.

569 {
571  TRACE("(%p,%p,%p)\n", iface, dpix, dpiy);
572  return IWICBitmap_GetResolution(&This->IWICBitmap_iface, dpix, dpiy);
573 }
#define TRACE(s)
Definition: solgame.cpp:4
static BitmapImpl * impl_from_IMILBitmap(IMILBitmap *iface)
Definition: bitmap.c:75

◆ IMILBitmapImpl_GetSize()

static HRESULT WINAPI IMILBitmapImpl_GetSize ( IMILBitmap *  iface,
UINT width,
UINT height 
)
static

Definition at line 505 of file bitmap.c.

507 {
509  TRACE("(%p,%p,%p)\n", iface, width, height);
510  return IWICBitmap_GetSize(&This->IWICBitmap_iface, width, height);
511 }
GLint GLint GLsizei width
Definition: gl.h:1546
#define TRACE(s)
Definition: solgame.cpp:4
static BitmapImpl * impl_from_IMILBitmap(IMILBitmap *iface)
Definition: bitmap.c:75
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546

◆ IMILBitmapImpl_Lock()

static HRESULT WINAPI IMILBitmapImpl_Lock ( IMILBitmap *  iface,
const WICRect rc,
DWORD  flags,
IWICBitmapLock **  lock 
)
static

Definition at line 605 of file bitmap.c.

606 {
608  TRACE("(%p,%p,%08x,%p)\n", iface, rc, flags, lock);
609  return IWICBitmap_Lock(&This->IWICBitmap_iface, rc, flags, lock);
610 }
rwlock_t lock
Definition: tcpcore.h:1163
#define TRACE(s)
Definition: solgame.cpp:4
GLbitfield flags
Definition: glext.h:7161
static BitmapImpl * impl_from_IMILBitmap(IMILBitmap *iface)
Definition: bitmap.c:75

◆ IMILBitmapImpl_QueryInterface()

static HRESULT WINAPI IMILBitmapImpl_QueryInterface ( IMILBitmap *  iface,
REFIID  iid,
void **  ppv 
)
static

Definition at line 485 of file bitmap.c.

487 {
489  TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), ppv);
490  return IWICBitmap_QueryInterface(&This->IWICBitmap_iface, iid, ppv);
491 }
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
static BitmapImpl * impl_from_IMILBitmap(IMILBitmap *iface)
Definition: bitmap.c:75

◆ IMILBitmapImpl_Release()

static ULONG WINAPI IMILBitmapImpl_Release ( IMILBitmap *  iface)
static

Definition at line 499 of file bitmap.c.

500 {
502  return IWICBitmap_Release(&This->IWICBitmap_iface);
503 }
static BitmapImpl * impl_from_IMILBitmap(IMILBitmap *iface)
Definition: bitmap.c:75

◆ IMILBitmapImpl_SetPalette()

static HRESULT WINAPI IMILBitmapImpl_SetPalette ( IMILBitmap *  iface,
IWICPalette palette 
)
static

Definition at line 619 of file bitmap.c.

620 {
622  TRACE("(%p,%p)\n", iface, palette);
623  return IWICBitmap_SetPalette(&This->IWICBitmap_iface, palette);
624 }
#define TRACE(s)
Definition: solgame.cpp:4
static BitmapImpl * impl_from_IMILBitmap(IMILBitmap *iface)
Definition: bitmap.c:75
static HPALETTE palette
Definition: clipboard.c:1345

◆ IMILBitmapImpl_SetResolution()

static HRESULT WINAPI IMILBitmapImpl_SetResolution ( IMILBitmap *  iface,
double  dpix,
double  dpiy 
)
static

Definition at line 626 of file bitmap.c.

627 {
629  TRACE("(%p,%f,%f)\n", iface, dpix, dpiy);
630  return IWICBitmap_SetResolution(&This->IWICBitmap_iface, dpix, dpiy);
631 }
#define TRACE(s)
Definition: solgame.cpp:4
static BitmapImpl * impl_from_IMILBitmap(IMILBitmap *iface)
Definition: bitmap.c:75

◆ IMILBitmapImpl_unknown1()

static HRESULT WINAPI IMILBitmapImpl_unknown1 ( IMILBitmap *  iface,
void **  ppv 
)
static

Definition at line 591 of file bitmap.c.

592 {
594 
595  TRACE("(%p,%p)\n", iface, ppv);
596 
597  if (!ppv) return E_INVALIDARG;
598 
599  /* reference count is not incremented here */
600  *ppv = &This->IMILUnknown1_iface;
601 
602  return S_OK;
603 }
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define E_INVALIDARG
Definition: ddrawi.h:101
#define TRACE(s)
Definition: solgame.cpp:4
static BitmapImpl * impl_from_IMILBitmap(IMILBitmap *iface)
Definition: bitmap.c:75
#define S_OK
Definition: intsafe.h:59

◆ IMILBitmapImpl_Unlock()

static HRESULT WINAPI IMILBitmapImpl_Unlock ( IMILBitmap *  iface,
IWICBitmapLock lock 
)
static

Definition at line 612 of file bitmap.c.

613 {
614  TRACE("(%p,%p)\n", iface, lock);
615  IWICBitmapLock_Release(lock);
616  return S_OK;
617 }
rwlock_t lock
Definition: tcpcore.h:1163
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59

◆ IMILUnknown1Impl_AddRef()

static ULONG WINAPI IMILUnknown1Impl_AddRef ( IMILUnknown1 iface)
static

Definition at line 666 of file bitmap.c.

667 {
669  return IWICBitmap_AddRef(&This->IWICBitmap_iface);
670 }
static BitmapImpl * impl_from_IMILUnknown1(IMILUnknown1 *iface)
Definition: bitmap.c:80

◆ IMILUnknown1Impl_QueryInterface()

static HRESULT WINAPI IMILUnknown1Impl_QueryInterface ( IMILUnknown1 iface,
REFIID  iid,
void **  ppv 
)
static

Definition at line 657 of file bitmap.c.

659 {
660  /* It's not clear what interface should be returned here */
661  FIXME("(%p,%s,%p): stub\n", iface, debugstr_guid(iid), ppv);
662  *ppv = NULL;
663  return E_NOINTERFACE;
664 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define FIXME(fmt,...)
Definition: debug.h:111
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35

◆ IMILUnknown1Impl_Release()

static ULONG WINAPI IMILUnknown1Impl_Release ( IMILUnknown1 iface)
static

Definition at line 672 of file bitmap.c.

673 {
675  return IWICBitmap_Release(&This->IWICBitmap_iface);
676 }
static BitmapImpl * impl_from_IMILUnknown1(IMILUnknown1 *iface)
Definition: bitmap.c:80

◆ IMILUnknown1Impl_unknown1()

DECLSPEC_HIDDEN void WINAPI IMILUnknown1Impl_unknown1 ( IMILUnknown1 iface,
void arg 
)

Definition at line 678 of file bitmap.c.

679 {
680  FIXME("(%p,%p): stub\n", iface, arg);
681 }
#define FIXME(fmt,...)
Definition: debug.h:111

◆ IMILUnknown1Impl_unknown2()

static HRESULT WINAPI IMILUnknown1Impl_unknown2 ( IMILUnknown1 iface,
void arg1,
void arg2 
)
static

Definition at line 683 of file bitmap.c.

684 {
685  FIXME("(%p,%p,%p): stub\n", iface, arg1, arg2);
686  return E_NOTIMPL;
687 }
GLuint GLuint GLuint GLuint GLuint GLuint GLuint arg2
Definition: glext.h:9514
GLuint GLuint GLuint GLuint arg1
Definition: glext.h:9513
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ IMILUnknown1Impl_unknown3()

DECLSPEC_HIDDEN HRESULT WINAPI IMILUnknown1Impl_unknown3 ( IMILUnknown1 iface,
void arg 
)

Definition at line 689 of file bitmap.c.

690 {
691  FIXME("(%p,%p): stub\n", iface, arg);
692  return E_NOTIMPL;
693 }
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ IMILUnknown1Impl_unknown4()

static HRESULT WINAPI IMILUnknown1Impl_unknown4 ( IMILUnknown1 iface,
void arg 
)
static

Definition at line 695 of file bitmap.c.

696 {
697  FIXME("(%p,%p): stub\n", iface, arg);
698  return E_NOTIMPL;
699 }
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ IMILUnknown1Impl_unknown5()

static HRESULT WINAPI IMILUnknown1Impl_unknown5 ( IMILUnknown1 iface,
void arg 
)
static

Definition at line 701 of file bitmap.c.

702 {
703  FIXME("(%p,%p): stub\n", iface, arg);
704  return E_NOTIMPL;
705 }
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ IMILUnknown1Impl_unknown6()

static HRESULT WINAPI IMILUnknown1Impl_unknown6 ( IMILUnknown1 iface,
DWORD64  arg 
)
static

Definition at line 707 of file bitmap.c.

708 {
709  FIXME("(%p,%s): stub\n", iface, wine_dbgstr_longlong(arg));
710  return E_NOTIMPL;
711 }
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_NOTIMPL
Definition: ddrawi.h:99
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:41

◆ IMILUnknown1Impl_unknown7()

static HRESULT WINAPI IMILUnknown1Impl_unknown7 ( IMILUnknown1 iface,
void arg 
)
static

Definition at line 713 of file bitmap.c.

714 {
715  FIXME("(%p,%p): stub\n", iface, arg);
716  return E_NOTIMPL;
717 }
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ IMILUnknown1Impl_unknown8()

DECLSPEC_HIDDEN HRESULT WINAPI IMILUnknown1Impl_unknown8 ( IMILUnknown1 iface)

Definition at line 719 of file bitmap.c.

720 {
721  FIXME("(%p): stub\n", iface);
722  return E_NOTIMPL;
723 }
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ IMILUnknown2Impl_AddRef()

static ULONG WINAPI IMILUnknown2Impl_AddRef ( IMILUnknown2 *  iface)
static

Definition at line 752 of file bitmap.c.

753 {
754  FIXME("(%p): stub\n", iface);
755  return 0;
756 }
#define FIXME(fmt,...)
Definition: debug.h:111

◆ IMILUnknown2Impl_QueryInterface()

static HRESULT WINAPI IMILUnknown2Impl_QueryInterface ( IMILUnknown2 *  iface,
REFIID  iid,
void **  ppv 
)
static

Definition at line 744 of file bitmap.c.

746 {
747  FIXME("(%p,%s,%p): stub\n", iface, debugstr_guid(iid), ppv);
748  *ppv = NULL;
749  return E_NOINTERFACE;
750 }
#define E_NOINTERFACE
Definition: winerror.h:2364
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define FIXME(fmt,...)
Definition: debug.h:111
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35

◆ IMILUnknown2Impl_Release()

static ULONG WINAPI IMILUnknown2Impl_Release ( IMILUnknown2 *  iface)
static

Definition at line 758 of file bitmap.c.

759 {
760  FIXME("(%p): stub\n", iface);
761  return 0;
762 }
#define FIXME(fmt,...)
Definition: debug.h:111

◆ IMILUnknown2Impl_unknown1()

static HRESULT WINAPI IMILUnknown2Impl_unknown1 ( IMILUnknown2 *  iface,
void arg1,
void **  arg2 
)
static

Definition at line 764 of file bitmap.c.

765 {
766  FIXME("(%p,%p,%p): stub\n", iface, arg1, arg2);
767  if (arg2) *arg2 = NULL;
768  return E_NOTIMPL;
769 }
GLuint GLuint GLuint GLuint GLuint GLuint GLuint arg2
Definition: glext.h:9514
GLuint GLuint GLuint GLuint arg1
Definition: glext.h:9513
#define FIXME(fmt,...)
Definition: debug.h:111
smooth NULL
Definition: ftsmooth.c:416
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ IMILUnknown2Impl_unknown2()

static HRESULT WINAPI IMILUnknown2Impl_unknown2 ( IMILUnknown2 *  iface,
void arg1,
void arg2 
)
static

Definition at line 771 of file bitmap.c.

772 {
773  FIXME("(%p,%p,%p): stub\n", iface, arg1, arg2);
774  return E_NOTIMPL;
775 }
GLuint GLuint GLuint GLuint GLuint GLuint GLuint arg2
Definition: glext.h:9514
GLuint GLuint GLuint GLuint arg1
Definition: glext.h:9513
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ IMILUnknown2Impl_unknown3()

static HRESULT WINAPI IMILUnknown2Impl_unknown3 ( IMILUnknown2 *  iface,
void arg1 
)
static

Definition at line 777 of file bitmap.c.

778 {
779  FIXME("(%p,%p): stub\n", iface, arg1);
780  return E_NOTIMPL;
781 }
GLuint GLuint GLuint GLuint arg1
Definition: glext.h:9513
#define FIXME(fmt,...)
Definition: debug.h:111
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ impl_from_IMILBitmap()

static BitmapImpl* impl_from_IMILBitmap ( IMILBitmap *  iface)
inlinestatic

Definition at line 75 of file bitmap.c.

76 {
77  return CONTAINING_RECORD(iface, BitmapImpl, IMILBitmap_iface);
78 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by IMILBitmapImpl_AddRef(), IMILBitmapImpl_CopyPalette(), IMILBitmapImpl_CopyPixels(), IMILBitmapImpl_GetPixelFormat(), IMILBitmapImpl_GetResolution(), IMILBitmapImpl_GetSize(), IMILBitmapImpl_Lock(), IMILBitmapImpl_QueryInterface(), IMILBitmapImpl_Release(), IMILBitmapImpl_SetPalette(), IMILBitmapImpl_SetResolution(), and IMILBitmapImpl_unknown1().

◆ impl_from_IMILUnknown1()

static BitmapImpl* impl_from_IMILUnknown1 ( IMILUnknown1 iface)
inlinestatic

Definition at line 80 of file bitmap.c.

81 {
82  return CONTAINING_RECORD(iface, BitmapImpl, IMILUnknown1_iface);
83 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by IMILUnknown1Impl_AddRef(), and IMILUnknown1Impl_Release().

◆ impl_from_IMILUnknown2()

static BitmapImpl* impl_from_IMILUnknown2 ( IMILUnknown2 *  iface)
inlinestatic

Definition at line 85 of file bitmap.c.

86 {
87  return CONTAINING_RECORD(iface, BitmapImpl, IMILUnknown2_iface);
88 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

◆ impl_from_IWICBitmap()

static BitmapImpl* impl_from_IWICBitmap ( IWICBitmap iface)
inlinestatic

Definition at line 70 of file bitmap.c.

71 {
72  return CONTAINING_RECORD(iface, BitmapImpl, IWICBitmap_iface);
73 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by BitmapImpl_AddRef(), BitmapImpl_CopyPalette(), BitmapImpl_CopyPixels(), BitmapImpl_GetPixelFormat(), BitmapImpl_GetResolution(), BitmapImpl_GetSize(), BitmapImpl_Lock(), BitmapImpl_QueryInterface(), BitmapImpl_Release(), BitmapImpl_SetPalette(), and BitmapImpl_SetResolution().

◆ impl_from_IWICBitmapLock()

static BitmapLockImpl* impl_from_IWICBitmapLock ( IWICBitmapLock iface)
inlinestatic

Definition at line 90 of file bitmap.c.

91 {
92  return CONTAINING_RECORD(iface, BitmapLockImpl, IWICBitmapLock_iface);
93 }
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560

Referenced by BitmapLockImpl_AddRef(), BitmapLockImpl_GetDataPointer(), BitmapLockImpl_GetPixelFormat(), BitmapLockImpl_GetSize(), BitmapLockImpl_GetStride(), BitmapLockImpl_QueryInterface(), and BitmapLockImpl_Release().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( wincodecs  )

Variable Documentation

◆ BitmapImpl_Vtbl

const IWICBitmapVtbl BitmapImpl_Vtbl
static
Initial value:
= {
}
static HRESULT WINAPI BitmapImpl_QueryInterface(IWICBitmap *iface, REFIID iid, void **ppv)
Definition: bitmap.c:244
static ULONG WINAPI BitmapImpl_AddRef(IWICBitmap *iface)
Definition: bitmap.c:274
static HRESULT WINAPI BitmapImpl_SetResolution(IWICBitmap *iface, double dpiX, double dpiY)
Definition: bitmap.c:457
static HRESULT WINAPI BitmapImpl_GetSize(IWICBitmap *iface, UINT *puiWidth, UINT *puiHeight)
Definition: bitmap.c:306
static HRESULT WINAPI BitmapImpl_CopyPixels(IWICBitmap *iface, const WICRect *prc, UINT cbStride, UINT cbBufferSize, BYTE *pbBuffer)
Definition: bitmap.c:364
static HRESULT WINAPI BitmapImpl_GetPixelFormat(IWICBitmap *iface, WICPixelFormatGUID *pPixelFormat)
Definition: bitmap.c:321
static HRESULT WINAPI BitmapImpl_CopyPalette(IWICBitmap *iface, IWICPalette *pIPalette)
Definition: bitmap.c:352
static HRESULT WINAPI BitmapImpl_SetPalette(IWICBitmap *iface, IWICPalette *pIPalette)
Definition: bitmap.c:428
static HRESULT WINAPI BitmapImpl_Lock(IWICBitmap *iface, const WICRect *prcLock, DWORD flags, IWICBitmapLock **ppILock)
Definition: bitmap.c:374
static HRESULT WINAPI BitmapImpl_GetResolution(IWICBitmap *iface, double *pDpiX, double *pDpiY)
Definition: bitmap.c:335
static ULONG WINAPI BitmapImpl_Release(IWICBitmap *iface)
Definition: bitmap.c:284

Definition at line 471 of file bitmap.c.

Referenced by BitmapImpl_Create().

◆ BitmapLockImpl_Vtbl

const IWICBitmapLockVtbl BitmapLockImpl_Vtbl
static
Initial value:
= {
}
static ULONG WINAPI BitmapLockImpl_AddRef(IWICBitmapLock *iface)
Definition: bitmap.c:153
static HRESULT WINAPI BitmapLockImpl_GetSize(IWICBitmapLock *iface, UINT *puiWidth, UINT *puiHeight)
Definition: bitmap.c:180
static HRESULT WINAPI BitmapLockImpl_GetStride(IWICBitmapLock *iface, UINT *pcbStride)
Definition: bitmap.c:195
static ULONG WINAPI BitmapLockImpl_Release(IWICBitmapLock *iface)
Definition: bitmap.c:163
static HRESULT WINAPI BitmapLockImpl_GetDataPointer(IWICBitmapLock *iface, UINT *pcbBufferSize, BYTE **ppbData)
Definition: bitmap.c:209
static HRESULT WINAPI BitmapLockImpl_QueryInterface(IWICBitmapLock *iface, REFIID iid, void **ppv)
Definition: bitmap.c:129
static HRESULT WINAPI BitmapLockImpl_GetPixelFormat(IWICBitmapLock *iface, WICPixelFormatGUID *pPixelFormat)
Definition: bitmap.c:225

Definition at line 234 of file bitmap.c.

Referenced by BitmapImpl_Lock().

◆ enum_format

int enum_format

Definition at line 516 of file bitmap.c.

◆ IMILBitmapImpl_Vtbl

const IMILBitmapVtbl IMILBitmapImpl_Vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI IMILBitmapImpl_unknown1(IMILBitmap *iface, void **ppv)
Definition: bitmap.c:591
static HRESULT WINAPI IMILBitmapImpl_GetResolution(IMILBitmap *iface, double *dpix, double *dpiy)
Definition: bitmap.c:567
static HRESULT WINAPI IMILBitmapImpl_QueryInterface(IMILBitmap *iface, REFIID iid, void **ppv)
Definition: bitmap.c:485
static HRESULT WINAPI IMILBitmapImpl_GetPixelFormat(IMILBitmap *iface, int *format)
Definition: bitmap.c:542
static ULONG WINAPI IMILBitmapImpl_Release(IMILBitmap *iface)
Definition: bitmap.c:499
static HRESULT WINAPI IMILBitmapImpl_Lock(IMILBitmap *iface, const WICRect *rc, DWORD flags, IWICBitmapLock **lock)
Definition: bitmap.c:605
static HRESULT WINAPI IMILBitmapImpl_GetSize(IMILBitmap *iface, UINT *width, UINT *height)
Definition: bitmap.c:505
static HRESULT WINAPI IMILBitmapImpl_CopyPixels(IMILBitmap *iface, const WICRect *rc, UINT stride, UINT size, BYTE *buffer)
Definition: bitmap.c:583
static HRESULT WINAPI IMILBitmapImpl_SetPalette(IMILBitmap *iface, IWICPalette *palette)
Definition: bitmap.c:619
static ULONG WINAPI IMILBitmapImpl_AddRef(IMILBitmap *iface)
Definition: bitmap.c:493
static HRESULT WINAPI IMILBitmapImpl_Unlock(IMILBitmap *iface, IWICBitmapLock *lock)
Definition: bitmap.c:612
static HRESULT WINAPI IMILBitmapImpl_AddDirtyRect(IMILBitmap *iface, const WICRect *rc)
Definition: bitmap.c:633
static HRESULT WINAPI IMILBitmapImpl_SetResolution(IMILBitmap *iface, double dpix, double dpiy)
Definition: bitmap.c:626
static HRESULT WINAPI IMILBitmapImpl_CopyPalette(IMILBitmap *iface, IWICPalette *palette)
Definition: bitmap.c:575

Definition at line 639 of file bitmap.c.

Referenced by BitmapImpl_Create().

◆ IMILUnknown1Impl_Vtbl

const IMILUnknown1Vtbl IMILUnknown1Impl_Vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI IMILUnknown1Impl_unknown4(IMILUnknown1 *iface, void *arg)
Definition: bitmap.c:695
DECLSPEC_HIDDEN HRESULT WINAPI IMILUnknown1Impl_unknown3(IMILUnknown1 *iface, void *arg)
Definition: bitmap.c:689
static HRESULT WINAPI IMILUnknown1Impl_unknown5(IMILUnknown1 *iface, void *arg)
Definition: bitmap.c:701
DECLSPEC_HIDDEN void WINAPI IMILUnknown1Impl_unknown1(IMILUnknown1 *iface, void *arg)
Definition: bitmap.c:678
static HRESULT WINAPI IMILUnknown1Impl_QueryInterface(IMILUnknown1 *iface, REFIID iid, void **ppv)
Definition: bitmap.c:657
#define THISCALL(func)
Definition: asm.h:145
static ULONG WINAPI IMILUnknown1Impl_Release(IMILUnknown1 *iface)
Definition: bitmap.c:672
static HRESULT WINAPI IMILUnknown1Impl_unknown7(IMILUnknown1 *iface, void *arg)
Definition: bitmap.c:713
static HRESULT WINAPI IMILUnknown1Impl_unknown6(IMILUnknown1 *iface, DWORD64 arg)
Definition: bitmap.c:707
static ULONG WINAPI IMILUnknown1Impl_AddRef(IMILUnknown1 *iface)
Definition: bitmap.c:666
static HRESULT WINAPI IMILUnknown1Impl_unknown2(IMILUnknown1 *iface, void *arg1, void *arg2)
Definition: bitmap.c:683

Definition at line 729 of file bitmap.c.

Referenced by BitmapImpl_Create().

◆ IMILUnknown2Impl_Vtbl

const IMILUnknown2Vtbl IMILUnknown2Impl_Vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI IMILUnknown2Impl_unknown1(IMILUnknown2 *iface, void *arg1, void **arg2)
Definition: bitmap.c:764
static HRESULT WINAPI IMILUnknown2Impl_QueryInterface(IMILUnknown2 *iface, REFIID iid, void **ppv)
Definition: bitmap.c:744
static ULONG WINAPI IMILUnknown2Impl_Release(IMILUnknown2 *iface)
Definition: bitmap.c:758
static HRESULT WINAPI IMILUnknown2Impl_unknown2(IMILUnknown2 *iface, void *arg1, void *arg2)
Definition: bitmap.c:771
static ULONG WINAPI IMILUnknown2Impl_AddRef(IMILUnknown2 *iface)
Definition: bitmap.c:752
static HRESULT WINAPI IMILUnknown2Impl_unknown3(IMILUnknown2 *iface, void *arg1)
Definition: bitmap.c:777

Definition at line 783 of file bitmap.c.

Referenced by BitmapImpl_Create().

◆ pixel_fmt_map

const { ... } pixel_fmt_map[]
Initial value:
=
{
{ &GUID_WICPixelFormatDontCare, 0 },
{ &GUID_WICPixelFormat1bppIndexed, 1 },
{ &GUID_WICPixelFormat2bppIndexed, 2 },
{ &GUID_WICPixelFormat4bppIndexed, 3 },
{ &GUID_WICPixelFormat8bppIndexed, 4 },
{ &GUID_WICPixelFormatBlackWhite, 5 },
{ &GUID_WICPixelFormat2bppGray, 6 },
{ &GUID_WICPixelFormat4bppGray, 7 },
{ &GUID_WICPixelFormat8bppGray, 8 },
{ &GUID_WICPixelFormat16bppBGR555, 9 },
{ &GUID_WICPixelFormat16bppBGR565, 0x0a },
{ &GUID_WICPixelFormat16bppGray, 0x0b },
{ &GUID_WICPixelFormat24bppBGR, 0x0c },
{ &GUID_WICPixelFormat24bppRGB, 0x0d },
{ &GUID_WICPixelFormat32bppBGR, 0x0e },
{ &GUID_WICPixelFormat32bppBGRA, 0x0f },
{ &GUID_WICPixelFormat32bppPBGRA, 0x10 },
{ &GUID_WICPixelFormat48bppRGB, 0x15 },
{ &GUID_WICPixelFormat64bppRGBA, 0x16 },
{ &GUID_WICPixelFormat64bppPRGBA, 0x17 },
{ &GUID_WICPixelFormat32bppCMYK, 0x1c }
}

Referenced by IMILBitmapImpl_GetPixelFormat().

◆ WIC_format

const GUID* WIC_format

Definition at line 515 of file bitmap.c.

Referenced by IMILBitmapImpl_GetPixelFormat().