oleaut32: Reorder a few functions to avoid forward declaractions.
This commit is contained in:
parent
6104c67613
commit
74b6aba216
|
@ -386,7 +386,43 @@ static void OLEPictureImpl_Destroy(OLEPictureImpl* Obj)
|
||||||
HeapFree(GetProcessHeap(), 0, Obj);
|
HeapFree(GetProcessHeap(), 0, Obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI OLEPictureImpl_AddRef(IPicture* iface);
|
|
||||||
|
/************************************************************************
|
||||||
|
* OLEPictureImpl_AddRef (IUnknown)
|
||||||
|
*
|
||||||
|
* See Windows documentation for more details on IUnknown methods.
|
||||||
|
*/
|
||||||
|
static ULONG WINAPI OLEPictureImpl_AddRef(
|
||||||
|
IPicture* iface)
|
||||||
|
{
|
||||||
|
OLEPictureImpl *This = (OLEPictureImpl *)iface;
|
||||||
|
ULONG refCount = InterlockedIncrement(&This->ref);
|
||||||
|
|
||||||
|
TRACE("(%p)->(ref before=%ld)\n", This, refCount - 1);
|
||||||
|
|
||||||
|
return refCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
|
* OLEPictureImpl_Release (IUnknown)
|
||||||
|
*
|
||||||
|
* See Windows documentation for more details on IUnknown methods.
|
||||||
|
*/
|
||||||
|
static ULONG WINAPI OLEPictureImpl_Release(
|
||||||
|
IPicture* iface)
|
||||||
|
{
|
||||||
|
OLEPictureImpl *This = (OLEPictureImpl *)iface;
|
||||||
|
ULONG refCount = InterlockedDecrement(&This->ref);
|
||||||
|
|
||||||
|
TRACE("(%p)->(ref before=%ld)\n", This, refCount + 1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the reference count goes down to 0, perform suicide.
|
||||||
|
*/
|
||||||
|
if (!refCount) OLEPictureImpl_Destroy(This);
|
||||||
|
|
||||||
|
return refCount;
|
||||||
|
}
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* OLEPictureImpl_QueryInterface (IUnknown)
|
* OLEPictureImpl_QueryInterface (IUnknown)
|
||||||
|
@ -456,6 +492,7 @@ static HRESULT WINAPI OLEPictureImpl_QueryInterface(
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* OLEPicture_SendNotify (internal)
|
* OLEPicture_SendNotify (internal)
|
||||||
*
|
*
|
||||||
|
@ -481,44 +518,6 @@ static void OLEPicture_SendNotify(OLEPictureImpl* this, DISPID dispID)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* OLEPictureImpl_AddRef (IUnknown)
|
|
||||||
*
|
|
||||||
* See Windows documentation for more details on IUnknown methods.
|
|
||||||
*/
|
|
||||||
static ULONG WINAPI OLEPictureImpl_AddRef(
|
|
||||||
IPicture* iface)
|
|
||||||
{
|
|
||||||
OLEPictureImpl *This = (OLEPictureImpl *)iface;
|
|
||||||
ULONG refCount = InterlockedIncrement(&This->ref);
|
|
||||||
|
|
||||||
TRACE("(%p)->(ref before=%ld)\n", This, refCount - 1);
|
|
||||||
|
|
||||||
return refCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* OLEPictureImpl_Release (IUnknown)
|
|
||||||
*
|
|
||||||
* See Windows documentation for more details on IUnknown methods.
|
|
||||||
*/
|
|
||||||
static ULONG WINAPI OLEPictureImpl_Release(
|
|
||||||
IPicture* iface)
|
|
||||||
{
|
|
||||||
OLEPictureImpl *This = (OLEPictureImpl *)iface;
|
|
||||||
ULONG refCount = InterlockedDecrement(&This->ref);
|
|
||||||
|
|
||||||
TRACE("(%p)->(ref before=%ld)\n", This, refCount + 1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If the reference count goes down to 0, perform suicide.
|
|
||||||
*/
|
|
||||||
if (!refCount) OLEPictureImpl_Destroy(This);
|
|
||||||
|
|
||||||
return refCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* OLEPictureImpl_get_Handle
|
* OLEPictureImpl_get_Handle
|
||||||
*/
|
*/
|
||||||
|
@ -829,7 +828,6 @@ static HRESULT WINAPI OLEPictureImpl_get_Attributes(IPicture *iface,
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* IConnectionPointContainer
|
* IConnectionPointContainer
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static HRESULT WINAPI OLEPictureImpl_IConnectionPointContainer_QueryInterface(
|
static HRESULT WINAPI OLEPictureImpl_IConnectionPointContainer_QueryInterface(
|
||||||
IConnectionPointContainer* iface,
|
IConnectionPointContainer* iface,
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
|
@ -881,9 +879,12 @@ static HRESULT WINAPI OLEPictureImpl_FindConnectionPoint(
|
||||||
FIXME("no connection point for %s\n",debugstr_guid(riid));
|
FIXME("no connection point for %s\n",debugstr_guid(riid));
|
||||||
return CONNECT_E_NOCONNECTION;
|
return CONNECT_E_NOCONNECTION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* IPersistStream
|
* IPersistStream
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* OLEPictureImpl_IPersistStream_QueryInterface (IUnknown)
|
* OLEPictureImpl_IPersistStream_QueryInterface (IUnknown)
|
||||||
*
|
*
|
||||||
|
@ -1615,115 +1616,6 @@ static HRESULT WINAPI OLEPictureImpl_Load(IPersistStream* iface,IStream*pStm) {
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int serializeIcon(HICON hIcon, void ** ppBuffer, unsigned int * pLength);
|
|
||||||
static int serializeBMP(HBITMAP hBitmap, void ** ppBuffer, unsigned int * pLength);
|
|
||||||
static HRESULT WINAPI OLEPictureImpl_Save(
|
|
||||||
IPersistStream* iface,IStream*pStm,BOOL fClearDirty)
|
|
||||||
{
|
|
||||||
HRESULT hResult = E_NOTIMPL;
|
|
||||||
void * pIconData;
|
|
||||||
unsigned int iDataSize;
|
|
||||||
ULONG dummy;
|
|
||||||
int iSerializeResult = 0;
|
|
||||||
|
|
||||||
OLEPictureImpl *This = impl_from_IPersistStream(iface);
|
|
||||||
|
|
||||||
switch (This->desc.picType) {
|
|
||||||
case PICTYPE_ICON:
|
|
||||||
if (This->bIsDirty) {
|
|
||||||
if (serializeIcon(This->desc.u.icon.hicon, &pIconData, &iDataSize)) {
|
|
||||||
if (This->loadtime_magic != 0xdeadbeef) {
|
|
||||||
DWORD header[2];
|
|
||||||
|
|
||||||
header[0] = This->loadtime_magic;
|
|
||||||
header[1] = iDataSize;
|
|
||||||
IStream_Write(pStm, header, 2 * sizeof(DWORD), &dummy);
|
|
||||||
}
|
|
||||||
IStream_Write(pStm, pIconData, iDataSize, &dummy);
|
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, This->data);
|
|
||||||
This->data = pIconData;
|
|
||||||
This->datalen = iDataSize;
|
|
||||||
hResult = S_OK;
|
|
||||||
} else {
|
|
||||||
FIXME("(%p,%p,%d), unable to serializeIcon()!\n",This,pStm,fClearDirty);
|
|
||||||
hResult = E_FAIL;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (This->loadtime_magic != 0xdeadbeef) {
|
|
||||||
DWORD header[2];
|
|
||||||
|
|
||||||
header[0] = This->loadtime_magic;
|
|
||||||
header[1] = This->datalen;
|
|
||||||
IStream_Write(pStm, header, 2 * sizeof(DWORD), &dummy);
|
|
||||||
}
|
|
||||||
IStream_Write(pStm, This->data, This->datalen, &dummy);
|
|
||||||
hResult = S_OK;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PICTYPE_BITMAP:
|
|
||||||
if (This->bIsDirty) {
|
|
||||||
switch (This->keepOrigFormat ? This->loadtime_format : 0x4d42) {
|
|
||||||
case 0x4d42:
|
|
||||||
iSerializeResult = serializeBMP(This->desc.u.bmp.hbitmap, &pIconData, &iDataSize);
|
|
||||||
break;
|
|
||||||
case 0xd8ff:
|
|
||||||
FIXME("(%p,%p,%d), PICTYPE_BITMAP (format JPEG) not implemented!\n",This,pStm,fClearDirty);
|
|
||||||
break;
|
|
||||||
case 0x4947:
|
|
||||||
FIXME("(%p,%p,%d), PICTYPE_BITMAP (format GIF) not implemented!\n",This,pStm,fClearDirty);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
FIXME("(%p,%p,%d), PICTYPE_BITMAP (format UNKNOWN, using BMP?) not implemented!\n",This,pStm,fClearDirty);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (iSerializeResult) {
|
|
||||||
/*
|
|
||||||
if (This->loadtime_magic != 0xdeadbeef) {
|
|
||||||
*/
|
|
||||||
if (1) {
|
|
||||||
DWORD header[2];
|
|
||||||
|
|
||||||
header[0] = (This->loadtime_magic != 0xdeadbeef) ? This->loadtime_magic : 0x0000746c;
|
|
||||||
header[1] = iDataSize;
|
|
||||||
IStream_Write(pStm, header, 2 * sizeof(DWORD), &dummy);
|
|
||||||
}
|
|
||||||
IStream_Write(pStm, pIconData, iDataSize, &dummy);
|
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, This->data);
|
|
||||||
This->data = pIconData;
|
|
||||||
This->datalen = iDataSize;
|
|
||||||
hResult = S_OK;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/*
|
|
||||||
if (This->loadtime_magic != 0xdeadbeef) {
|
|
||||||
*/
|
|
||||||
if (1) {
|
|
||||||
DWORD header[2];
|
|
||||||
|
|
||||||
header[0] = (This->loadtime_magic != 0xdeadbeef) ? This->loadtime_magic : 0x0000746c;
|
|
||||||
header[1] = This->datalen;
|
|
||||||
IStream_Write(pStm, header, 2 * sizeof(DWORD), &dummy);
|
|
||||||
}
|
|
||||||
IStream_Write(pStm, This->data, This->datalen, &dummy);
|
|
||||||
hResult = S_OK;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PICTYPE_METAFILE:
|
|
||||||
FIXME("(%p,%p,%d), PICTYPE_METAFILE not implemented!\n",This,pStm,fClearDirty);
|
|
||||||
break;
|
|
||||||
case PICTYPE_ENHMETAFILE:
|
|
||||||
FIXME("(%p,%p,%d),PICTYPE_ENHMETAFILE not implemented!\n",This,pStm,fClearDirty);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
FIXME("(%p,%p,%d), [unknown type] not implemented!\n",This,pStm,fClearDirty);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (hResult == S_OK && fClearDirty) This->bIsDirty = FALSE;
|
|
||||||
return hResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int serializeBMP(HBITMAP hBitmap, void ** ppBuffer, unsigned int * pLength)
|
static int serializeBMP(HBITMAP hBitmap, void ** ppBuffer, unsigned int * pLength)
|
||||||
{
|
{
|
||||||
int iSuccess = 0;
|
int iSuccess = 0;
|
||||||
|
@ -1941,6 +1833,113 @@ static int serializeIcon(HICON hIcon, void ** ppBuffer, unsigned int * pLength)
|
||||||
return iSuccess;
|
return iSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI OLEPictureImpl_Save(
|
||||||
|
IPersistStream* iface,IStream*pStm,BOOL fClearDirty)
|
||||||
|
{
|
||||||
|
HRESULT hResult = E_NOTIMPL;
|
||||||
|
void * pIconData;
|
||||||
|
unsigned int iDataSize;
|
||||||
|
ULONG dummy;
|
||||||
|
int iSerializeResult = 0;
|
||||||
|
|
||||||
|
OLEPictureImpl *This = impl_from_IPersistStream(iface);
|
||||||
|
|
||||||
|
switch (This->desc.picType) {
|
||||||
|
case PICTYPE_ICON:
|
||||||
|
if (This->bIsDirty) {
|
||||||
|
if (serializeIcon(This->desc.u.icon.hicon, &pIconData, &iDataSize)) {
|
||||||
|
if (This->loadtime_magic != 0xdeadbeef) {
|
||||||
|
DWORD header[2];
|
||||||
|
|
||||||
|
header[0] = This->loadtime_magic;
|
||||||
|
header[1] = iDataSize;
|
||||||
|
IStream_Write(pStm, header, 2 * sizeof(DWORD), &dummy);
|
||||||
|
}
|
||||||
|
IStream_Write(pStm, pIconData, iDataSize, &dummy);
|
||||||
|
|
||||||
|
HeapFree(GetProcessHeap(), 0, This->data);
|
||||||
|
This->data = pIconData;
|
||||||
|
This->datalen = iDataSize;
|
||||||
|
hResult = S_OK;
|
||||||
|
} else {
|
||||||
|
FIXME("(%p,%p,%d), unable to serializeIcon()!\n",This,pStm,fClearDirty);
|
||||||
|
hResult = E_FAIL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (This->loadtime_magic != 0xdeadbeef) {
|
||||||
|
DWORD header[2];
|
||||||
|
|
||||||
|
header[0] = This->loadtime_magic;
|
||||||
|
header[1] = This->datalen;
|
||||||
|
IStream_Write(pStm, header, 2 * sizeof(DWORD), &dummy);
|
||||||
|
}
|
||||||
|
IStream_Write(pStm, This->data, This->datalen, &dummy);
|
||||||
|
hResult = S_OK;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PICTYPE_BITMAP:
|
||||||
|
if (This->bIsDirty) {
|
||||||
|
switch (This->keepOrigFormat ? This->loadtime_format : 0x4d42) {
|
||||||
|
case 0x4d42:
|
||||||
|
iSerializeResult = serializeBMP(This->desc.u.bmp.hbitmap, &pIconData, &iDataSize);
|
||||||
|
break;
|
||||||
|
case 0xd8ff:
|
||||||
|
FIXME("(%p,%p,%d), PICTYPE_BITMAP (format JPEG) not implemented!\n",This,pStm,fClearDirty);
|
||||||
|
break;
|
||||||
|
case 0x4947:
|
||||||
|
FIXME("(%p,%p,%d), PICTYPE_BITMAP (format GIF) not implemented!\n",This,pStm,fClearDirty);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
FIXME("(%p,%p,%d), PICTYPE_BITMAP (format UNKNOWN, using BMP?) not implemented!\n",This,pStm,fClearDirty);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (iSerializeResult) {
|
||||||
|
/*
|
||||||
|
if (This->loadtime_magic != 0xdeadbeef) {
|
||||||
|
*/
|
||||||
|
if (1) {
|
||||||
|
DWORD header[2];
|
||||||
|
|
||||||
|
header[0] = (This->loadtime_magic != 0xdeadbeef) ? This->loadtime_magic : 0x0000746c;
|
||||||
|
header[1] = iDataSize;
|
||||||
|
IStream_Write(pStm, header, 2 * sizeof(DWORD), &dummy);
|
||||||
|
}
|
||||||
|
IStream_Write(pStm, pIconData, iDataSize, &dummy);
|
||||||
|
|
||||||
|
HeapFree(GetProcessHeap(), 0, This->data);
|
||||||
|
This->data = pIconData;
|
||||||
|
This->datalen = iDataSize;
|
||||||
|
hResult = S_OK;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/*
|
||||||
|
if (This->loadtime_magic != 0xdeadbeef) {
|
||||||
|
*/
|
||||||
|
if (1) {
|
||||||
|
DWORD header[2];
|
||||||
|
|
||||||
|
header[0] = (This->loadtime_magic != 0xdeadbeef) ? This->loadtime_magic : 0x0000746c;
|
||||||
|
header[1] = This->datalen;
|
||||||
|
IStream_Write(pStm, header, 2 * sizeof(DWORD), &dummy);
|
||||||
|
}
|
||||||
|
IStream_Write(pStm, This->data, This->datalen, &dummy);
|
||||||
|
hResult = S_OK;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PICTYPE_METAFILE:
|
||||||
|
FIXME("(%p,%p,%d), PICTYPE_METAFILE not implemented!\n",This,pStm,fClearDirty);
|
||||||
|
break;
|
||||||
|
case PICTYPE_ENHMETAFILE:
|
||||||
|
FIXME("(%p,%p,%d),PICTYPE_ENHMETAFILE not implemented!\n",This,pStm,fClearDirty);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
FIXME("(%p,%p,%d), [unknown type] not implemented!\n",This,pStm,fClearDirty);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (hResult == S_OK && fClearDirty) This->bIsDirty = FALSE;
|
||||||
|
return hResult;
|
||||||
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI OLEPictureImpl_GetSizeMax(
|
static HRESULT WINAPI OLEPictureImpl_GetSizeMax(
|
||||||
IPersistStream* iface,ULARGE_INTEGER*pcbSize)
|
IPersistStream* iface,ULARGE_INTEGER*pcbSize)
|
||||||
{
|
{
|
||||||
|
@ -1949,9 +1948,11 @@ static HRESULT WINAPI OLEPictureImpl_GetSizeMax(
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* IDispatch
|
* IDispatch
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* OLEPictureImpl_IDispatch_QueryInterface (IUnknown)
|
* OLEPictureImpl_IDispatch_QueryInterface (IUnknown)
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue