ReactOS 0.4.16-dev-1056-gbe87e00
wincodecs_private.h File Reference
#include "wincodec.h"
#include "wincodecsdk.h"
#include "wine/debug.h"
Include dependency graph for wincodecs_private.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _MetadataItem
 
struct  _MetadataHandlerVtbl
 
struct  decoder_info
 
struct  decoder_stat
 
struct  decoder_frame
 
struct  decoder_block
 
struct  decoder
 
struct  decoder_funcs
 
struct  encoder_info
 
struct  encoder_frame
 
struct  encoder
 
struct  encoder_funcs
 

Macros

#define INTERFACE   IMILBitmapSource
 
#define INTERFACE   IMILBitmap
 
#define INTERFACE   IMILBitmapScaler
 
#define THISCALLMETHOD_(type, method)   type (__thiscall *method)
 
#define INTERFACE   IMILUnknown1
 
#define INTERFACE   IMILUnknown2
 
#define DECODER_FLAGS_CAPABILITY_MASK   0x1f
 
#define DECODER_FLAGS_UNSUPPORTED_COLOR_CONTEXT   0x80000000
 
#define DECODER_BLOCK_OPTION_MASK   0x0001000F
 
#define DECODER_BLOCK_FULL_STREAM   0x80000000
 
#define DECODER_BLOCK_READER_CLSID   0x40000000
 
#define ENCODER_FLAGS_MULTI_FRAME   0x1
 
#define ENCODER_FLAGS_ICNS_SIZE   0x2
 
#define ENCODER_FLAGS_SUPPORTS_METADATA   0x4
 

Typedefs

typedef HRESULT(* class_constructor) (REFIID, void **)
 
typedef struct BmpDecoder BmpDecoder
 
typedef struct _MetadataItem MetadataItem
 
typedef struct _MetadataHandlerVtbl MetadataHandlerVtbl
 

Enumerations

enum  encoder_option {
  ENCODER_OPTION_INTERLACE , ENCODER_OPTION_FILTER , ENCODER_OPTION_COMPRESSION_METHOD , ENCODER_OPTION_COMPRESSION_QUALITY ,
  ENCODER_OPTION_IMAGE_QUALITY , ENCODER_OPTION_BITMAP_TRANSFORM , ENCODER_OPTION_LUMINANCE , ENCODER_OPTION_CHROMINANCE ,
  ENCODER_OPTION_YCRCB_SUBSAMPLING , ENCODER_OPTION_SUPPRESS_APP0 , ENCODER_OPTION_END
}
 

Functions

 DEFINE_GUID (CLSID_WineTgaDecoder, 0xb11fc79a, 0x67cc, 0x43e6, 0xa9, 0xce, 0xe3, 0xd5, 0x49, 0x45, 0xd3, 0x04)
 
 DEFINE_GUID (GUID_WineContainerFormatTga, 0x0c44fda1, 0xa5c5, 0x4298, 0x96, 0x85, 0x47, 0x3f, 0xc1, 0x7c, 0xd3, 0x22)
 
 DEFINE_GUID (GUID_VendorWine, 0xddf46da1, 0x7dc1, 0x404e, 0x98, 0xf2, 0xef, 0xa4, 0x8d, 0xfc, 0x95, 0x0a)
 
 DECLARE_INTERFACE_ (IMILBitmapSource, IUnknown)
 
 DECLARE_INTERFACE_ (IMILBitmap, IMILBitmapSource)
 
 DECLARE_INTERFACE_ (IMILBitmapScaler, IMILBitmapSource)
 
 DECLARE_INTERFACE_ (IMILUnknown1, IUnknown)
 
 DECLARE_INTERFACE_ (IMILUnknown2, IUnknown)
 
HRESULT create_instance (const CLSID *clsid, const IID *iid, void **ppv)
 
HRESULT FormatConverter_CreateInstance (REFIID riid, void **ppv)
 
HRESULT ImagingFactory_CreateInstance (REFIID riid, void **ppv)
 
HRESULT BmpDecoder_CreateInstance (REFIID riid, void **ppv)
 
HRESULT PngDecoder_CreateInstance (REFIID iid, void **ppv)
 
HRESULT PngEncoder_CreateInstance (REFIID iid, void **ppv)
 
HRESULT BmpEncoder_CreateInstance (REFIID iid, void **ppv)
 
HRESULT DibDecoder_CreateInstance (REFIID iid, void **ppv)
 
HRESULT GifDecoder_CreateInstance (REFIID riid, void **ppv)
 
HRESULT GifEncoder_CreateInstance (REFIID iid, void **ppv)
 
HRESULT IcoDecoder_CreateInstance (REFIID iid, void **ppv)
 
HRESULT JpegDecoder_CreateInstance (REFIID iid, void **ppv)
 
HRESULT JpegEncoder_CreateInstance (REFIID iid, void **ppv)
 
HRESULT TiffDecoder_CreateInstance (REFIID iid, void **ppv)
 
HRESULT TiffEncoder_CreateInstance (REFIID iid, void **ppv)
 
HRESULT TgaDecoder_CreateInstance (REFIID iid, void **ppv)
 
HRESULT DdsDecoder_CreateInstance (REFIID iid, void **ppv)
 
HRESULT DdsEncoder_CreateInstance (REFIID iid, void **ppv)
 
HRESULT BitmapImpl_Create (UINT uiWidth, UINT uiHeight, UINT stride, UINT datasize, void *view, UINT offset, REFWICPixelFormatGUID pixelFormat, WICBitmapCreateCacheOption option, IWICBitmap **ppIBitmap)
 
HRESULT BitmapScaler_Create (IWICBitmapScaler **scaler)
 
HRESULT FlipRotator_Create (IWICBitmapFlipRotator **fliprotator)
 
HRESULT PaletteImpl_Create (IWICPalette **palette)
 
HRESULT StreamImpl_Create (IWICStream **stream)
 
HRESULT ColorContext_Create (IWICColorContext **context)
 
HRESULT ColorTransform_Create (IWICColorTransform **transform)
 
HRESULT BitmapClipper_Create (IWICBitmapClipper **clipper)
 
HRESULT copy_pixels (UINT bpp, const BYTE *srcbuffer, UINT srcwidth, UINT srcheight, INT srcstride, const WICRect *rc, UINT dststride, UINT dstbuffersize, BYTE *dstbuffer)
 
HRESULT configure_write_source (IWICBitmapFrameEncode *iface, IWICBitmapSource *source, const WICRect *prc, const WICPixelFormatGUID *format, INT width, INT height, double xres, double yres)
 
HRESULT write_source (IWICBitmapFrameEncode *iface, IWICBitmapSource *source, const WICRect *prc, const WICPixelFormatGUID *format, UINT bpp, BOOL need_palette, INT width, INT height)
 
void reverse_bgr8 (UINT bytesperpixel, LPBYTE bits, UINT width, UINT height, INT stride)
 
HRESULT get_pixelformat_bpp (const GUID *pixelformat, UINT *bpp)
 
HRESULT CreatePropertyBag2 (const PROPBAG2 *options, UINT count, IPropertyBag2 **property)
 
HRESULT CreateComponentInfo (REFCLSID clsid, IWICComponentInfo **ppIInfo)
 
void ReleaseComponentInfos (void)
 
HRESULT CreateComponentEnumerator (DWORD componentTypes, DWORD options, IEnumUnknown **ppIEnumUnknown)
 
HRESULT get_decoder_info (REFCLSID clsid, IWICBitmapDecoderInfo **info)
 
HRESULT IcoDibDecoder_CreateInstance (BmpDecoder **ppDecoder)
 
void BmpDecoder_GetWICDecoder (BmpDecoder *This, IWICBitmapDecoder **ppDecoder)
 
void BmpDecoder_FindIconMask (BmpDecoder *This, ULONG *mask_offset, int *topdown)
 
HRESULT MetadataReader_Create (const MetadataHandlerVtbl *vtable, REFIID iid, void **ppv)
 
HRESULT UnknownMetadataReader_CreateInstance (REFIID iid, void **ppv)
 
HRESULT IfdMetadataReader_CreateInstance (REFIID iid, void **ppv)
 
HRESULT PngChrmReader_CreateInstance (REFIID iid, void **ppv)
 
HRESULT PngGamaReader_CreateInstance (REFIID iid, void **ppv)
 
HRESULT PngHistReader_CreateInstance (REFIID iid, void **ppv)
 
HRESULT PngTextReader_CreateInstance (REFIID iid, void **ppv)
 
HRESULT PngTimeReader_CreateInstance (REFIID iid, void **ppv)
 
HRESULT LSDReader_CreateInstance (REFIID iid, void **ppv)
 
HRESULT IMDReader_CreateInstance (REFIID iid, void **ppv)
 
HRESULT GCEReader_CreateInstance (REFIID iid, void **ppv)
 
HRESULT APEReader_CreateInstance (REFIID iid, void **ppv)
 
HRESULT GifCommentReader_CreateInstance (REFIID iid, void **ppv)
 
HRESULT MetadataQueryReader_CreateInstance (IWICMetadataBlockReader *, const WCHAR *, IWICMetadataQueryReader **)
 
HRESULT MetadataQueryWriter_CreateInstance (IWICMetadataBlockWriter *, const WCHAR *, IWICMetadataQueryWriter **)
 
HRESULT stream_initialize_from_filehandle (IWICStream *iface, HANDLE hfile)
 
static const chardebug_wic_rect (const WICRect *rect)
 
HRESULT read_png_chunk (IStream *stream, BYTE *type, BYTE **data, ULONG *data_size)
 
HRESULT CDECL stream_getsize (IStream *stream, ULONGLONG *size)
 
HRESULT CDECL stream_read (IStream *stream, void *buffer, ULONG read, ULONG *bytes_read)
 
HRESULT CDECL stream_seek (IStream *stream, LONGLONG ofs, DWORD origin, ULONGLONG *new_position)
 
HRESULT CDECL stream_write (IStream *stream, const void *buffer, ULONG write, ULONG *bytes_written)
 
HRESULT CDECL decoder_create (const CLSID *decoder_clsid, struct decoder_info *info, struct decoder **result)
 
HRESULT CDECL decoder_initialize (struct decoder *This, IStream *stream, struct decoder_stat *st)
 
HRESULT CDECL decoder_get_frame_info (struct decoder *This, UINT frame, struct decoder_frame *info)
 
HRESULT CDECL decoder_copy_pixels (struct decoder *This, UINT frame, const WICRect *prc, UINT stride, UINT buffersize, BYTE *buffer)
 
HRESULT CDECL decoder_get_metadata_blocks (struct decoder *This, UINT frame, UINT *count, struct decoder_block **blocks)
 
HRESULT CDECL decoder_get_color_context (struct decoder *This, UINT frame, UINT num, BYTE **data, DWORD *datasize)
 
void CDECL decoder_destroy (struct decoder *This)
 
HRESULT CDECL encoder_initialize (struct encoder *This, IStream *stream)
 
HRESULT CDECL encoder_get_supported_format (struct encoder *This, GUID *pixel_format, DWORD *bpp, BOOL *indexed)
 
HRESULT CDECL encoder_create_frame (struct encoder *This, const struct encoder_frame *frame)
 
HRESULT CDECL encoder_write_lines (struct encoder *This, BYTE *data, DWORD line_count, DWORD stride)
 
HRESULT CDECL encoder_commit_frame (struct encoder *This)
 
HRESULT CDECL encoder_commit_file (struct encoder *This)
 
void CDECL encoder_destroy (struct encoder *This)
 
HRESULT CDECL png_decoder_create (struct decoder_info *info, struct decoder **result)
 
HRESULT CDECL tiff_decoder_create (struct decoder_info *info, struct decoder **result)
 
HRESULT CDECL jpeg_decoder_create (struct decoder_info *info, struct decoder **result)
 
HRESULT CDECL png_encoder_create (struct encoder_info *info, struct encoder **result)
 
HRESULT CDECL tiff_encoder_create (struct encoder_info *info, struct encoder **result)
 
HRESULT CDECL jpeg_encoder_create (struct encoder_info *info, struct encoder **result)
 
HRESULT CDECL icns_encoder_create (struct encoder_info *info, struct encoder **result)
 
HRESULT CommonDecoder_CreateInstance (struct decoder *decoder, const struct decoder_info *decoder_info, REFIID iid, void **ppv)
 
HRESULT CommonEncoder_CreateInstance (struct encoder *encoder, const struct encoder_info *encoder_info, REFIID iid, void **ppv)
 

Variables

IID IID_IMILBitmap
 
IID IID_IMILBitmapSource
 
IID IID_IMILBitmapLock
 
IID IID_IMILBitmapScaler
 
IID IID_IMILFormatConverter
 
IID IID_IMILPalette
 
HMODULE windowscodecs_module
 

Macro Definition Documentation

◆ DECODER_BLOCK_FULL_STREAM

#define DECODER_BLOCK_FULL_STREAM   0x80000000

Definition at line 301 of file wincodecs_private.h.

◆ DECODER_BLOCK_OPTION_MASK

#define DECODER_BLOCK_OPTION_MASK   0x0001000F

Definition at line 300 of file wincodecs_private.h.

◆ DECODER_BLOCK_READER_CLSID

#define DECODER_BLOCK_READER_CLSID   0x40000000

Definition at line 302 of file wincodecs_private.h.

◆ DECODER_FLAGS_CAPABILITY_MASK

#define DECODER_FLAGS_CAPABILITY_MASK   0x1f

Definition at line 280 of file wincodecs_private.h.

◆ DECODER_FLAGS_UNSUPPORTED_COLOR_CONTEXT

#define DECODER_FLAGS_UNSUPPORTED_COLOR_CONTEXT   0x80000000

Definition at line 281 of file wincodecs_private.h.

◆ ENCODER_FLAGS_ICNS_SIZE

#define ENCODER_FLAGS_ICNS_SIZE   0x2

Definition at line 364 of file wincodecs_private.h.

◆ ENCODER_FLAGS_MULTI_FRAME

#define ENCODER_FLAGS_MULTI_FRAME   0x1

Definition at line 363 of file wincodecs_private.h.

◆ ENCODER_FLAGS_SUPPORTS_METADATA

#define ENCODER_FLAGS_SUPPORTS_METADATA   0x4

Definition at line 365 of file wincodecs_private.h.

◆ INTERFACE [1/5]

#define INTERFACE   IMILBitmapSource

Definition at line 145 of file wincodecs_private.h.

◆ INTERFACE [2/5]

#define INTERFACE   IMILBitmap

Definition at line 145 of file wincodecs_private.h.

◆ INTERFACE [3/5]

#define INTERFACE   IMILBitmapScaler

Definition at line 145 of file wincodecs_private.h.

◆ INTERFACE [4/5]

Definition at line 145 of file wincodecs_private.h.

◆ INTERFACE [5/5]

#define INTERFACE   IMILUnknown2

Definition at line 145 of file wincodecs_private.h.

◆ THISCALLMETHOD_

#define THISCALLMETHOD_ (   type,
  method 
)    type (__thiscall *method)

Definition at line 111 of file wincodecs_private.h.

Typedef Documentation

◆ BmpDecoder

Definition at line 218 of file wincodecs_private.h.

◆ class_constructor

typedef HRESULT(* class_constructor) (REFIID, void **)

Definition at line 161 of file wincodecs_private.h.

◆ MetadataHandlerVtbl

◆ MetadataItem

Enumeration Type Documentation

◆ encoder_option

Enumerator
ENCODER_OPTION_INTERLACE 
ENCODER_OPTION_FILTER 
ENCODER_OPTION_COMPRESSION_METHOD 
ENCODER_OPTION_COMPRESSION_QUALITY 
ENCODER_OPTION_IMAGE_QUALITY 
ENCODER_OPTION_BITMAP_TRANSFORM 
ENCODER_OPTION_LUMINANCE 
ENCODER_OPTION_CHROMINANCE 
ENCODER_OPTION_YCRCB_SUBSAMPLING 
ENCODER_OPTION_SUPPRESS_APP0 
ENCODER_OPTION_END 

Definition at line 348 of file wincodecs_private.h.

Function Documentation

◆ APEReader_CreateInstance()

HRESULT APEReader_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 422 of file gifformat.c.

423{
425}
static const MetadataHandlerVtbl APEReader_Vtbl
Definition: gifformat.c:416
REFIID LPVOID * ppv
Definition: atlbase.h:39
HRESULT MetadataReader_Create(const MetadataHandlerVtbl *vtable, REFIID iid, void **ppv)

Referenced by GifDecoder_Block_GetReaderByIndex().

◆ BitmapClipper_Create()

HRESULT BitmapClipper_Create ( IWICBitmapClipper **  clipper)

Definition at line 243 of file clipper.c.

244{
246
247 This = malloc(sizeof(BitmapClipper));
248 if (!This) return E_OUTOFMEMORY;
249
250 This->IWICBitmapClipper_iface.lpVtbl = &BitmapClipper_Vtbl;
251 This->ref = 1;
252 This->source = NULL;
253#ifdef __REACTOS__
255#else
257#endif
258 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": BitmapClipper.lock");
259
260 *clipper = &This->IWICBitmapClipper_iface;
261
262 return S_OK;
263}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define malloc
Definition: debug_ros.c:4
#define NULL
Definition: types.h:112
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
Definition: sync.c:107
#define S_OK
Definition: intsafe.h:52
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition: synch.c:751
#define DWORD_PTR
Definition: treelist.c:76
static const IWICBitmapClipperVtbl BitmapClipper_Vtbl
Definition: clipper.c:231
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
Definition: winnt_old.h:1116

Referenced by ImagingFactory_CreateBitmapClipper().

◆ 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 790 of file bitmap.c.

793{
794 HRESULT hr;
796 BYTE *data;
797 UINT bpp;
798
799 hr = get_pixelformat_bpp(pixelFormat, &bpp);
800 if (FAILED(hr)) return hr;
801
802 if (!stride) stride = (((bpp*uiWidth)+31)/32)*4;
803 if (!datasize) datasize = stride * uiHeight;
804
805 if (datasize < stride * uiHeight) return WINCODEC_ERR_INSUFFICIENTBUFFER;
806 if (stride < ((bpp*uiWidth)+7)/8) return E_INVALIDARG;
807
808 This = malloc(sizeof(BitmapImpl));
809 if (!This) return E_OUTOFMEMORY;
810
811 if (view) data = (BYTE *)view + offset;
812 else if (!(data = calloc(1, datasize)))
813 {
814 free(This);
815 return E_OUTOFMEMORY;
816 }
817
818 This->IWICBitmap_iface.lpVtbl = &BitmapImpl_Vtbl;
819 This->IMILBitmap_iface.lpVtbl = &IMILBitmapImpl_Vtbl;
820 This->IMILUnknown1_iface.lpVtbl = &IMILUnknown1Impl_Vtbl;
821 This->IMILUnknown2_iface.lpVtbl = &IMILUnknown2Impl_Vtbl;
822 This->ref = 1;
823 This->palette = NULL;
824 This->palette_set = 0;
825 This->lock = 0;
826 This->data = data;
827 This->view = view;
828 This->offset = offset;
829 This->width = uiWidth;
830 This->height = uiHeight;
831 This->stride = stride;
832 This->bpp = bpp;
833 memcpy(&This->pixelformat, pixelFormat, sizeof(GUID));
834 This->dpix = This->dpiy = 0.0;
835#ifdef __REACTOS__
837#else
839#endif
840 This->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": BitmapImpl.lock");
841
842 *ppIBitmap = &This->IWICBitmap_iface;
843
844 return S_OK;
845}
static SIZE_T datasize
Definition: asm.c:30
#define E_INVALIDARG
Definition: ddrawi.h:101
#define free
Definition: debug_ros.c:5
DWORD bpp
Definition: surface.c:185
static const IMILBitmapVtbl IMILBitmapImpl_Vtbl
Definition: bitmap.c:636
static const IMILUnknown2Vtbl IMILUnknown2Impl_Vtbl
Definition: bitmap.c:780
static const IMILUnknown1Vtbl IMILUnknown1Impl_Vtbl
Definition: bitmap.c:726
static const IWICBitmapVtbl BitmapImpl_Vtbl
Definition: bitmap.c:468
HRESULT get_pixelformat_bpp(const GUID *pixelformat, UINT *bpp)
Definition: main.c:62
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLsizei stride
Definition: glext.h:5848
GLintptr offset
Definition: glext.h:5920
#define FAILED(hr)
Definition: intsafe.h:51
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
unsigned int UINT
Definition: ndis.h:50
#define calloc
Definition: rosglue.h:14
HRESULT hr
Definition: shlfolder.c:183
#define WINCODEC_ERR_INSUFFICIENTBUFFER
Definition: winerror.h:3311
unsigned char BYTE
Definition: xxhash.c:193

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

◆ BitmapScaler_Create()

HRESULT BitmapScaler_Create ( IWICBitmapScaler **  scaler)

Definition at line 513 of file scaler.c.

514{
516
517 This = malloc(sizeof(BitmapScaler));
518 if (!This) return E_OUTOFMEMORY;
519
520 This->IWICBitmapScaler_iface.lpVtbl = &BitmapScaler_Vtbl;
521 This->IMILBitmapScaler_iface.lpVtbl = &IMILBitmapScaler_Vtbl;
522 This->ref = 1;
523 This->source = NULL;
524 This->width = 0;
525 This->height = 0;
526 This->src_width = 0;
527 This->src_height = 0;
528 This->mode = 0;
529 This->bpp = 0;
530#ifdef __REACTOS__
532#else
534#endif
535 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": BitmapScaler.lock");
536
537 *scaler = &This->IWICBitmapScaler_iface;
538
539 return S_OK;
540}
static const IWICBitmapScalerVtbl BitmapScaler_Vtbl
Definition: scaler.c:381
static const IMILBitmapScalerVtbl IMILBitmapScaler_Vtbl
Definition: scaler.c:500

Referenced by ImagingFactory_CreateBitmapScaler().

◆ BmpDecoder_CreateInstance()

HRESULT BmpDecoder_CreateInstance ( REFIID  riid,
void **  ppv 
)

Definition at line 1230 of file bmpdecode.c.

1231{
1232 return BmpDecoder_Construct(FALSE, FALSE, iid, ppv);
1233}
static HRESULT BmpDecoder_Construct(int packed, int icoframe, REFIID iid, void **ppv)
Definition: bmpdecode.c:1212
#define FALSE
Definition: types.h:117

◆ BmpDecoder_FindIconMask()

void BmpDecoder_FindIconMask ( BmpDecoder This,
ULONG mask_offset,
int topdown 
)

Definition at line 1251 of file bmpdecode.c.

1252{
1253 assert(This->stream != NULL);
1254
1255 if (This->read_data_func == BmpFrameDecode_ReadUncompressed)
1256 {
1257 /* RGB or BITFIELDS data */
1258 UINT width, height;
1259 ULONG bytesperrow, datasize;
1260 IWICBitmapFrameDecode_GetSize(&This->IWICBitmapFrameDecode_iface, &width, &height);
1261 bytesperrow = (((width * This->bitsperpixel)+31)/32)*4;
1262 datasize = bytesperrow * height;
1263 *mask_offset = This->image_offset + datasize;
1264 }
1265 else
1266 *mask_offset = 0;
1267
1268 *topdown = This->stride > 0;
1269}
static HRESULT BmpFrameDecode_ReadUncompressed(BmpDecoder *This)
Definition: bmpdecode.c:361
#define assert(x)
Definition: debug.h:53
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLint GLint GLsizei width
Definition: gl.h:1546
uint32_t ULONG
Definition: typedefs.h:59

Referenced by ReadIcoDib().

◆ BmpDecoder_GetWICDecoder()

void BmpDecoder_GetWICDecoder ( BmpDecoder This,
IWICBitmapDecoder **  ppDecoder 
)

Definition at line 1245 of file bmpdecode.c.

1246{
1247 *ppDecoder = &This->IWICBitmapDecoder_iface;
1248}

Referenced by ReadIcoDib().

◆ BmpEncoder_CreateInstance()

HRESULT BmpEncoder_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 642 of file bmpencode.c.

643{
645 HRESULT ret;
646
647 TRACE("(%s,%p)\n", debugstr_guid(iid), ppv);
648
649 *ppv = NULL;
650
651 This = malloc(sizeof(BmpEncoder));
652 if (!This) return E_OUTOFMEMORY;
653
654 This->IWICBitmapEncoder_iface.lpVtbl = &BmpEncoder_Vtbl;
655 This->ref = 1;
656 This->stream = NULL;
657 This->frame = NULL;
658
659 ret = IWICBitmapEncoder_QueryInterface(&This->IWICBitmapEncoder_iface, iid, ppv);
660 IWICBitmapEncoder_Release(&This->IWICBitmapEncoder_iface);
661
662 return ret;
663}
static const IWICBitmapEncoderVtbl BmpEncoder_Vtbl
Definition: bmpencode.c:626
#define debugstr_guid
Definition: kernel32.h:35
#define TRACE(s)
Definition: solgame.cpp:4
int ret

◆ ColorContext_Create()

HRESULT ColorContext_Create ( IWICColorContext **  context)

Definition at line 256 of file colorcontext.c.

257{
259
260 if (!colorcontext) return E_INVALIDARG;
261
262 This = malloc(sizeof(ColorContext));
263 if (!This) return E_OUTOFMEMORY;
264
265 This->IWICColorContext_iface.lpVtbl = &ColorContext_Vtbl;
266 This->ref = 1;
267 This->type = 0;
268 This->profile = NULL;
269 This->profile_len = 0;
270 This->exif_color_space = ~0u;
271
272 *colorcontext = &This->IWICColorContext_iface;
273
274 return S_OK;
275}
static const IWICColorContextVtbl ColorContext_Vtbl
Definition: colorcontext.c:244
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 * u
Definition: glfuncs.h:240

Referenced by ImagingFactory_CreateColorContext().

◆ ColorTransform_Create()

HRESULT ColorTransform_Create ( IWICColorTransform **  transform)

Definition at line 172 of file colortransform.c.

173{
175
176 if (!colortransform) return E_INVALIDARG;
177
178 This = malloc(sizeof(ColorTransform));
179 if (!This) return E_OUTOFMEMORY;
180
181 This->IWICColorTransform_iface.lpVtbl = &ColorTransform_Vtbl;
182 This->ref = 1;
183 This->dst = NULL;
184
185 *colortransform = &This->IWICColorTransform_iface;
186
187 return S_OK;
188}
static const IWICColorTransformVtbl ColorTransform_Vtbl

Referenced by ImagingFactory_CreateColorTransformer().

◆ CommonDecoder_CreateInstance()

HRESULT CommonDecoder_CreateInstance ( struct decoder decoder,
const struct decoder_info decoder_info,
REFIID  iid,
void **  ppv 
)

Definition at line 780 of file decoder.c.

782{
784 HRESULT hr;
785
786 TRACE("(%s,%s,%p)\n", debugstr_guid(&decoder_info->clsid), debugstr_guid(iid), ppv);
787
788 This = malloc(sizeof(*This));
789 if (!This)
790 {
792 return E_OUTOFMEMORY;
793 }
794
795 This->IWICBitmapDecoder_iface.lpVtbl = &CommonDecoder_Vtbl;
796 This->ref = 1;
797 This->stream = NULL;
798 This->decoder = decoder;
799 This->decoder_info = *decoder_info;
800#ifdef __REACTOS__
802#else
804#endif
805 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": CommonDecoder.lock");
806
807 hr = IWICBitmapDecoder_QueryInterface(&This->IWICBitmapDecoder_iface, iid, ppv);
808 IWICBitmapDecoder_Release(&This->IWICBitmapDecoder_iface);
809
810 return hr;
811}
static const IWICBitmapDecoderVtbl CommonDecoder_Vtbl
Definition: decoder.c:227
void CDECL decoder_destroy(struct decoder *decoder)

Referenced by JpegDecoder_CreateInstance(), PngDecoder_CreateInstance(), and TiffDecoder_CreateInstance().

◆ CommonEncoder_CreateInstance()

HRESULT CommonEncoder_CreateInstance ( struct encoder encoder,
const struct encoder_info encoder_info,
REFIID  iid,
void **  ppv 
)

Definition at line 867 of file encoder.c.

869{
871 HRESULT ret;
872
873 TRACE("(%s,%p)\n", debugstr_guid(iid), ppv);
874
875 *ppv = NULL;
876
877 This = malloc(sizeof(CommonEncoder));
878 if (!This)
879 {
881 return E_OUTOFMEMORY;
882 }
883
884 This->IWICBitmapEncoder_iface.lpVtbl = &CommonEncoder_Vtbl;
885 This->ref = 1;
886 This->stream = NULL;
887 This->encoder = encoder;
888 This->encoder_info = *encoder_info;
889 This->frame_count = 0;
890 This->uncommitted_frame = FALSE;
891 This->committed = FALSE;
892#ifdef __REACTOS__
894#else
896#endif
897 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": CommonEncoder.lock");
898
899 ret = IWICBitmapEncoder_QueryInterface(&This->IWICBitmapEncoder_iface, iid, ppv);
900 IWICBitmapEncoder_Release(&This->IWICBitmapEncoder_iface);
901
902 return ret;
903}
static const IWICBitmapEncoderVtbl CommonEncoder_Vtbl
Definition: encoder.c:851
void CDECL encoder_destroy(struct encoder *encoder)

Referenced by JpegEncoder_CreateInstance(), PngEncoder_CreateInstance(), and TiffEncoder_CreateInstance().

◆ configure_write_source()

HRESULT configure_write_source ( IWICBitmapFrameEncode iface,
IWICBitmapSource source,
const WICRect prc,
const WICPixelFormatGUID format,
INT  width,
INT  height,
double  xres,
double  yres 
)

Definition at line 38 of file wincodecs_common.c.

42{
43 UINT src_width, src_height;
44 HRESULT hr = S_OK;
45
46 if (width == 0 && height == 0)
47 {
48 if (prc)
49 {
50 if (prc->Width <= 0 || prc->Height <= 0) return E_INVALIDARG;
51 width = prc->Width;
52 height = prc->Height;
53 }
54 else
55 {
56 hr = IWICBitmapSource_GetSize(source, &src_width, &src_height);
57 if (FAILED(hr)) return hr;
58 if (src_width == 0 || src_height == 0) return E_INVALIDARG;
59 width = src_width;
60 height = src_height;
61 }
62 hr = IWICBitmapFrameEncode_SetSize(iface, (UINT)width, (UINT)height);
63 if (FAILED(hr)) return hr;
64 }
65 if (width == 0 || height == 0) return E_INVALIDARG;
66
67 if (!format)
68 {
69 WICPixelFormatGUID src_format;
70
71 hr = IWICBitmapSource_GetPixelFormat(source, &src_format);
72 if (FAILED(hr)) return hr;
73
74 hr = IWICBitmapFrameEncode_SetPixelFormat(iface, &src_format);
75 if (FAILED(hr)) return hr;
76 }
77
78 if (xres == 0.0 || yres == 0.0)
79 {
80 hr = IWICBitmapSource_GetResolution(source, &xres, &yres);
81 if (FAILED(hr)) return hr;
82 hr = IWICBitmapFrameEncode_SetResolution(iface, xres, yres);
83 if (FAILED(hr)) return hr;
84 }
85
86 return hr;
87}
_Out_ LPRECT prc
Definition: ntgdi.h:1658
Definition: format.c:58

Referenced by BmpFrameEncode_WriteSource(), CommonEncoderFrame_WriteSource(), and GifFrameEncode_WriteSource().

◆ copy_pixels()

HRESULT copy_pixels ( UINT  bpp,
const BYTE srcbuffer,
UINT  srcwidth,
UINT  srcheight,
INT  srcstride,
const WICRect rc,
UINT  dststride,
UINT  dstbuffersize,
BYTE dstbuffer 
)

Definition at line 86 of file wincodecs_common.h.

89{
90 UINT bytesperrow;
91 UINT row_offset; /* number of bits into the source rows where the data starts */
93
94 if (!rc)
95 {
96 rect.X = 0;
97 rect.Y = 0;
98 rect.Width = srcwidth;
99 rect.Height = srcheight;
100 rc = &rect;
101 }
102 else
103 {
104 if (rc->X < 0 || rc->Y < 0 || rc->X+rc->Width > srcwidth || rc->Y+rc->Height > srcheight)
105 return E_INVALIDARG;
106 }
107
108 bytesperrow = ((bpp * rc->Width)+7)/8;
109
110 if (dststride < bytesperrow)
111 return E_INVALIDARG;
112
113 if ((dststride * (rc->Height-1)) + bytesperrow > dstbuffersize)
114 return E_INVALIDARG;
115
116 /* if the whole bitmap is copied and the buffer format matches then it's a matter of a single memcpy */
117 if (rc->X == 0 && rc->Y == 0 && rc->Width == srcwidth && rc->Height == srcheight &&
118 srcstride == dststride && srcstride == bytesperrow)
119 {
120 memcpy(dstbuffer, srcbuffer, srcstride * srcheight);
121 return S_OK;
122 }
123
124 row_offset = rc->X * bpp;
125
126 if (row_offset % 8 == 0)
127 {
128 /* everything lines up on a byte boundary */
129 INT row;
130 const BYTE *src;
131 BYTE *dst;
132
133 src = srcbuffer + (row_offset / 8) + srcstride * rc->Y;
134 dst = dstbuffer;
135 for (row=0; row < rc->Height; row++)
136 {
137 memcpy(dst, src, bytesperrow);
138 src += srcstride;
139 dst += dststride;
140 }
141 return S_OK;
142 }
143 else
144 {
145 /* we have to do a weird bitwise copy. eww. */
146 FIXME("cannot reliably copy bitmap data if bpp < 8\n");
147 return E_FAIL;
148 }
149}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_FAIL
Definition: ddrawi.h:102
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
Definition: typeof.h:78
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
#define for
Definition: utility.h:88
& rect
Definition: startmenu.cpp:1413
INT Height
Definition: wincodec.idl:335
INT Width
Definition: wincodec.idl:334
int32_t INT
Definition: typedefs.h:58

◆ create_instance()

HRESULT create_instance ( const CLSID clsid,
const IID iid,
void **  ppv 
)

Definition at line 212 of file clsfactory.c.

213{
214 int i;
215
216 for (i=0; wic_classes[i].classid; i++)
217 if (IsEqualCLSID(wic_classes[i].classid, clsid))
218 return wic_classes[i].constructor(iid, ppv);
219
220 return CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, iid, ppv);
221}
static const classinfo wic_classes[]
Definition: clsfactory.c:45
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
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
REFCLSID clsid
Definition: msctf.c:82
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:96
REFCLSID classid
Definition: clsfactory.c:41
class_constructor constructor
Definition: clsfactory.c:42

Referenced by BitmapDecoderInfo_CreateInstance(), BitmapEncoderInfo_CreateInstance(), CommonDecoderFrame_Block_GetReaderByIndex(), CommonDecoderFrame_GetMetadataQueryReader(), FormatConverterInfo_CreateInstance(), MetadataReaderInfo_CreateInstance(), PaletteImpl_InitializeFromBitmap(), and write_source().

◆ CreateComponentEnumerator()

HRESULT CreateComponentEnumerator ( DWORD  componentTypes,
DWORD  options,
IEnumUnknown **  ppIEnumUnknown 
)

Definition at line 2339 of file info.c.

2340{
2343 const struct category *category;
2344 HKEY clsidkey, catidkey, instancekey;
2345 WCHAR guidstring[39];
2346 LONG res;
2347 int i;
2348 HRESULT hr=S_OK;
2349 CLSID clsid;
2350
2351 if (options) FIXME("ignoring flags %lx\n", options);
2352
2353 res = RegOpenKeyExW(HKEY_CLASSES_ROOT, L"CLSID", 0, KEY_READ, &clsidkey);
2354 if (res != ERROR_SUCCESS)
2355 return HRESULT_FROM_WIN32(res);
2356
2357 This = malloc(sizeof(ComponentEnum));
2358 if (!This)
2359 {
2360 RegCloseKey(clsidkey);
2361 return E_OUTOFMEMORY;
2362 }
2363
2364 This->IEnumUnknown_iface.lpVtbl = &ComponentEnumVtbl;
2365 This->ref = 1;
2366 list_init(&This->objects);
2367#ifdef __REACTOS__
2369#else
2371#endif
2372 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": ComponentEnum.lock");
2373
2375 {
2376 if ((category->type & componentTypes) == 0) continue;
2377 StringFromGUID2(category->catid, guidstring, 39);
2378 res = RegOpenKeyExW(clsidkey, guidstring, 0, KEY_READ, &catidkey);
2379 if (res == ERROR_SUCCESS)
2380 {
2381 res = RegOpenKeyExW(catidkey, L"Instance", 0, KEY_READ, &instancekey);
2382 if (res == ERROR_SUCCESS)
2383 {
2384 i=0;
2385 for (;;i++)
2386 {
2387 DWORD guidstring_size = 39;
2388 res = RegEnumKeyExW(instancekey, i, guidstring, &guidstring_size, NULL, NULL, NULL, NULL);
2389 if (res != ERROR_SUCCESS) break;
2390
2391 item = malloc(sizeof(ComponentEnumItem));
2392 if (!item) { hr = E_OUTOFMEMORY; break; }
2393
2394 hr = CLSIDFromString(guidstring, &clsid);
2395 if (SUCCEEDED(hr))
2396 {
2398 if (SUCCEEDED(hr))
2399 list_add_tail(&This->objects, &item->entry);
2400 }
2401
2402 if (FAILED(hr))
2403 {
2404 free(item);
2405 hr = S_OK;
2406 }
2407 }
2408 RegCloseKey(instancekey);
2409 }
2410 RegCloseKey(catidkey);
2411 }
2414 }
2415 RegCloseKey(clsidkey);
2416
2417 if (SUCCEEDED(hr))
2418 {
2419 IEnumUnknown_Reset(&This->IEnumUnknown_iface);
2420 *ppIEnumUnknown = &This->IEnumUnknown_iface;
2421 }
2422 else
2423 {
2424 *ppIEnumUnknown = NULL;
2425 IEnumUnknown_Release(&This->IEnumUnknown_iface);
2426 }
2427
2428 return hr;
2429}
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
Definition: list.h:83
static void list_init(struct list_entry *head)
Definition: list.h:51
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
Definition: reg.c:2504
#define ERROR_NO_MORE_ITEMS
Definition: compat.h:105
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
Definition: compobj.c:2338
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
Definition: compobj.c:2434
HRESULT CreateComponentInfo(REFCLSID clsid, IWICComponentInfo **ppIInfo)
Definition: info.c:2030
static const IEnumUnknownVtbl ComponentEnumVtbl
Definition: info.c:2151
unsigned long DWORD
Definition: ntddk_ex.h:95
GLsizei GLenum * categories
Definition: glext.h:11561
GLuint res
Definition: glext.h:9613
#define SUCCEEDED(hr)
Definition: intsafe.h:50
static ATOM item
Definition: dde.c:856
#define KEY_READ
Definition: nt_native.h:1023
#define L(x)
Definition: ntvdm.h:50
long LONG
Definition: pedump.c:60
WICComponentType type
Definition: info.c:1999
const GUID * catid
Definition: info.c:2000
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by find_decoder(), foreach_component(), ImagingFactory_CreateComponentEnumerator(), ImagingFactory_CreateDecoder(), ImagingFactory_CreateEncoder(), and WICConvertBitmapSource().

◆ CreateComponentInfo()

HRESULT CreateComponentInfo ( REFCLSID  clsid,
IWICComponentInfo **  ppIInfo 
)

Definition at line 2030 of file info.c.

2031{
2032 struct wine_rb_entry *cache_entry;
2034 HKEY clsidkey;
2035 HKEY classkey;
2036 HKEY catidkey;
2037 HKEY instancekey;
2038 WCHAR guidstring[39];
2039 LONG res;
2040 const struct category *category;
2041 BOOL found = FALSE;
2042 HRESULT hr;
2043
2045
2047 if(cache_entry)
2048 {
2050 IWICComponentInfo_AddRef(*ppIInfo = &info->IWICComponentInfo_iface);
2052 return S_OK;
2053 }
2054
2055 res = RegOpenKeyExW(HKEY_CLASSES_ROOT, L"CLSID", 0, KEY_READ, &clsidkey);
2056 if (res != ERROR_SUCCESS)
2057 {
2059 return HRESULT_FROM_WIN32(res);
2060 }
2061
2063 {
2064 StringFromGUID2(category->catid, guidstring, 39);
2065 res = RegOpenKeyExW(clsidkey, guidstring, 0, KEY_READ, &catidkey);
2066 if (res == ERROR_SUCCESS)
2067 {
2068 res = RegOpenKeyExW(catidkey, L"Instance", 0, KEY_READ, &instancekey);
2069 if (res == ERROR_SUCCESS)
2070 {
2071 StringFromGUID2(clsid, guidstring, 39);
2072 res = RegOpenKeyExW(instancekey, guidstring, 0, KEY_READ, &classkey);
2073 if (res == ERROR_SUCCESS)
2074 {
2075 RegCloseKey(classkey);
2076 found = TRUE;
2077 }
2078 RegCloseKey(instancekey);
2079 }
2080 RegCloseKey(catidkey);
2081 }
2082 if (found) break;
2083 }
2084
2085 if (found)
2086 {
2087 res = RegOpenKeyExW(clsidkey, guidstring, 0, KEY_READ, &classkey);
2088 if (res == ERROR_SUCCESS)
2089 hr = category->constructor(classkey, clsid, &info);
2090 else
2092 }
2093 else
2094 {
2095 FIXME("%s is not supported\n", wine_dbgstr_guid(clsid));
2096 hr = E_FAIL;
2097 }
2098
2099 RegCloseKey(clsidkey);
2100
2101 if (SUCCEEDED(hr))
2102 {
2104 IWICComponentInfo_AddRef(*ppIInfo = &info->IWICComponentInfo_iface);
2105 }
2107 return hr;
2108}
#define TRUE
Definition: types.h:120
static struct wine_rb_tree component_info_cache
Definition: info.c:2019
static CRITICAL_SECTION component_info_cache_cs
Definition: info.c:2021
unsigned int BOOL
Definition: ntddk_ex.h:94
uint32_t entry
Definition: isohybrid.c:63
static __inline const char * wine_dbgstr_guid(const GUID *id)
Definition: debug.h:197
#define WINE_RB_ENTRY_VALUE(element, type, field)
Definition: rbtree.h:31
static struct wine_rb_entry * wine_rb_get(const struct wine_rb_tree *tree, const void *key)
Definition: rbtree.h:203
static int wine_rb_put(struct wine_rb_tree *tree, const void *key, struct wine_rb_entry *entry)
Definition: rbtree.h:215
Definition: svc_auth_des.c:77
HRESULT(* constructor)(HKEY, REFCLSID, ComponentInfo **)
Definition: info.c:2001
Definition: rbtree.h:36
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

Referenced by BmpEncoder_GetEncoderInfo(), CommonEncoder_GetEncoderInfo(), create_bitmap_from_source_rect(), CreateComponentEnumerator(), DdsEncoder_GetEncoderInfo(), get_decoder_info(), get_pixelformat_bpp(), GifEncoder_GetEncoderInfo(), ImagingFactory_CreateComponentInfo(), and MetadataHandler_GetMetadataHandlerInfo().

◆ CreatePropertyBag2()

HRESULT CreatePropertyBag2 ( const PROPBAG2 *  options,
UINT  count,
IPropertyBag2 **  property 
)

Definition at line 278 of file propertybag.c.

280{
281 UINT i;
282 HRESULT res = S_OK;
284
285 This = malloc(sizeof(PropertyBag));
286 if (!This) return E_OUTOFMEMORY;
287
288 This->IPropertyBag2_iface.lpVtbl = &PropertyBag_Vtbl;
289 This->ref = 1;
290 This->prop_count = count;
291
292 if (count == 0)
293 {
294 This->properties = NULL;
295 This->values = NULL;
296 }
297 else
298 {
299 This->properties = calloc(count, sizeof(PROPBAG2));
300 This->values = calloc(count, sizeof(VARIANT));
301
302 if (!This->properties || !This->values)
304 else
305 for (i=0; i < count; i++)
306 {
307 res = copy_propbag2(This->properties+i, options+i);
308 if (FAILED(res))
309 break;
310 This->properties[i].dwHint = i+1; /* 0 means unset, so we start with 1 */
311 }
312 }
313
314 if (FAILED(res))
315 {
316 PropertyBag_Release(&This->IPropertyBag2_iface);
317 *ppPropertyBag2 = NULL;
318 }
319 else
320 *ppPropertyBag2 = &This->IPropertyBag2_iface;
321
322 return res;
323}
static ULONG WINAPI PropertyBag_Release(IPropertyBag2 *iface)
Definition: propertybag.c:80
static const IPropertyBag2Vtbl PropertyBag_Vtbl
Definition: propertybag.c:267
static HRESULT copy_propbag2(PROPBAG2 *dest, const PROPBAG2 *src)
Definition: propertybag.c:213
GLuint GLuint GLsizei count
Definition: gl.h:1545

Referenced by BmpEncoder_CreateNewFrame(), CommonEncoder_CreateNewFrame(), ComponentFactory_CreateEncoderPropertyBag(), and GifEncoder_CreateNewFrame().

◆ DdsDecoder_CreateInstance()

HRESULT DdsDecoder_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 1750 of file ddsformat.c.

1751{
1753 HRESULT ret;
1754
1755 TRACE("(%s,%p)\n", debugstr_guid(iid), ppv);
1756
1757 *ppv = NULL;
1758
1759 This = malloc(sizeof(DdsDecoder));
1760 if (!This) return E_OUTOFMEMORY;
1761
1762 This->IWICBitmapDecoder_iface.lpVtbl = &DdsDecoder_Vtbl;
1763 This->IWICDdsDecoder_iface.lpVtbl = &DdsDecoder_Dds_Vtbl;
1764 This->IWICWineDecoder_iface.lpVtbl = &DdsDecoder_Wine_Vtbl;
1765 This->ref = 1;
1766 This->initialized = FALSE;
1767 This->stream = NULL;
1768#ifdef __REACTOS__
1770#else
1772#endif
1773 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": DdsDecoder.lock");
1774
1775 ret = IWICBitmapDecoder_QueryInterface(&This->IWICBitmapDecoder_iface, iid, ppv);
1776 IWICBitmapDecoder_Release(&This->IWICBitmapDecoder_iface);
1777
1778 return ret;
1779}
static const IWICDdsDecoderVtbl DdsDecoder_Dds_Vtbl
Definition: ddsformat.c:1431
static const IWICWineDecoderVtbl DdsDecoder_Wine_Vtbl
Definition: ddsformat.c:1523
static const IWICBitmapDecoderVtbl DdsDecoder_Vtbl
Definition: ddsformat.c:1257

◆ DdsEncoder_CreateInstance()

HRESULT DdsEncoder_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 2131 of file ddsformat.c.

2132{
2134 HRESULT ret;
2135
2136 TRACE("(%s,%p)\n", debugstr_guid(iid), ppv);
2137
2138 *ppv = NULL;
2139
2140 This = malloc(sizeof(DdsEncoder));
2141 if (!This) return E_OUTOFMEMORY;
2142
2143 This->IWICBitmapEncoder_iface.lpVtbl = &DdsEncoder_Vtbl;
2144 This->IWICDdsEncoder_iface.lpVtbl = &DdsEncoder_Dds_Vtbl;
2145 This->ref = 1;
2146 This->stream = NULL;
2147 This->frame_count = 0;
2148 This->frame_index = 0;
2149 This->uncommitted_frame = FALSE;
2150 This->committed = FALSE;
2151#ifdef __REACTOS__
2153#else
2155#endif
2156 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": DdsEncoder.lock");
2157
2158 ret = IWICBitmapEncoder_QueryInterface(&This->IWICBitmapEncoder_iface, iid, ppv);
2159 IWICBitmapEncoder_Release(&This->IWICBitmapEncoder_iface);
2160
2161 return ret;
2162}
static const IWICBitmapEncoderVtbl DdsEncoder_Vtbl
Definition: ddsformat.c:2115
static const IWICDdsEncoderVtbl DdsEncoder_Dds_Vtbl
Definition: ddsformat.c:1924

◆ debug_wic_rect()

◆ DECLARE_INTERFACE_() [1/5]

DECLARE_INTERFACE_ ( IMILBitmap  ,
IMILBitmapSource   
)

Definition at line 70 of file wincodecs_private.h.

71{
72 /*** IUnknown methods ***/
76 /*** IWICBitmapSource methods ***/
79 STDMETHOD_(HRESULT,GetResolution)(THIS_ double *,double *) PURE;
80 STDMETHOD_(HRESULT,CopyPalette)(THIS_ IWICPalette *) PURE;
81 STDMETHOD_(HRESULT,CopyPixels)(THIS_ const WICRect *,UINT,UINT,BYTE *) PURE;
82 /*** IMILBitmap methods ***/
83 STDMETHOD_(HRESULT,unknown1)(THIS_ void **) PURE;
88 STDMETHOD_(HRESULT,AddDirtyRect)(THIS_ const WICRect *) PURE;
89};
#define PURE
Definition: basetyps.h:64
#define THIS_
Definition: basetyps.h:65
#define THIS
Definition: basetyps.h:66
#define STDMETHOD_(t, m)
Definition: basetyps.h:63
_In_ BOOLEAN Release
Definition: cdrom.h:920
DWORD WINAPI GetSize(LPVOID)
static HRESULT QueryInterface(REFIID, void **)
Definition: events.c:2587
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
Definition: string.c:89
static ULONG WINAPI AddRef(IStream *iface)
Definition: clist.c:90
#define DWORD
Definition: nt_native.h:44
@ Unlock
Definition: ntsecapi.h:294
#define REFIID
Definition: guiddef.h:118
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
Definition: wdfsync.h:127
int WINAPI GetPixelFormat(_In_ HDC)
_In_ BOOLEAN SetResolution
Definition: exfuncs.h:1078

◆ DECLARE_INTERFACE_() [2/5]

DECLARE_INTERFACE_ ( IMILBitmapScaler  ,
IMILBitmapSource   
)

Definition at line 93 of file wincodecs_private.h.

94{
95 /*** IUnknown methods ***/
99 /*** IWICBitmapSource methods ***/
102 STDMETHOD_(HRESULT,GetResolution)(THIS_ double *,double *) PURE;
103 STDMETHOD_(HRESULT,CopyPalette)(THIS_ IWICPalette *) PURE;
104 STDMETHOD_(HRESULT,CopyPixels)(THIS_ const WICRect *,UINT,UINT,BYTE *) PURE;
105 /*** IMILBitmapScaler methods ***/
106 STDMETHOD_(HRESULT,unknown1)(THIS_ void **) PURE;
108};
WICBitmapInterpolationMode
Definition: wincodec.idl:77
static void Initialize()
Definition: xlate.c:212

◆ DECLARE_INTERFACE_() [3/5]

DECLARE_INTERFACE_ ( IMILBitmapSource  ,
IUnknown   
)

Definition at line 54 of file wincodecs_private.h.

55{
56 /*** IUnknown methods ***/
60 /*** IWICBitmapSource methods ***/
63 STDMETHOD_(HRESULT,GetResolution)(THIS_ double *,double *) PURE;
64 STDMETHOD_(HRESULT,CopyPalette)(THIS_ IWICPalette *) PURE;
65 STDMETHOD_(HRESULT,CopyPixels)(THIS_ const WICRect *,UINT,UINT,BYTE *) PURE;
66};

◆ DECLARE_INTERFACE_() [4/5]

DECLARE_INTERFACE_ ( IMILUnknown1  ,
IUnknown   
)

Definition at line 114 of file wincodecs_private.h.

115{
116 /*** IUnknown methods ***/
120 /*** thiscall method ***/
121 #ifdef __REACTOS__
122 STDMETHOD_(void,unknown1)(THIS_ void*) PURE;
123 #else
124 THISCALLMETHOD_(void,unknown1)(THIS_ void*) PURE;
125 #endif
126 STDMETHOD_(HRESULT,unknown2)(THIS_ void*, void*) PURE;
127 #ifdef __REACTOS__
128 STDMETHOD_(HRESULT,unknown3)(THIS_ void*) PURE;
129 #else
130 THISCALLMETHOD_(HRESULT,unknown3)(THIS_ void*) PURE;
131 #endif
132 STDMETHOD_(HRESULT,unknown4)(THIS_ void*) PURE;
133 STDMETHOD_(HRESULT,unknown5)(THIS_ void*) PURE;
135 STDMETHOD_(HRESULT,unknown7)(THIS_ void*) PURE;
136 #ifdef __REACTOS__
137 /*** thiscall method ***/
138 STDMETHOD_(HRESULT,unknown8)(THIS) PURE;
139 #else
140 THISCALLMETHOD_(HRESULT,unknown8)(THIS) PURE;
141 #endif
142};
uint64_t DWORD64
Definition: typedefs.h:67
#define THISCALLMETHOD_(type, method)

◆ DECLARE_INTERFACE_() [5/5]

DECLARE_INTERFACE_ ( IMILUnknown2  ,
IUnknown   
)

Definition at line 146 of file wincodecs_private.h.

147{
148 /*** IUnknown methods ***/
152 /*** unknown methods ***/
153 STDMETHOD_(HRESULT,unknown1)(THIS_ void *,void **) PURE;
154 STDMETHOD_(HRESULT,unknown2)(THIS_ void *,void *) PURE;
155 STDMETHOD_(HRESULT,unknown3)(THIS_ void *) PURE;
156};

◆ decoder_copy_pixels()

HRESULT CDECL decoder_copy_pixels ( struct decoder This,
UINT  frame,
const WICRect prc,
UINT  stride,
UINT  buffersize,
BYTE buffer 
)

Definition at line 29 of file wincodecs_common.h.

31{
32 return decoder->vtable->copy_pixels(decoder, frame, prc, stride, buffersize, buffer);
33}
GLuint buffer
Definition: glext.h:5915
const struct decoder_funcs * vtable

Referenced by CommonDecoderFrame_CopyPixels().

◆ decoder_create()

HRESULT CDECL decoder_create ( const CLSID decoder_clsid,
struct decoder_info info,
struct decoder **  result 
)

◆ decoder_destroy()

void CDECL decoder_destroy ( struct decoder This)

Definition at line 46 of file wincodecs_common.h.

47{
48 decoder->vtable->destroy(decoder);
49}

Referenced by CommonDecoder_CreateInstance(), and CommonDecoder_Release().

◆ decoder_get_color_context()

HRESULT CDECL decoder_get_color_context ( struct decoder This,
UINT  frame,
UINT  num,
BYTE **  data,
DWORD datasize 
)

Definition at line 40 of file wincodecs_common.h.

42{
43 return decoder->vtable->get_color_context(decoder, frame, num, data, datasize);
44}
GLuint GLuint num
Definition: glext.h:9618

Referenced by CommonDecoderFrame_GetColorContexts().

◆ decoder_get_frame_info()

HRESULT CDECL decoder_get_frame_info ( struct decoder This,
UINT  frame,
struct decoder_frame info 
)

Definition at line 24 of file wincodecs_common.h.

25{
26 return decoder->vtable->get_frame_info(decoder, frame, info);
27}

Referenced by CommonDecoder_GetFrame().

◆ decoder_get_metadata_blocks()

HRESULT CDECL decoder_get_metadata_blocks ( struct decoder This,
UINT  frame,
UINT count,
struct decoder_block **  blocks 
)

Definition at line 35 of file wincodecs_common.h.

36{
37 return decoder->vtable->get_metadata_blocks(decoder, frame, count, blocks);
38}
static int blocks
Definition: mkdosfs.c:527

Referenced by CommonDecoderFrame_InitializeMetadata().

◆ decoder_initialize()

HRESULT CDECL decoder_initialize ( struct decoder This,
IStream stream,
struct decoder_stat st 
)

Definition at line 19 of file wincodecs_common.h.

20{
21 return decoder->vtable->initialize(decoder, stream, st);
22}
Definition: parse.h:23

Referenced by CommonDecoder_Initialize().

◆ DEFINE_GUID() [1/3]

DEFINE_GUID ( CLSID_WineTgaDecoder  ,
0xb11fc79a  ,
0x67cc  ,
0x43e6  ,
0xa9  ,
0xce  ,
0xe3  ,
0xd5  ,
0x49  ,
0x45  ,
0xd3  ,
0x04   
)

◆ DEFINE_GUID() [2/3]

DEFINE_GUID ( GUID_VendorWine  ,
0xddf46da1  ,
0x7dc1  ,
0x404e  ,
0x98  ,
0xf2  ,
0xef  ,
0xa4  ,
0x8d  ,
0xfc  ,
0x95  ,
0x0a   
)

◆ DEFINE_GUID() [3/3]

DEFINE_GUID ( GUID_WineContainerFormatTga  ,
0x0c44fda1  ,
0xa5c5  ,
0x4298  ,
0x96  ,
0x85  ,
0x47  ,
0x3f  ,
0xc1  ,
0x7c  ,
0xd3  ,
0x22   
)

◆ DibDecoder_CreateInstance()

HRESULT DibDecoder_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 1235 of file bmpdecode.c.

1236{
1237 return BmpDecoder_Construct(TRUE, FALSE, iid, ppv);
1238}

◆ encoder_commit_file()

HRESULT CDECL encoder_commit_file ( struct encoder This)

Definition at line 76 of file wincodecs_common.h.

77{
78 return encoder->vtable->commit_file(encoder);
79}
const struct encoder_funcs * vtable

Referenced by CommonEncoder_Commit().

◆ encoder_commit_frame()

HRESULT CDECL encoder_commit_frame ( struct encoder This)

Definition at line 71 of file wincodecs_common.h.

72{
73 return encoder->vtable->commit_frame(encoder);
74}

Referenced by CommonEncoderFrame_Commit().

◆ encoder_create_frame()

HRESULT CDECL encoder_create_frame ( struct encoder This,
const struct encoder_frame frame 
)

Definition at line 61 of file wincodecs_common.h.

62{
63 return encoder->vtable->create_frame(encoder, frame);
64}

Referenced by CommonEncoderFrame_WritePixels().

◆ encoder_destroy()

void CDECL encoder_destroy ( struct encoder This)

Definition at line 81 of file wincodecs_common.h.

82{
83 encoder->vtable->destroy(encoder);
84}

Referenced by CommonEncoder_CreateInstance(), and CommonEncoder_Release().

◆ encoder_get_supported_format()

HRESULT CDECL encoder_get_supported_format ( struct encoder This,
GUID pixel_format,
DWORD bpp,
BOOL indexed 
)

Definition at line 56 of file wincodecs_common.h.

57{
58 return encoder->vtable->get_supported_format(encoder, pixel_format, bpp, indexed);
59}

Referenced by CommonEncoderFrame_SetPixelFormat().

◆ encoder_initialize()

HRESULT CDECL encoder_initialize ( struct encoder This,
IStream stream 
)

Definition at line 51 of file wincodecs_common.h.

52{
53 return encoder->vtable->initialize(encoder, stream);
54}

Referenced by CommonEncoder_Initialize().

◆ encoder_write_lines()

HRESULT CDECL encoder_write_lines ( struct encoder This,
BYTE data,
DWORD  line_count,
DWORD  stride 
)

Definition at line 66 of file wincodecs_common.h.

67{
68 return encoder->vtable->write_lines(encoder, data, line_count, stride);
69}

Referenced by CommonEncoderFrame_WritePixels().

◆ FlipRotator_Create()

HRESULT FlipRotator_Create ( IWICBitmapFlipRotator **  fliprotator)

Definition at line 266 of file fliprotate.c.

267{
269
270 This = malloc(sizeof(FlipRotator));
271 if (!This) return E_OUTOFMEMORY;
272
273 This->IWICBitmapFlipRotator_iface.lpVtbl = &FlipRotator_Vtbl;
274 This->ref = 1;
275 This->source = NULL;
276 This->flip_x = 0;
277 This->flip_y = 0;
278 This->swap_xy = 0;
279#ifdef __REACTOS__
281#else
283#endif
284 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": FlipRotator.lock");
285
286 *fliprotator = &This->IWICBitmapFlipRotator_iface;
287
288 return S_OK;
289}
static const IWICBitmapFlipRotatorVtbl FlipRotator_Vtbl
Definition: fliprotate.c:254

Referenced by ImagingFactory_CreateBitmapFlipRotator().

◆ FormatConverter_CreateInstance()

HRESULT FormatConverter_CreateInstance ( REFIID  riid,
void **  ppv 
)

Definition at line 1953 of file converter.c.

1954{
1956 HRESULT ret;
1957
1958 TRACE("(%s,%p)\n", debugstr_guid(iid), ppv);
1959
1960 *ppv = NULL;
1961
1962 This = malloc(sizeof(FormatConverter));
1963 if (!This) return E_OUTOFMEMORY;
1964
1965 This->IWICFormatConverter_iface.lpVtbl = &FormatConverter_Vtbl;
1966 This->ref = 1;
1967 This->source = NULL;
1968 This->palette = NULL;
1969#ifdef __REACTOS__
1971#else
1973#endif
1974 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": FormatConverter.lock");
1975
1976 ret = IWICFormatConverter_QueryInterface(&This->IWICFormatConverter_iface, iid, ppv);
1977 IWICFormatConverter_Release(&This->IWICFormatConverter_iface);
1978
1979 return ret;
1980}
static const IWICFormatConverterVtbl FormatConverter_Vtbl
Definition: converter.c:1940

Referenced by ImagingFactory_CreateFormatConverter().

◆ GCEReader_CreateInstance()

HRESULT GCEReader_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 315 of file gifformat.c.

316{
318}
static const MetadataHandlerVtbl GCEReader_Vtbl
Definition: gifformat.c:309

Referenced by GifFrameDecode_Block_GetReaderByIndex().

◆ get_decoder_info()

HRESULT get_decoder_info ( REFCLSID  clsid,
IWICBitmapDecoderInfo **  info 
)

Definition at line 2117 of file info.c.

2118{
2119 IWICComponentInfo *compinfo;
2120 HRESULT hr;
2121
2122 hr = CreateComponentInfo(clsid, &compinfo);
2123 if (FAILED(hr)) return hr;
2124
2125 hr = IWICComponentInfo_QueryInterface(compinfo, &IID_IWICBitmapDecoderInfo,
2126 (void **)info);
2127
2128 IWICComponentInfo_Release(compinfo);
2129
2130 return hr;
2131}

◆ get_pixelformat_bpp()

HRESULT get_pixelformat_bpp ( const GUID pixelformat,
UINT bpp 
)

Definition at line 62 of file main.c.

63{
64 HRESULT hr;
66 IWICPixelFormatInfo *formatinfo;
67
69 if (SUCCEEDED(hr))
70 {
71 hr = IWICComponentInfo_QueryInterface(info, &IID_IWICPixelFormatInfo, (void**)&formatinfo);
72
73 if (SUCCEEDED(hr))
74 {
75 hr = IWICPixelFormatInfo_GetBitsPerPixel(formatinfo, bpp);
76
77 IWICPixelFormatInfo_Release(formatinfo);
78 }
79
80 IWICComponentInfo_Release(info);
81 }
82
83 return hr;
84}
pixelformat
Definition: converter.c:37

Referenced by BitmapImpl_Create(), BitmapScaler_Initialize(), FormatConverter_Initialize(), and WICCreateBitmapFromSectionEx().

◆ GifCommentReader_CreateInstance()

HRESULT GifCommentReader_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 516 of file gifformat.c.

517{
519}
static const MetadataHandlerVtbl GifCommentReader_Vtbl
Definition: gifformat.c:510

Referenced by GifDecoder_Block_GetReaderByIndex(), and GifFrameDecode_Block_GetReaderByIndex().

◆ GifDecoder_CreateInstance()

HRESULT GifDecoder_CreateInstance ( REFIID  riid,
void **  ppv 
)

Definition at line 1402 of file gifformat.c.

1403{
1405 HRESULT ret;
1406
1407 TRACE("(%s,%p)\n", debugstr_guid(iid), ppv);
1408
1409 *ppv = NULL;
1410
1411 This = malloc(sizeof(GifDecoder));
1412 if (!This) return E_OUTOFMEMORY;
1413
1414 This->IWICBitmapDecoder_iface.lpVtbl = &GifDecoder_Vtbl;
1415 This->IWICMetadataBlockReader_iface.lpVtbl = &GifDecoder_BlockVtbl;
1416 This->stream = NULL;
1417 This->ref = 1;
1418 This->initialized = FALSE;
1419 This->gif = NULL;
1420 This->current_frame = 0;
1421#ifdef __REACTOS__
1423#else
1425#endif
1426 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": GifDecoder.lock");
1427
1428 ret = IWICBitmapDecoder_QueryInterface(&This->IWICBitmapDecoder_iface, iid, ppv);
1429 IWICBitmapDecoder_Release(&This->IWICBitmapDecoder_iface);
1430
1431 return ret;
1432}
static const IWICMetadataBlockReaderVtbl GifDecoder_BlockVtbl
Definition: gifformat.c:1391
static const IWICBitmapDecoderVtbl GifDecoder_Vtbl
Definition: gifformat.c:1289

◆ GifEncoder_CreateInstance()

HRESULT GifEncoder_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 2476 of file gifformat.c.

2477{
2479 HRESULT ret;
2480
2481 TRACE("%s,%p\n", debugstr_guid(iid), ppv);
2482
2483 *ppv = NULL;
2484
2485 This = malloc(sizeof(*This));
2486 if (!This) return E_OUTOFMEMORY;
2487
2488 This->IWICBitmapEncoder_iface.lpVtbl = &GifEncoder_Vtbl;
2489 This->ref = 1;
2490 This->stream = NULL;
2491#ifdef __REACTOS__
2493#else
2495#endif
2496 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": GifEncoder.lock");
2497 This->initialized = FALSE;
2498 This->info_written = FALSE;
2499 This->committed = FALSE;
2500 This->n_frames = 0;
2501 This->colors = 0;
2502
2503 ret = IWICBitmapEncoder_QueryInterface(&This->IWICBitmapEncoder_iface, iid, ppv);
2504 IWICBitmapEncoder_Release(&This->IWICBitmapEncoder_iface);
2505
2506 return ret;
2507}
static const IWICBitmapEncoderVtbl GifEncoder_Vtbl
Definition: gifformat.c:2459

◆ icns_encoder_create()

HRESULT CDECL icns_encoder_create ( struct encoder_info info,
struct encoder **  result 
)

◆ IcoDecoder_CreateInstance()

HRESULT IcoDecoder_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 757 of file icoformat.c.

758{
760 HRESULT ret;
761
762 TRACE("(%s,%p)\n", debugstr_guid(iid), ppv);
763
764 *ppv = NULL;
765
766 This = malloc(sizeof(IcoDecoder));
767 if (!This) return E_OUTOFMEMORY;
768
769 This->IWICBitmapDecoder_iface.lpVtbl = &IcoDecoder_Vtbl;
770 This->ref = 1;
771 This->stream = NULL;
772 This->initialized = FALSE;
773#ifdef __REACTOS__
775#else
777#endif
778 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": IcoDecoder.lock");
779
780 ret = IWICBitmapDecoder_QueryInterface(&This->IWICBitmapDecoder_iface, iid, ppv);
781 IWICBitmapDecoder_Release(&This->IWICBitmapDecoder_iface);
782
783 return ret;
784}
static const IWICBitmapDecoderVtbl IcoDecoder_Vtbl
Definition: icoformat.c:740

◆ IcoDibDecoder_CreateInstance()

HRESULT IcoDibDecoder_CreateInstance ( BmpDecoder **  ppDecoder)

Definition at line 1240 of file bmpdecode.c.

1241{
1242 return BmpDecoder_Create(TRUE, TRUE, ppDecoder);
1243}
static HRESULT BmpDecoder_Create(int packed, int icoframe, BmpDecoder **ppDecoder)
Definition: bmpdecode.c:1185

Referenced by ReadIcoDib().

◆ IfdMetadataReader_CreateInstance()

HRESULT IfdMetadataReader_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 1177 of file metadatahandler.c.

1178{
1180}
static const MetadataHandlerVtbl IfdMetadataReader_Vtbl

◆ ImagingFactory_CreateInstance()

HRESULT ImagingFactory_CreateInstance ( REFIID  riid,
void **  ppv 
)

Definition at line 1606 of file imgfactory.c.

1607{
1609 HRESULT ret;
1610
1611 TRACE("(%s,%p)\n", debugstr_guid(iid), ppv);
1612
1613 *ppv = NULL;
1614
1615 This = malloc(sizeof(*This));
1616 if (!This) return E_OUTOFMEMORY;
1617
1618 This->IWICImagingFactory2_iface.lpVtbl = &ImagingFactory_Vtbl;
1619 This->IWICComponentFactory_iface.lpVtbl = &ComponentFactory_Vtbl;
1620 This->ref = 1;
1621
1622 ret = IWICImagingFactory2_QueryInterface(&This->IWICImagingFactory2_iface, iid, ppv);
1623 IWICImagingFactory2_Release(&This->IWICImagingFactory2_iface);
1624
1625 return ret;
1626}
static const IWICImagingFactory2Vtbl ImagingFactory_Vtbl
Definition: imgfactory.c:1032
static const IWICComponentFactoryVtbl ComponentFactory_Vtbl
Definition: imgfactory.c:1568

Referenced by WICCreateImagingFactory_Proxy().

◆ IMDReader_CreateInstance()

HRESULT IMDReader_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 237 of file gifformat.c.

238{
240}
static const MetadataHandlerVtbl IMDReader_Vtbl
Definition: gifformat.c:231

Referenced by create_IMD_metadata_reader().

◆ jpeg_decoder_create()

HRESULT CDECL jpeg_decoder_create ( struct decoder_info info,
struct decoder **  result 
)

Definition at line 343 of file libjpeg.c.

344{
345 struct jpeg_decoder *This;
346
347 This = malloc(sizeof(struct jpeg_decoder));
348 if (!This) return E_OUTOFMEMORY;
349
350 This->decoder.vtable = &jpeg_decoder_vtable;
351 This->cinfo_initialized = FALSE;
352 This->stream = NULL;
353 This->image_data = NULL;
354 *result = &This->decoder;
355
356 info->container_format = GUID_ContainerFormatJpeg;
357 info->block_format = GUID_ContainerFormatJpeg;
358 info->clsid = CLSID_WICJpegDecoder;
359
360 return S_OK;
361}
GLuint64EXT * result
Definition: glext.h:11304
static const struct decoder_funcs jpeg_decoder_vtable
Definition: libjpeg.c:334

Referenced by JpegDecoder_CreateInstance().

◆ jpeg_encoder_create()

HRESULT CDECL jpeg_encoder_create ( struct encoder_info info,
struct encoder **  result 
)

Definition at line 638 of file libjpeg.c.

639{
640 struct jpeg_encoder *This;
641
642 This = malloc(sizeof(struct jpeg_encoder));
643 if (!This) return E_OUTOFMEMORY;
644
645 This->encoder.vtable = &jpeg_encoder_vtable;
646 This->stream = NULL;
647 This->cinfo_initialized = FALSE;
648 *result = &This->encoder;
649
651 info->container_format = GUID_ContainerFormatJpeg;
652 info->clsid = CLSID_WICJpegEncoder;
653 info->encoder_options[0] = ENCODER_OPTION_IMAGE_QUALITY;
654 info->encoder_options[1] = ENCODER_OPTION_BITMAP_TRANSFORM;
655 info->encoder_options[2] = ENCODER_OPTION_LUMINANCE;
656 info->encoder_options[3] = ENCODER_OPTION_CHROMINANCE;
657 info->encoder_options[4] = ENCODER_OPTION_YCRCB_SUBSAMPLING;
658 info->encoder_options[5] = ENCODER_OPTION_SUPPRESS_APP0;
659 info->encoder_options[6] = ENCODER_OPTION_END;
660
661 return S_OK;
662}
static const struct encoder_funcs jpeg_encoder_vtable
Definition: libjpeg.c:628
#define ENCODER_FLAGS_SUPPORTS_METADATA

Referenced by JpegEncoder_CreateInstance().

◆ JpegDecoder_CreateInstance()

HRESULT JpegDecoder_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 114 of file main.c.

115{
116 HRESULT hr;
117 struct decoder *decoder;
119
121
122 if (SUCCEEDED(hr))
124
125 return hr;
126}
HRESULT CommonDecoder_CreateInstance(struct decoder *decoder, const struct decoder_info *decoder_info, REFIID iid, void **ppv)
Definition: decoder.c:780
HRESULT CDECL jpeg_decoder_create(struct decoder_info *info, struct decoder **result)
Definition: libjpeg.c:343

◆ JpegEncoder_CreateInstance()

HRESULT JpegEncoder_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 128 of file main.c.

129{
130 HRESULT hr;
131 struct encoder *encoder;
133
135
136 if (SUCCEEDED(hr))
138
139 return hr;
140}
HRESULT CommonEncoder_CreateInstance(struct encoder *encoder, const struct encoder_info *encoder_info, REFIID iid, void **ppv)
Definition: encoder.c:867
HRESULT CDECL jpeg_encoder_create(struct encoder_info *info, struct encoder **result)
Definition: libjpeg.c:638

◆ LSDReader_CreateInstance()

HRESULT LSDReader_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 156 of file gifformat.c.

157{
159}
static const MetadataHandlerVtbl LSDReader_Vtbl
Definition: gifformat.c:150

Referenced by GifDecoder_Block_GetReaderByIndex().

◆ MetadataQueryReader_CreateInstance()

HRESULT MetadataQueryReader_CreateInstance ( IWICMetadataBlockReader mbr,
const WCHAR root,
IWICMetadataQueryReader **  out 
)

Definition at line 727 of file metadataquery.c.

728{
730
731 obj = calloc(1, sizeof(*obj));
732 if (!obj)
733 return E_OUTOFMEMORY;
734
735 obj->IWICMetadataQueryReader_iface.lpVtbl = &mqr_vtbl;
736 obj->ref = 1;
737
738 IWICMetadataBlockReader_AddRef(mbr);
739 obj->block = mbr;
740
741 obj->root = wcsdup(root);
742
743 *out = &obj->IWICMetadataQueryReader_iface;
744
745 return S_OK;
746}
static IWICMetadataQueryReaderVtbl mqr_vtbl
_Check_return_ _CRTIMP wchar_t *__cdecl wcsdup(_In_z_ const wchar_t *_Str)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

Referenced by ComponentFactory_CreateQueryReaderFromBlockReader(), GifDecoder_GetMetadataQueryReader(), GifFrameDecode_GetMetadataQueryReader(), and mqr_GetMetadataByName().

◆ MetadataQueryWriter_CreateInstance()

HRESULT MetadataQueryWriter_CreateInstance ( IWICMetadataBlockWriter mbw,
const WCHAR root,
IWICMetadataQueryWriter **  out 
)

Definition at line 867 of file metadataquery.c.

868{
870
871 obj = calloc(1, sizeof(*obj));
872 if (!obj)
873 return E_OUTOFMEMORY;
874
875 obj->IWICMetadataQueryWriter_iface.lpVtbl = &mqw_vtbl;
876 obj->ref = 1;
877
878 IWICMetadataBlockWriter_AddRef(mbw);
879 obj->block = mbw;
880
881 obj->root = wcsdup(root);
882
883 *out = &obj->IWICMetadataQueryWriter_iface;
884
885 return S_OK;
886}
static const IWICMetadataQueryWriterVtbl mqw_vtbl

Referenced by CommonEncoderFrame_GetMetadataQueryWriter(), ComponentFactory_CreateQueryWriterFromBlockWriter(), and GifFrameEncode_GetMetadataQueryWriter().

◆ MetadataReader_Create()

HRESULT MetadataReader_Create ( const MetadataHandlerVtbl vtable,
REFIID  iid,
void **  ppv 
)

Definition at line 466 of file metadatahandler.c.

467{
469 HRESULT hr;
470
471 TRACE("%s\n", debugstr_guid(vtable->clsid));
472
473 *ppv = NULL;
474
475 This = malloc(sizeof(MetadataHandler));
476 if (!This) return E_OUTOFMEMORY;
477
478 This->IWICMetadataWriter_iface.lpVtbl = &MetadataHandler_Vtbl;
479 This->IWICPersistStream_iface.lpVtbl = &MetadataHandler_PersistStream_Vtbl;
480 This->IWICStreamProvider_iface.lpVtbl = &MetadataHandler_StreamProvider_Vtbl;
481 This->ref = 1;
482 This->vtable = vtable;
483 This->items = NULL;
484 This->item_count = 0;
485
486#ifdef __REACTOS__
488#else
490#endif
491 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": MetadataHandler.lock");
492
493 hr = IWICMetadataWriter_QueryInterface(&This->IWICMetadataWriter_iface, iid, ppv);
494
495 IWICMetadataWriter_Release(&This->IWICMetadataWriter_iface);
496
497 return hr;
498}
static const IWICStreamProviderVtbl MetadataHandler_StreamProvider_Vtbl
static const IWICPersistStreamVtbl MetadataHandler_PersistStream_Vtbl
static const IWICMetadataWriterVtbl MetadataHandler_Vtbl
static void * vtable[]
Definition: typelib.c:1231

Referenced by APEReader_CreateInstance(), GCEReader_CreateInstance(), GifCommentReader_CreateInstance(), IfdMetadataReader_CreateInstance(), IMDReader_CreateInstance(), LSDReader_CreateInstance(), PngChrmReader_CreateInstance(), PngGamaReader_CreateInstance(), PngHistReader_CreateInstance(), PngTextReader_CreateInstance(), PngTimeReader_CreateInstance(), and UnknownMetadataReader_CreateInstance().

◆ PaletteImpl_Create()

HRESULT PaletteImpl_Create ( IWICPalette **  palette)

Definition at line 897 of file palette.c.

898{
900
901 This = malloc(sizeof(PaletteImpl));
902 if (!This) return E_OUTOFMEMORY;
903
904 This->IWICPalette_iface.lpVtbl = &PaletteImpl_Vtbl;
905 This->ref = 1;
906 This->count = 0;
907 This->colors = NULL;
909#ifdef __REACTOS__
911#else
913#endif
914 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": PaletteImpl.lock");
915
916 *palette = &This->IWICPalette_iface;
917
918 return S_OK;
919}
static const IWICPaletteVtbl PaletteImpl_Vtbl
Definition: palette.c:881
static HPALETTE palette
Definition: clipboard.c:1345
@ WICBitmapPaletteTypeCustom
Definition: wincodec.idl:92

Referenced by BitmapImpl_SetPalette(), copypixels_to_32bppBGRA(), create_bitmap_from_source_rect(), FormatConverter_Initialize(), ImagingFactory_CreateBitmapFromHBITMAP(), and ImagingFactory_CreatePalette().

◆ png_decoder_create()

HRESULT CDECL png_decoder_create ( struct decoder_info info,
struct decoder **  result 
)

Definition at line 468 of file libpng.c.

469{
470 struct png_decoder *This;
471
472 This = malloc(sizeof(*This));
473
474 if (!This)
475 {
476 return E_OUTOFMEMORY;
477 }
478
479 This->decoder.vtable = &png_decoder_vtable;
480 This->image_bits = NULL;
481 This->color_profile = NULL;
482 *result = &This->decoder;
483
484 info->container_format = GUID_ContainerFormatPng;
485 info->block_format = GUID_ContainerFormatPng;
486 info->clsid = CLSID_WICPngDecoder;
487
488 return S_OK;
489}
static const struct decoder_funcs png_decoder_vtable
Definition: libpng.c:459

Referenced by PngDecoder_CreateInstance().

◆ png_encoder_create()

HRESULT CDECL png_encoder_create ( struct encoder_info info,
struct encoder **  result 
)

Definition at line 817 of file libpng.c.

818{
819 struct png_encoder *This;
820
821 This = malloc(sizeof(*This));
822
823 if (!This)
824 {
825 return E_OUTOFMEMORY;
826 }
827
828 This->encoder.vtable = &png_encoder_vtable;
829 This->png_ptr = NULL;
830 This->info_ptr = NULL;
831 This->data = NULL;
832 *result = &This->encoder;
833
835 info->container_format = GUID_ContainerFormatPng;
836 info->clsid = CLSID_WICPngEncoder;
837 info->encoder_options[0] = ENCODER_OPTION_INTERLACE;
838 info->encoder_options[1] = ENCODER_OPTION_FILTER;
839 info->encoder_options[2] = ENCODER_OPTION_END;
840
841 return S_OK;
842}
static const struct encoder_funcs png_encoder_vtable
Definition: libpng.c:807

Referenced by PngEncoder_CreateInstance().

◆ PngChrmReader_CreateInstance()

HRESULT PngChrmReader_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 245 of file pngformat.c.

246{
248}
static const MetadataHandlerVtbl ChrmReader_Vtbl
Definition: pngformat.c:239

◆ PngDecoder_CreateInstance()

HRESULT PngDecoder_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 399 of file pngformat.c.

400{
401 HRESULT hr;
402 struct decoder *decoder;
404
406
407 if (SUCCEEDED(hr))
409
410 return hr;
411}
HRESULT CDECL png_decoder_create(struct decoder_info *info, struct decoder **result)
Definition: libpng.c:468

Referenced by ReadIcoPng().

◆ PngEncoder_CreateInstance()

HRESULT PngEncoder_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 413 of file pngformat.c.

414{
415 HRESULT hr;
416 struct encoder *encoder;
418
420
421 if (SUCCEEDED(hr))
423
424 return hr;
425}
HRESULT CDECL png_encoder_create(struct encoder_info *info, struct encoder **result)
Definition: libpng.c:817

◆ PngGamaReader_CreateInstance()

HRESULT PngGamaReader_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 168 of file pngformat.c.

169{
171}
static const MetadataHandlerVtbl GamaReader_Vtbl
Definition: pngformat.c:162

◆ PngHistReader_CreateInstance()

HRESULT PngHistReader_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 308 of file pngformat.c.

309{
311}
static const MetadataHandlerVtbl HistReader_Vtbl
Definition: pngformat.c:302

◆ PngTextReader_CreateInstance()

HRESULT PngTextReader_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 109 of file pngformat.c.

110{
112}
static const MetadataHandlerVtbl TextReader_Vtbl
Definition: pngformat.c:103

◆ PngTimeReader_CreateInstance()

HRESULT PngTimeReader_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 394 of file pngformat.c.

395{
397}
static const MetadataHandlerVtbl TimeReader_Vtbl
Definition: pngformat.c:388

◆ read_png_chunk()

HRESULT read_png_chunk ( IStream stream,
BYTE type,
BYTE **  data,
ULONG data_size 
)

Definition at line 156 of file wincodecs_common.h.

157{
158 BYTE header[8];
159 HRESULT hr;
160 ULONG bytesread;
161
162 hr = stream_read(stream, header, 8, &bytesread);
163 if (FAILED(hr) || bytesread < 8)
164 {
165 if (SUCCEEDED(hr))
166 hr = E_FAIL;
167 return hr;
168 }
169
170 *data_size = read_ulong_be(&header[0]);
171
172 memcpy(type, &header[4], 4);
173
174 if (data)
175 {
176 *data = malloc(*data_size);
177 if (!*data)
178 return E_OUTOFMEMORY;
179
180 hr = stream_read(stream, *data, *data_size, &bytesread);
181
182 if (FAILED(hr) || bytesread < *data_size)
183 {
184 if (SUCCEEDED(hr))
185 hr = E_FAIL;
186 free(*data);
187 *data = NULL;
188 return hr;
189 }
190
191 /* Windows ignores CRC of the chunk */
192 }
193
194 return S_OK;
195}
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
static int stream_read
Definition: htmldoc.c:205
static ULONG read_ulong_be(BYTE *data)

Referenced by LoadChrmMetadata(), LoadGamaMetadata(), LoadHistMetadata(), LoadTextMetadata(), LoadTimeMetadata(), and png_decoder_get_metadata_blocks().

◆ ReleaseComponentInfos()

void ReleaseComponentInfos ( void  )

Definition at line 2110 of file info.c.

2111{
2112 ComponentInfo *info, *next_info;
2114 IWICComponentInfo_Release(&info->IWICComponentInfo_iface);
2115}
#define WINE_RB_FOR_EACH_ENTRY_DESTRUCTOR(elem, elem2, tree, type, field)
Definition: rbtree.h:166

Referenced by DllMain().

◆ reverse_bgr8()

void reverse_bgr8 ( UINT  bytesperpixel,
LPBYTE  bits,
UINT  width,
UINT  height,
INT  stride 
)

Definition at line 197 of file wincodecs_common.h.

198{
199 UINT x, y;
200 BYTE *pixel, temp;
201
202 for (y=0; y<height; y++)
203 {
204 pixel = bits + stride * (INT)y;
205
206 for (x=0; x<width; x++)
207 {
208 temp = pixel[2];
209 pixel[2] = pixel[0];
210 pixel[0] = temp;
211 pixel += bytesperpixel;
212 }
213 }
214}
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
Definition: glext.h:10929
#define INT
Definition: polytest.cpp:20
static calc_node_t temp
Definition: rpn_ieee.c:38

Referenced by BmpFrameDecode_ReadRGB8(), copypixels_to_24bppBGR(), copypixels_to_24bppRGB(), copypixels_to_32bppBGRA(), copypixels_to_32bppRGBA(), jpeg_decoder_initialize(), and tiff_decoder_read_tile().

◆ stream_getsize()

HRESULT CDECL stream_getsize ( IStream stream,
ULONGLONG size 
)

Definition at line 176 of file wincodecs_common.c.

177{
178 STATSTG statstg;
179 HRESULT hr;
180
181 hr = IStream_Stat(stream, &statstg, STATFLAG_NONAME);
182
183 if (SUCCEEDED(hr))
184 *size = statstg.cbSize.QuadPart;
185
186 return hr;
187}
GLsizeiptr size
Definition: glext.h:5919

Referenced by tiff_stream_size().

◆ stream_initialize_from_filehandle()

HRESULT stream_initialize_from_filehandle ( IWICStream iface,
HANDLE  hfile 
)

Definition at line 1043 of file stream.c.

1044{
1048 HANDLE map;
1049 void *mem;
1051 HRESULT hr;
1052 TRACE("(%p,%p)\n", iface, file);
1053
1054 if (This->pStream) return WINCODEC_ERR_WRONGSTATE;
1055
1056 hr = map_file(file, &map, &mem, &size);
1057 if (FAILED(hr)) return hr;
1058
1060 if (FAILED(hr)) goto error;
1061
1063 if (FAILED(hr)) goto error;
1064
1066 if (!pObject)
1067 {
1068 hr = E_OUTOFMEMORY;
1069 goto error;
1070 }
1071 pObject->IStream_iface.lpVtbl = &StreamOnFileHandle_Vtbl;
1072 pObject->ref = 1;
1073 pObject->map = map;
1074 pObject->mem = mem;
1075 pObject->stream = stream;
1076
1077 if (InterlockedCompareExchangePointer((void**)&This->pStream, pObject, NULL))
1078 {
1079 /* Some other thread set the stream first. */
1080 IStream_Release(&pObject->IStream_iface);
1082 }
1083 return S_OK;
1084
1085error:
1086 if (stream) IWICStream_Release(stream);
1089 return hr;
1090}
Definition: _map.h:48
#define CloseHandle
Definition: compat.h:739
#define UnmapViewOfFile
Definition: compat.h:746
static HRESULT map_file(HANDLE file, HANDLE *map, void **mem, LARGE_INTEGER *size)
Definition: stream.c:1022
static const IStreamVtbl StreamOnFileHandle_Vtbl
Definition: stream.c:418
HRESULT StreamImpl_Create(IWICStream **stream)
Definition: stream.c:1158
static IWICStreamImpl * impl_from_IWICStream(IWICStream *iface)
Definition: stream.c:752
static HRESULT WINAPI IWICStreamImpl_InitializeFromMemory(IWICStream *iface, BYTE *pbBuffer, DWORD cbBufferSize)
Definition: stream.c:987
FxObject * pObject
#define InterlockedCompareExchangePointer
Definition: interlocked.h:129
#define error(str)
Definition: mkdosfs.c:1605
Definition: fci.c:127
Definition: mem.c:349
#define WINCODEC_ERR_WRONGSTATE
Definition: winerror.h:3281

Referenced by ImagingFactory_CreateDecoderFromFileHandle().

◆ stream_read()

HRESULT CDECL stream_read ( IStream stream,
void buffer,
ULONG  read,
ULONG bytes_read 
)

Definition at line 189 of file wincodecs_common.c.

190{
191 return IStream_Read(stream, buffer, read, bytes_read);
192}
#define read
Definition: acwin.h:96

◆ stream_seek()

HRESULT CDECL stream_seek ( IStream stream,
LONGLONG  ofs,
DWORD  origin,
ULONGLONG new_position 
)

Definition at line 194 of file wincodecs_common.c.

195{
196 HRESULT hr;
197 LARGE_INTEGER ofs_large;
198 ULARGE_INTEGER pos_large;
199
200 ofs_large.QuadPart = ofs;
201 hr = IStream_Seek(stream, ofs_large, origin, &pos_large);
202 if (new_position)
203 *new_position = pos_large.QuadPart;
204
205 return hr;
206}
voidpf uLong int origin
Definition: ioapi.h:144
ULONGLONG QuadPart
Definition: ms-dtyp.idl:185
LONGLONG QuadPart
Definition: typedefs.h:114

Referenced by jpeg_decoder_initialize(), png_decoder_get_metadata_blocks(), png_decoder_initialize(), source_mgr_skip_input_data(), tiff_open_stream(), and tiff_stream_seek().

◆ stream_write()

HRESULT CDECL stream_write ( IStream stream,
const void buffer,
ULONG  write,
ULONG bytes_written 
)

Definition at line 208 of file wincodecs_common.c.

209{
210 return IStream_Write(stream, buffer, write, bytes_written);
211}
#define write
Definition: acwin.h:97

Referenced by dest_mgr_empty_output_buffer(), dest_mgr_term_destination(), tiff_stream_write(), and user_write_data().

◆ StreamImpl_Create()

HRESULT StreamImpl_Create ( IWICStream **  stream)

Definition at line 1158 of file stream.c.

1159{
1161
1162 if( !stream ) return E_INVALIDARG;
1163
1164 pObject = malloc(sizeof(IWICStreamImpl));
1165 if( !pObject ) {
1166 *stream = NULL;
1167 return E_OUTOFMEMORY;
1168 }
1169
1170 pObject->IWICStream_iface.lpVtbl = &WICStream_Vtbl;
1171 pObject->ref = 1;
1172 pObject->pStream = NULL;
1173
1174 *stream = &pObject->IWICStream_iface;
1175
1176 return S_OK;
1177}
static const IWICStreamVtbl WICStream_Vtbl
Definition: stream.c:1132

Referenced by IcoDecoder_GetFrame(), ImagingFactory_CreateDecoderFromFileHandle(), ImagingFactory_CreateDecoderFromFilename(), ImagingFactory_CreateStream(), and stream_initialize_from_filehandle().

◆ TgaDecoder_CreateInstance()

HRESULT TgaDecoder_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 938 of file tgaformat.c.

939{
941 HRESULT ret;
942
943 TRACE("(%s,%p)\n", debugstr_guid(iid), ppv);
944
945 *ppv = NULL;
946
947 This = malloc(sizeof(TgaDecoder));
948 if (!This) return E_OUTOFMEMORY;
949
950 This->IWICBitmapDecoder_iface.lpVtbl = &TgaDecoder_Vtbl;
951 This->IWICBitmapFrameDecode_iface.lpVtbl = &TgaDecoder_Frame_Vtbl;
952 This->ref = 1;
953 This->initialized = FALSE;
954 This->stream = NULL;
955 This->imagebits = NULL;
956#ifdef __REACTOS__
958#else
960#endif
961 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": TgaDecoder.lock");
962
963 ret = IWICBitmapDecoder_QueryInterface(&This->IWICBitmapDecoder_iface, iid, ppv);
964 IWICBitmapDecoder_Release(&This->IWICBitmapDecoder_iface);
965
966 return ret;
967}
static const IWICBitmapFrameDecodeVtbl TgaDecoder_Frame_Vtbl
Definition: tgaformat.c:924
static const IWICBitmapDecoderVtbl TgaDecoder_Vtbl
Definition: tgaformat.c:424

◆ tiff_decoder_create()

HRESULT CDECL tiff_decoder_create ( struct decoder_info info,
struct decoder **  result 
)

Definition at line 1091 of file libtiff.c.

1092{
1093 struct tiff_decoder *This;
1094
1095 This = malloc(sizeof(*This));
1096 if (!This) return E_OUTOFMEMORY;
1097
1098 This->decoder.vtable = &tiff_decoder_vtable;
1099 This->tiff = NULL;
1100 This->cached_tile = NULL;
1101 This->cached_tile_x = -1;
1102 *result = &This->decoder;
1103
1104 info->container_format = GUID_ContainerFormatTiff;
1105 info->block_format = GUID_ContainerFormatTiff;
1106 info->clsid = CLSID_WICTiffDecoder;
1107
1110 return S_OK;
1111}
static void tiff_warning_handler(const char *module, const char *format, va_list args)
Definition: libtiff.c:58
static void tiff_error_handler(const char *module, const char *format, va_list args)
Definition: libtiff.c:51
static const struct decoder_funcs tiff_decoder_vtable
Definition: libtiff.c:1082
TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler handler)
Definition: tif_error.c:33
TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler handler)
Definition: tif_warning.c:33

Referenced by TiffDecoder_CreateInstance().

◆ tiff_encoder_create()

HRESULT CDECL tiff_encoder_create ( struct encoder_info info,
struct encoder **  result 
)

Definition at line 1329 of file libtiff.c.

1330{
1331 struct tiff_encoder *This;
1332
1333 This = malloc(sizeof(*This));
1334 if (!This) return E_OUTOFMEMORY;
1335
1336 This->encoder.vtable = &tiff_encoder_vtable;
1337 This->tiff = NULL;
1338 This->num_frames = 0;
1339
1341 info->container_format = GUID_ContainerFormatTiff;
1342 info->clsid = CLSID_WICTiffEncoder;
1343 info->encoder_options[0] = ENCODER_OPTION_COMPRESSION_METHOD;
1344 info->encoder_options[1] = ENCODER_OPTION_COMPRESSION_QUALITY;
1345 info->encoder_options[2] = ENCODER_OPTION_END;
1346
1347 *result = &This->encoder;
1348
1351 return S_OK;
1352}
static const struct encoder_funcs tiff_encoder_vtable
Definition: libtiff.c:1319
#define ENCODER_FLAGS_MULTI_FRAME

Referenced by TiffEncoder_CreateInstance().

◆ TiffDecoder_CreateInstance()

HRESULT TiffDecoder_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 86 of file main.c.

87{
88 HRESULT hr;
89 struct decoder *decoder;
91
93
94 if (SUCCEEDED(hr))
96
97 return hr;
98}
HRESULT CDECL tiff_decoder_create(struct decoder_info *info, struct decoder **result)
Definition: libtiff.c:1091

◆ TiffEncoder_CreateInstance()

HRESULT TiffEncoder_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 100 of file main.c.

101{
102 HRESULT hr;
103 struct encoder *encoder;
105
107
108 if (SUCCEEDED(hr))
110
111 return hr;
112}
HRESULT CDECL tiff_encoder_create(struct encoder_info *info, struct encoder **result)
Definition: libtiff.c:1329

◆ UnknownMetadataReader_CreateInstance()

HRESULT UnknownMetadataReader_CreateInstance ( REFIID  iid,
void **  ppv 
)

Definition at line 742 of file metadatahandler.c.

743{
745}
static const MetadataHandlerVtbl UnknownMetadataReader_Vtbl

Referenced by create_unknown_metadata_reader(), GifDecoder_Block_GetReaderByIndex(), and GifFrameDecode_Block_GetReaderByIndex().

◆ write_source()

HRESULT write_source ( IWICBitmapFrameEncode iface,
IWICBitmapSource source,
const WICRect prc,
const WICPixelFormatGUID format,
UINT  bpp,
BOOL  need_palette,
INT  width,
INT  height 
)

Definition at line 89 of file wincodecs_common.c.

93{
94 IWICBitmapSource *converted_source;
96 WICRect rc;
98 BYTE* pixeldata;
99
100 if (!prc)
101 {
102 UINT src_width, src_height;
103 hr = IWICBitmapSource_GetSize(source, &src_width, &src_height);
104 if (FAILED(hr)) return hr;
105 rc.X = 0;
106 rc.Y = 0;
107 rc.Width = src_width;
108 rc.Height = src_height;
109 prc = &rc;
110 }
111
112 if (prc->Width != width || prc->Height <= 0)
113 return E_INVALIDARG;
114
115 hr = WICConvertBitmapSource(format, source, &converted_source);
116 if (FAILED(hr))
117 {
118 ERR("Failed to convert source, target format %s, %#lx\n", debugstr_guid(format), hr);
119 return E_NOTIMPL;
120 }
121
122 if (need_palette)
123 {
126
127 hr = create_instance(&CLSID_WICImagingFactory, &IID_IWICImagingFactory, (void**)&factory);
128
129 if (SUCCEEDED(hr))
130 {
131 hr = IWICImagingFactory_CreatePalette(factory, &palette);
132 IWICImagingFactory_Release(factory);
133 }
134
135 if (SUCCEEDED(hr))
136 {
137 hr = IWICBitmapSource_CopyPalette(converted_source, palette);
138
139 if (SUCCEEDED(hr))
140 hr = IWICBitmapFrameEncode_SetPalette(iface, palette);
141
142 IWICPalette_Release(palette);
143 }
144
145 if (FAILED(hr))
146 {
147 IWICBitmapSource_Release(converted_source);
148 return hr;
149 }
150 }
151
152 stride = (bpp * width + 7)/8;
153
154 pixeldata = malloc(stride * prc->Height);
155 if (!pixeldata)
156 {
157 IWICBitmapSource_Release(converted_source);
158 return E_OUTOFMEMORY;
159 }
160
161 hr = IWICBitmapSource_CopyPixels(converted_source, prc, stride,
162 stride*prc->Height, pixeldata);
163
164 if (SUCCEEDED(hr))
165 {
166 hr = IWICBitmapFrameEncode_WritePixels(iface, prc->Height, stride,
167 stride*prc->Height, pixeldata);
168 }
169
170 free(pixeldata);
171 IWICBitmapSource_Release(converted_source);
172
173 return hr;
174}
#define ERR(fmt,...)
Definition: precomp.h:57
HRESULT create_instance(const CLSID *clsid, const IID *iid, void **ppv)
Definition: clsfactory.c:212
#define E_NOTIMPL
Definition: ddrawi.h:99
HRESULT WINAPI WICConvertBitmapSource(REFWICPixelFormatGUID dstFormat, IWICBitmapSource *pISrc, IWICBitmapSource **ppIDst)
Definition: info.c:2437
Definition: main.c:439

Referenced by BmpFrameEncode_WriteSource(), CommonEncoderFrame_WriteSource(), and GifFrameEncode_WriteSource().

Variable Documentation

◆ IID_IMILBitmap

IID IID_IMILBitmap
extern

◆ IID_IMILBitmapLock

IID IID_IMILBitmapLock
extern

◆ IID_IMILBitmapScaler

IID IID_IMILBitmapScaler
extern

◆ IID_IMILBitmapSource

IID IID_IMILBitmapSource
extern

◆ IID_IMILFormatConverter

IID IID_IMILFormatConverter
extern

◆ IID_IMILPalette

IID IID_IMILPalette
extern

◆ windowscodecs_module

HMODULE windowscodecs_module
extern

Definition at line 35 of file main.c.

Referenced by DllMain().