windowscodecs: Add stub implementation for IWICDdsFrameDecode.
Signed-off-by: Ziqing Hui <zhui@codeweavers.com> Signed-off-by: Vincent Povirk <vincent@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
d42946ea43
commit
2531b927c7
|
@ -97,6 +97,7 @@ typedef struct DdsDecoder {
|
||||||
|
|
||||||
typedef struct DdsFrameDecode {
|
typedef struct DdsFrameDecode {
|
||||||
IWICBitmapFrameDecode IWICBitmapFrameDecode_iface;
|
IWICBitmapFrameDecode IWICBitmapFrameDecode_iface;
|
||||||
|
IWICDdsFrameDecode IWICDdsFrameDecode_iface;
|
||||||
LONG ref;
|
LONG ref;
|
||||||
} DdsFrameDecode;
|
} DdsFrameDecode;
|
||||||
|
|
||||||
|
@ -121,6 +122,11 @@ static inline DdsFrameDecode *impl_from_IWICBitmapFrameDecode(IWICBitmapFrameDec
|
||||||
return CONTAINING_RECORD(iface, DdsFrameDecode, IWICBitmapFrameDecode_iface);
|
return CONTAINING_RECORD(iface, DdsFrameDecode, IWICBitmapFrameDecode_iface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline DdsFrameDecode *impl_from_IWICDdsFrameDecode(IWICDdsFrameDecode *iface)
|
||||||
|
{
|
||||||
|
return CONTAINING_RECORD(iface, DdsFrameDecode, IWICDdsFrameDecode_iface);
|
||||||
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI DdsFrameDecode_QueryInterface(IWICBitmapFrameDecode *iface, REFIID iid,
|
static HRESULT WINAPI DdsFrameDecode_QueryInterface(IWICBitmapFrameDecode *iface, REFIID iid,
|
||||||
void **ppv)
|
void **ppv)
|
||||||
{
|
{
|
||||||
|
@ -133,6 +139,8 @@ static HRESULT WINAPI DdsFrameDecode_QueryInterface(IWICBitmapFrameDecode *iface
|
||||||
IsEqualIID(&IID_IWICBitmapSource, iid) ||
|
IsEqualIID(&IID_IWICBitmapSource, iid) ||
|
||||||
IsEqualIID(&IID_IWICBitmapFrameDecode, iid)) {
|
IsEqualIID(&IID_IWICBitmapFrameDecode, iid)) {
|
||||||
*ppv = &This->IWICBitmapFrameDecode_iface;
|
*ppv = &This->IWICBitmapFrameDecode_iface;
|
||||||
|
} else if (IsEqualGUID(&IID_IWICDdsFrameDecode, iid)) {
|
||||||
|
*ppv = &This->IWICDdsFrameDecode_iface;
|
||||||
} else {
|
} else {
|
||||||
*ppv = NULL;
|
*ppv = NULL;
|
||||||
return E_NOINTERFACE;
|
return E_NOINTERFACE;
|
||||||
|
@ -242,6 +250,59 @@ static const IWICBitmapFrameDecodeVtbl DdsFrameDecode_Vtbl = {
|
||||||
DdsFrameDecode_GetThumbnail
|
DdsFrameDecode_GetThumbnail
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static HRESULT WINAPI DdsFrameDecode_Dds_QueryInterface(IWICDdsFrameDecode *iface,
|
||||||
|
REFIID iid, void **ppv)
|
||||||
|
{
|
||||||
|
DdsFrameDecode *This = impl_from_IWICDdsFrameDecode(iface);
|
||||||
|
return DdsFrameDecode_QueryInterface(&This->IWICBitmapFrameDecode_iface, iid, ppv);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI DdsFrameDecode_Dds_AddRef(IWICDdsFrameDecode *iface)
|
||||||
|
{
|
||||||
|
DdsFrameDecode *This = impl_from_IWICDdsFrameDecode(iface);
|
||||||
|
return DdsFrameDecode_AddRef(&This->IWICBitmapFrameDecode_iface);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI DdsFrameDecode_Dds_Release(IWICDdsFrameDecode *iface)
|
||||||
|
{
|
||||||
|
DdsFrameDecode *This = impl_from_IWICDdsFrameDecode(iface);
|
||||||
|
return DdsFrameDecode_Release(&This->IWICBitmapFrameDecode_iface);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI DdsFrameDecode_Dds_GetSizeInBlocks(IWICDdsFrameDecode *iface,
|
||||||
|
UINT *widthInBlocks, UINT *heightInBlocks)
|
||||||
|
{
|
||||||
|
FIXME("(%p,%p,%p): stub.\n", iface, widthInBlocks, heightInBlocks);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI DdsFrameDecode_Dds_GetFormatInfo(IWICDdsFrameDecode *iface,
|
||||||
|
WICDdsFormatInfo *formatInfo)
|
||||||
|
{
|
||||||
|
FIXME("(%p,%p): stub.\n", iface, formatInfo);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI DdsFrameDecode_Dds_CopyBlocks(IWICDdsFrameDecode *iface,
|
||||||
|
const WICRect *boundsInBlocks, UINT stride, UINT bufferSize,
|
||||||
|
BYTE *buffer)
|
||||||
|
{
|
||||||
|
FIXME("(%p,%p,%u,%u,%p): stub.\n", iface, boundsInBlocks, stride, bufferSize, buffer);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const IWICDdsFrameDecodeVtbl DdsFrameDecode_Dds_Vtbl = {
|
||||||
|
DdsFrameDecode_Dds_QueryInterface,
|
||||||
|
DdsFrameDecode_Dds_AddRef,
|
||||||
|
DdsFrameDecode_Dds_Release,
|
||||||
|
DdsFrameDecode_Dds_GetSizeInBlocks,
|
||||||
|
DdsFrameDecode_Dds_GetFormatInfo,
|
||||||
|
DdsFrameDecode_Dds_CopyBlocks
|
||||||
|
};
|
||||||
|
|
||||||
static HRESULT DdsFrameDecode_CreateInstance(DdsFrameDecode **frame_decode)
|
static HRESULT DdsFrameDecode_CreateInstance(DdsFrameDecode **frame_decode)
|
||||||
{
|
{
|
||||||
DdsFrameDecode *result;
|
DdsFrameDecode *result;
|
||||||
|
@ -250,6 +311,7 @@ static HRESULT DdsFrameDecode_CreateInstance(DdsFrameDecode **frame_decode)
|
||||||
if (!result) return E_OUTOFMEMORY;
|
if (!result) return E_OUTOFMEMORY;
|
||||||
|
|
||||||
result->IWICBitmapFrameDecode_iface.lpVtbl = &DdsFrameDecode_Vtbl;
|
result->IWICBitmapFrameDecode_iface.lpVtbl = &DdsFrameDecode_Vtbl;
|
||||||
|
result->IWICDdsFrameDecode_iface.lpVtbl = &DdsFrameDecode_Dds_Vtbl;
|
||||||
result->ref = 1;
|
result->ref = 1;
|
||||||
|
|
||||||
*frame_decode = result;
|
*frame_decode = result;
|
||||||
|
|
|
@ -371,6 +371,13 @@ typedef struct WICDdsParameters {
|
||||||
WICDdsAlphaMode AlphaMode;
|
WICDdsAlphaMode AlphaMode;
|
||||||
} WICDdsParameters;
|
} WICDdsParameters;
|
||||||
|
|
||||||
|
typedef struct WICDdsFormatInfo {
|
||||||
|
DXGI_FORMAT DxgiFormat;
|
||||||
|
UINT BytesPerBlock;
|
||||||
|
UINT BlockWidth;
|
||||||
|
UINT BlockHeight;
|
||||||
|
} WICDdsFormatInfo;
|
||||||
|
|
||||||
typedef UINT32 WICColor;
|
typedef UINT32 WICColor;
|
||||||
|
|
||||||
interface ID2D1Device;
|
interface ID2D1Device;
|
||||||
|
@ -1189,6 +1196,27 @@ interface IWICDdsDecoder : IUnknown
|
||||||
[out, retval] IWICBitmapFrameDecode **bitmapFrame);
|
[out, retval] IWICBitmapFrameDecode **bitmapFrame);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
[
|
||||||
|
object,
|
||||||
|
uuid(3d4c0c61-18a4-41e4-bd80-481a4fc9f464)
|
||||||
|
]
|
||||||
|
interface IWICDdsFrameDecode : IUnknown
|
||||||
|
{
|
||||||
|
HRESULT GetSizeInBlocks(
|
||||||
|
[out] UINT *widthInBlocks,
|
||||||
|
[out] UINT *heightInBlocks);
|
||||||
|
|
||||||
|
HRESULT GetFormatInfo(
|
||||||
|
[out] WICDdsFormatInfo *formatInfo);
|
||||||
|
|
||||||
|
HRESULT CopyBlocks(
|
||||||
|
[in, unique] const WICRect *boundsInBlocks,
|
||||||
|
[in] UINT stride,
|
||||||
|
[in] UINT bufferSize,
|
||||||
|
[out, size_is(bufferSize)] BYTE *buffer);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
cpp_quote("HRESULT WINAPI WICConvertBitmapSource(REFWICPixelFormatGUID dstFormat, IWICBitmapSource *pISrc, IWICBitmapSource **ppIDst);")
|
cpp_quote("HRESULT WINAPI WICConvertBitmapSource(REFWICPixelFormatGUID dstFormat, IWICBitmapSource *pISrc, IWICBitmapSource **ppIDst);")
|
||||||
cpp_quote("HRESULT WINAPI WICCreateBitmapFromSection(UINT width, UINT height, REFWICPixelFormatGUID format, HANDLE section, UINT stride, UINT offset, IWICBitmap **bitmap);")
|
cpp_quote("HRESULT WINAPI WICCreateBitmapFromSection(UINT width, UINT height, REFWICPixelFormatGUID format, HANDLE section, UINT stride, UINT offset, IWICBitmap **bitmap);")
|
||||||
cpp_quote("HRESULT WINAPI WICCreateBitmapFromSectionEx(UINT width, UINT height, REFWICPixelFormatGUID format, HANDLE section, UINT stride, UINT offset, WICSectionAccessLevel access, IWICBitmap **bitmap);")
|
cpp_quote("HRESULT WINAPI WICCreateBitmapFromSectionEx(UINT width, UINT height, REFWICPixelFormatGUID format, HANDLE section, UINT stride, UINT offset, WICSectionAccessLevel access, IWICBitmap **bitmap);")
|
||||||
|
|
Loading…
Reference in New Issue