36 { PROPBAG2_TYPE_DATA,
VT_UI1, 0, 0, (
LPOLESTR)
L"TiffCompressionMethod" },
37 { PROPBAG2_TYPE_DATA,
VT_R4, 0, 0, (
LPOLESTR)
L"CompressionQuality" },
42 { PROPBAG2_TYPE_DATA,
VT_UI1, 0, 0, (
LPOLESTR)
L"JpegYCrCbSubsampling" },
96 *
ppv = &
object->IWICBitmapFrameEncode_iface;
99 &&
IsEqualIID(&IID_IWICMetadataBlockWriter, iid))
101 *
ppv = &
object->IWICMetadataBlockWriter_iface;
118 TRACE(
"(%p) refcount=%lu\n", iface,
ref);
128 TRACE(
"(%p) refcount=%lu\n", iface,
ref);
132 IWICBitmapEncoder_Release(&
This->parent->IWICBitmapEncoder_iface);
145 PROPBAG2 opts[7]= {{0}};
150 TRACE(
"(%p,%p)\n", iface, pIEncoderOptions);
152 if (pIEncoderOptions)
158 hr = IPropertyBag2_Read(pIEncoderOptions, num_opts, opts,
NULL, opt_values, opt_hres);
167 switch (
This->parent->encoder_info.encoder_options[
i])
179 WARN(
"Unrecognized filter option value %lu.\n",
options.filter);
196 if (
This->initialized)
215 TRACE(
"(%p,%u,%u)\n", iface, uiWidth, uiHeight);
221 if (uiWidth != uiHeight)
223 WARN(
"cannot generate ICNS icon from %dx%d image\n", uiWidth, uiHeight);
238 WARN(
"cannot generate ICNS icon from %dx%d image\n", uiWidth, uiHeight);
244 if (!
This->initialized ||
This->frame_created)
250 This->encoder_frame.width = uiWidth;
251 This->encoder_frame.height = uiHeight;
262 double dpiX,
double dpiY)
267 TRACE(
"(%p,%0.2f,%0.2f)\n", iface, dpiX, dpiY);
271 if (!
This->initialized ||
This->frame_created)
277 This->encoder_frame.dpix = dpiX;
278 This->encoder_frame.dpiy = dpiY;
300 if (!
This->initialized ||
This->frame_created)
327 FIXME(
"(%p,%u,%p): stub\n", iface, cCount, ppIColorContext);
344 if (!
This->initialized)
346 else if (
This->frame_created)
349 hr = IWICPalette_GetColors(
palette, 256,
This->encoder_frame.palette,
350 &
This->encoder_frame.num_colors);
360 FIXME(
"(%p,%p): stub\n", iface, pIThumbnail);
369 DWORD required_stride;
371 TRACE(
"(%p,%u,%u,%u,%p)\n", iface, lineCount, cbStride, cbBufferSize, pbPixels);
375 if (!
This->initialized || !
This->encoder_frame.height || !
This->encoder_frame.width ||
376 !
This->encoder_frame.bpp)
382 required_stride = (
This->encoder_frame.width *
This->encoder_frame.bpp + 7)/8;
384 if (lineCount == 0 ||
This->encoder_frame.height -
This->lines_written < lineCount ||
385 cbStride < required_stride || cbBufferSize < cbStride * (lineCount - 1) + required_stride ||
392 if (!
This->frame_created)
403 This->lines_written += lineCount;
418 if (!
This->initialized)
422 This->encoder_frame.bpp ? &
This->encoder_frame.pixel_format :
NULL,
423 This->encoder_frame.width,
This->encoder_frame.height,
424 This->encoder_frame.dpix,
This->encoder_frame.dpiy);
429 &
This->encoder_frame.pixel_format,
This->encoder_frame.bpp,
430 !
This->encoder_frame.num_colors &&
This->encoder_frame.indexed,
431 This->encoder_frame.width,
This->encoder_frame.height);
442 TRACE(
"(%p)\n", iface);
446 if (!
This->frame_created ||
This->lines_written !=
This->encoder_frame.height ||
471 TRACE(
"iface, %p, ppIMetadataQueryWriter %p.\n", iface, ppIMetadataQueryWriter);
473 if (!ppIMetadataQueryWriter)
513 *
ppv = &
This->IWICBitmapEncoder_iface;
530 TRACE(
"(%p) refcount=%lu\n", iface,
ref);
540 TRACE(
"(%p) refcount=%lu\n", iface,
ref);
544 This->lock.DebugInfo->Spare[0] = 0;
547 IStream_Release(
This->stream);
561 TRACE(
"(%p,%p,%u)\n", iface, pIStream, cacheOption);
578 This->stream = pIStream;
579 IStream_AddRef(
This->stream);
612 hr = IWICComponentInfo_QueryInterface(comp_info, &IID_IWICBitmapEncoderInfo, (
void **)
info);
613 IWICComponentInfo_Release(comp_info);
621 FIXME(
"(%p,%u,%p): stub\n", iface, cCount, ppIColorContext);
643 TRACE(
"(%p,%p)\n", iface, pIThumbnail);
649 TRACE(
"(%p,%p)\n", iface, pIPreview);
657 return IWICBitmapFrameEncode_QueryInterface(&
encoder->IWICBitmapFrameEncode_iface, iid,
ppv);
664 return IWICBitmapFrameEncode_AddRef(&
encoder->IWICBitmapFrameEncode_iface);
671 return IWICBitmapFrameEncode_Release(&
encoder->IWICBitmapFrameEncode_iface);
676 FIXME(
"iface %p, container_format %p stub.\n", iface, container_format);
683 FIXME(
"iface %p, count %p stub.\n", iface,
count);
691 FIXME(
"iface %p, index %d, metadata_reader %p stub.\n", iface,
index, metadata_reader);
698 FIXME(
"iface %p, ppIEnumMetadata %p stub.\n", iface, enum_metadata);
706 FIXME(
"iface %p, metadata_block_reader %p stub.\n", iface, metadata_block_reader);
714 FIXME(
"iface %p, index %u, metadata_writer %p stub.\n", iface,
index, metadata_writer);
721 FIXME(
"iface %p, metadata_writer %p.\n", iface, metadata_writer);
729 FIXME(
"iface %p, index %u, metadata_writer %p stub.\n", iface,
index, metadata_writer);
766 TRACE(
"(%p,%p,%p)\n", iface, ppIFrameEncode, ppIEncoderOptions);
776 if (!
This->stream ||
This->committed ||
This->uncommitted_frame)
794 if (ppIEncoderOptions)
796 for (opts_length = 0;
This->encoder_info.encoder_options[opts_length] <
ENCODER_OPTION_END; opts_length++)
810 IWICBitmapEncoder_AddRef(iface);
816 *ppIFrameEncode = &
result->IWICBitmapFrameEncode_iface;
826 TRACE(
"(%p)\n", iface);
830 if (
This->committed ||
This->uncommitted_frame)
847 FIXME(
"(%p,%p): stub\n", iface, ppIMetadataQueryWriter);
889 This->frame_count = 0;
897 This->lock.DebugInfo->Spare[0] = (
DWORD_PTR)(__FILE__
": CommonEncoder.lock");
899 ret = IWICBitmapEncoder_QueryInterface(&
This->IWICBitmapEncoder_iface, iid,
ppv);
900 IWICBitmapEncoder_Release(&
This->IWICBitmapEncoder_iface);
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
HRESULT CreateComponentInfo(REFCLSID clsid, IWICComponentInfo **ppIInfo)
HRESULT CreatePropertyBag2(const PROPBAG2 *options, UINT count, IPropertyBag2 **ppPropertyBag2)
static HRESULT WINAPI CommonEncoder_GetContainerFormat(IWICBitmapEncoder *iface, GUID *format)
static ULONG WINAPI CommonEncoder_Release(IWICBitmapEncoder *iface)
static HRESULT WINAPI CommonEncoderFrame_Commit(IWICBitmapFrameEncode *iface)
HRESULT CommonEncoder_CreateInstance(struct encoder *encoder, const struct encoder_info *encoder_info, REFIID iid, void **ppv)
static HRESULT WINAPI CommonEncoderFrame_QueryInterface(IWICBitmapFrameEncode *iface, REFIID iid, void **ppv)
static HRESULT WINAPI CommonEncoderFrame_Block_GetWriterByIndex(IWICMetadataBlockWriter *iface, UINT index, IWICMetadataWriter **metadata_writer)
static HRESULT WINAPI CommonEncoder_Commit(IWICBitmapEncoder *iface)
static HRESULT WINAPI CommonEncoderFrame_SetResolution(IWICBitmapFrameEncode *iface, double dpiX, double dpiY)
static const IWICBitmapEncoderVtbl CommonEncoder_Vtbl
static HRESULT WINAPI CommonEncoderFrame_Block_GetCount(IWICMetadataBlockWriter *iface, UINT *count)
static HRESULT WINAPI CommonEncoder_SetColorContexts(IWICBitmapEncoder *iface, UINT cCount, IWICColorContext **ppIColorContext)
static HRESULT WINAPI CommonEncoderFrame_Block_GetReaderByIndex(IWICMetadataBlockWriter *iface, UINT index, IWICMetadataReader **metadata_reader)
static const IWICMetadataBlockWriterVtbl CommonEncoderFrame_BlockVtbl
static HRESULT WINAPI CommonEncoder_Initialize(IWICBitmapEncoder *iface, IStream *pIStream, WICBitmapEncoderCacheOption cacheOption)
static const PROPBAG2 encoder_option_properties[ENCODER_OPTION_END]
static HRESULT WINAPI CommonEncoder_SetPreview(IWICBitmapEncoder *iface, IWICBitmapSource *pIPreview)
static ULONG WINAPI CommonEncoderFrame_Block_Release(IWICMetadataBlockWriter *iface)
static HRESULT WINAPI CommonEncoderFrame_Block_InitializeFromBlockReader(IWICMetadataBlockWriter *iface, IWICMetadataBlockReader *metadata_block_reader)
static HRESULT WINAPI CommonEncoderFrame_GetMetadataQueryWriter(IWICBitmapFrameEncode *iface, IWICMetadataQueryWriter **ppIMetadataQueryWriter)
static HRESULT WINAPI CommonEncoder_GetEncoderInfo(IWICBitmapEncoder *iface, IWICBitmapEncoderInfo **info)
static HRESULT WINAPI CommonEncoderFrame_SetPalette(IWICBitmapFrameEncode *iface, IWICPalette *palette)
static ULONG WINAPI CommonEncoderFrame_Block_AddRef(IWICMetadataBlockWriter *iface)
static ULONG WINAPI CommonEncoderFrame_AddRef(IWICBitmapFrameEncode *iface)
static HRESULT WINAPI CommonEncoderFrame_SetSize(IWICBitmapFrameEncode *iface, UINT uiWidth, UINT uiHeight)
static HRESULT WINAPI CommonEncoderFrame_SetPixelFormat(IWICBitmapFrameEncode *iface, WICPixelFormatGUID *pPixelFormat)
static CommonEncoderFrame * impl_from_IWICBitmapFrameEncode(IWICBitmapFrameEncode *iface)
static HRESULT WINAPI CommonEncoder_SetPalette(IWICBitmapEncoder *iface, IWICPalette *palette)
static HRESULT WINAPI CommonEncoderFrame_Block_SetWriterByIndex(IWICMetadataBlockWriter *iface, UINT index, IWICMetadataWriter *metadata_writer)
static HRESULT WINAPI CommonEncoderFrame_Initialize(IWICBitmapFrameEncode *iface, IPropertyBag2 *pIEncoderOptions)
static HRESULT WINAPI CommonEncoder_SetThumbnail(IWICBitmapEncoder *iface, IWICBitmapSource *pIThumbnail)
static HRESULT WINAPI CommonEncoder_QueryInterface(IWICBitmapEncoder *iface, REFIID iid, void **ppv)
static HRESULT WINAPI CommonEncoderFrame_Block_GetContainerFormat(IWICMetadataBlockWriter *iface, GUID *container_format)
static HRESULT WINAPI CommonEncoderFrame_WritePixels(IWICBitmapFrameEncode *iface, UINT lineCount, UINT cbStride, UINT cbBufferSize, BYTE *pbPixels)
static HRESULT WINAPI CommonEncoderFrame_SetThumbnail(IWICBitmapFrameEncode *iface, IWICBitmapSource *pIThumbnail)
static CommonEncoderFrame * impl_from_IWICMetadataBlockWriter(IWICMetadataBlockWriter *iface)
static HRESULT WINAPI CommonEncoderFrame_Block_QueryInterface(IWICMetadataBlockWriter *iface, REFIID iid, void **ppv)
static ULONG WINAPI CommonEncoder_AddRef(IWICBitmapEncoder *iface)
static HRESULT WINAPI CommonEncoderFrame_SetColorContexts(IWICBitmapFrameEncode *iface, UINT cCount, IWICColorContext **ppIColorContext)
static HRESULT WINAPI CommonEncoderFrame_WriteSource(IWICBitmapFrameEncode *iface, IWICBitmapSource *pIBitmapSource, WICRect *prc)
static HRESULT WINAPI CommonEncoderFrame_Block_AddWriter(IWICMetadataBlockWriter *iface, IWICMetadataWriter *metadata_writer)
static ULONG WINAPI CommonEncoderFrame_Release(IWICBitmapFrameEncode *iface)
static HRESULT WINAPI CommonEncoder_CreateNewFrame(IWICBitmapEncoder *iface, IWICBitmapFrameEncode **ppIFrameEncode, IPropertyBag2 **ppIEncoderOptions)
static HRESULT WINAPI CommonEncoder_GetMetadataQueryWriter(IWICBitmapEncoder *iface, IWICMetadataQueryWriter **ppIMetadataQueryWriter)
static HRESULT WINAPI CommonEncoderFrame_Block_RemoveWriterByIndex(IWICMetadataBlockWriter *iface, UINT index)
static const IWICBitmapFrameEncodeVtbl CommonEncoderFrame_Vtbl
static CommonEncoder * impl_from_IWICBitmapEncoder(IWICBitmapEncoder *iface)
static HRESULT WINAPI CommonEncoderFrame_Block_GetEnumerator(IWICMetadataBlockWriter *iface, IEnumUnknown **enum_metadata)
GLuint GLuint GLsizei count
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
#define memcpy(s1, s2, n)
#define IsEqualIID(riid1, riid2)
static __inline const char * wine_dbgstr_guid(const GUID *id)
IWICBitmapFrameEncode IWICBitmapFrameEncode_iface
IWICMetadataBlockWriter IWICMetadataBlockWriter_iface
IWICBitmapEncoder IWICBitmapEncoder_iface
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
#define CONTAINING_RECORD(address, type, field)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
WICBitmapEncoderCacheOption
@ WICPngFilterUnspecified
HRESULT write_source(IWICBitmapFrameEncode *iface, IWICBitmapSource *source, const WICRect *prc, const WICPixelFormatGUID *format, UINT bpp, BOOL need_palette, INT width, INT height)
HRESULT configure_write_source(IWICBitmapFrameEncode *iface, IWICBitmapSource *source, const WICRect *prc, const WICPixelFormatGUID *format, INT width, INT height, double xres, double yres)
HRESULT CDECL encoder_create_frame(struct encoder *encoder, const struct encoder_frame *frame)
HRESULT CDECL encoder_write_lines(struct encoder *encoder, BYTE *data, DWORD line_count, DWORD stride)
HRESULT CDECL encoder_commit_file(struct encoder *encoder)
HRESULT CDECL encoder_commit_frame(struct encoder *encoder)
HRESULT CDECL encoder_initialize(struct encoder *encoder, IStream *stream)
HRESULT CDECL encoder_get_supported_format(struct encoder *encoder, GUID *pixel_format, DWORD *bpp, BOOL *indexed)
void CDECL encoder_destroy(struct encoder *encoder)
static const char * debug_wic_rect(const WICRect *rect)
#define ENCODER_FLAGS_MULTI_FRAME
#define ENCODER_FLAGS_SUPPORTS_METADATA
@ ENCODER_OPTION_INTERLACE
#define ENCODER_FLAGS_ICNS_SIZE
#define WINCODEC_ERR_WRONGSTATE
#define WINCODEC_ERR_UNSUPPORTEDOPERATION
#define WINCODEC_ERR_NOTINITIALIZED
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO