#if !defined( _UTILS_H_ ) #define _UTILS_H_ #define STREAMTYPE_CONTROL 0x00000001 #define STREAMTYPE_CACHE 0x00000002 #define STREAMTYPE_CONTAINER 0x00000004 #define STREAMTYPE_OTHER \ (!(STREAMTYPE_CONTROL | STREAMTYPE_CACHE | STREAMTYPE_CONTAINER)) #define STREAMTYPE_ALL 0xFFFFFFFF #define OPCODE_COPY 1 #define OPCODE_REMOVE 2 #define OPCODE_MOVE 3 #define OPCODE_EXCLUDEFROMCOPY 4 #define CONVERT_NOSOURCE 1 #define CONVERT_NODESTINATION 2 typedef struct tagPLACEABLEMETAHEADER { DWORD key; /* must be 0x9AC6CDD7L */ HANDLE hmf; /* must be zero */ RECT bbox; /* bounding rectangle of the metafile */ WORD inch; /* # of metafile units per inch must be < 1440 */ /* most apps use 576 or 1000 */ DWORD reserved; /* must be zero */ WORD checksum; } PLACEABLEMETAHEADER; #ifdef _MAC #define UtMemCpy(lpdst,lpsrc,dwCount) (BlockMove(lpsrc, lpdst, dwCount)) #else #define UtMemCpy(lpdst,lpsrc,dwCount) (hmemcpy(lpdst, lpsrc, dwCount)) #endif FARINTERNAL_(BOOL) UtGlobalHandleCpy(HANDLE FAR* lphdst, HANDLE hsrc); FARINTERNAL_(HANDLE) UtDupGlobal (HANDLE hSrc, UINT uiFlags=GMEM_MOVEABLE); FARINTERNAL_(BOOL) UtIsFormatSupported (LPDATAOBJECT lpObj, BOOL fGet, BOOL fSet, CLIPFORMAT cfFormat); FARINTERNAL_(LPSTR) UtDupString(LPCSTR lpszIn); FARINTERNAL_(BOOL) UtCopyFormatEtc(FORMATETC FAR* pFetcIn, FORMATETC FAR* pFetcCopy); FARINTERNAL_(int) UtCompareFormatEtc(FORMATETC FAR* pFetcLeft, FORMATETC FAR* pFetcRight); FARINTERNAL_(BOOL) UtCompareTargetDevice(DVTARGETDEVICE FAR* ptdLeft, DVTARGETDEVICE FAR* ptdRight); FARINTERNAL_(BOOL) UtCopyStatData(STATDATA FAR* pSDIn, STATDATA FAR* pSDCopy); FARINTERNAL_(void) UtReleaseStatData(STATDATA FAR* pStatData); FARINTERNAL_(HPALETTE) UtDupPalette(HPALETTE hpalette); FARINTERNAL_(int) UtPaletteSize (int iBitCount); FARINTERNAL_(DWORD) UtFormatToTymed (CLIPFORMAT cf); FARINTERNAL_(BOOL) UtQueryPictFormat(LPDATAOBJECT lpSrcDataObj, LPFORMATETC lpforetc); FARINTERNAL_(HBITMAP) UtConvertDibToBitmap(HANDLE hDib); FARINTERNAL_(HANDLE) UtConvertBitmapToDib(HBITMAP hBitmapm, HPALETTE hpal = NULL); FARINTERNAL_(void) UtGetClassID(LPUNKNOWN lpUnk, CLSID FAR* lpClsid); FARINTERNAL_(DVTARGETDEVICE FAR*) UtCopyTargetDevice(DVTARGETDEVICE FAR* ptd); FARINTERNAL UtGetIconData(LPDATAOBJECT lpSrcDataObj, REFCLSID rclsid, LPFORMATETC lpforetc, LPSTGMEDIUM lpstgmed); OLEAPI UtDoStreamOperation (LPSTORAGE pstgSrc, LPSTORAGE pstgDst, int iOpCode, DWORD grfAllowedStmTypes); FARINTERNAL_(LPSTR) UtStrRChr (LPCSTR sz, const char ch); FARINTERNAL_(void) UtGetPresStreamName (LPSTR lpszName, int iStreamNum); FARINTERNAL_(void) UtRemoveExtraOlePresStreams (LPSTORAGE pstg, int iStart); /*** Following routines can be found in convert.cpp *****/ FARINTERNAL UtGetHGLOBALFromStm(LPSTREAM lpstream, DWORD dwSize, HANDLE FAR* lphPres); FARINTERNAL UtGetHDIBFromDIBFileStm(LPSTREAM pstm, HANDLE FAR* lphdata); FARINTERNAL_(HANDLE) UtGetHMFPICT(HMETAFILE hMF, BOOL fDeletOnError, DWORD xExt, DWORD yExt); FARINTERNAL UtGetHMFFromMFStm(LPSTREAM lpstream, DWORD dwSize, BOOL fConvert, HANDLE FAR* lphPres); FARINTERNAL UtGetSizeAndExtentsFromPlaceableMFStm(LPSTREAM pstm, DWORD FAR* dwSize, LONG FAR* plWidth, LONG FAR* plHeight); FARINTERNAL UtGetHMFPICTFromPlaceableMFStm(LPSTREAM pstm, HANDLE FAR* lphdata); FARINTERNAL UtHGLOBALToStm(HANDLE hdata, DWORD dwSize, LPSTREAM pstm); FARINTERNAL_(void) UtGetDibExtents (LPBITMAPINFOHEADER lpbmi, LONG FAR* plWidth, LONG FAR* plHeight); FARINTERNAL UtHDIBToDIBFileStm(HANDLE hdata, DWORD dwSize, LPSTREAM pstm); FARINTERNAL UtDIBStmToDIBFileStm(LPSTREAM pstmDIB, DWORD dwSize, LPSTREAM pstmDIBFile); FARINTERNAL UtHDIBFileToOlePresStm(HANDLE hdata, LPSTREAM pstm); FARINTERNAL UtHMFToMFStm(HANDLE FAR* lphMF, DWORD dwSize, LPSTREAM lpstream); FARINTERNAL UtHMFToPlaceableMFStm(HANDLE FAR* lphMF, DWORD dwSize, LONG lWidth, LONG lHeight, LPSTREAM pstm); FARINTERNAL UtMFStmToPlaceableMFStm(LPSTREAM pstmMF, DWORD dwSize, LONG lWidth, LONG lHeight, LPSTREAM pstmPMF); FARINTERNAL UtReadOlePresStmHeader (LPSTREAM pstm, LPFORMATETC pforetc, DWORD FAR* pdwAdvf, BOOL FAR* pfConvert); FARINTERNAL UtWriteOlePresStmHeader(LPSTREAM lppstream, LPFORMATETC pforetc, DWORD dwAdvf); FARINTERNAL UtOlePresStmToContentsStm (LPSTORAGE pstg, LPSTR lpszPresStm, BOOL fDeletePresStm, UINT FAR* puiStatus); /*** Following routines can be found in ..\dde\client\ddecnvrt.cpp *****/ FARINTERNAL UtGetHMFPICTFromMSDrawNativeStm (LPSTREAM pstm, DWORD dwSize, HANDLE FAR* lphdata); FARINTERNAL UtPlaceableMFStmToMSDrawNativeStm (LPSTREAM pstmPMF, LPSTREAM pstmMSDraw); FARINTERNAL UtDIBFileStmToPBrushNativeStm (LPSTREAM pstmDIBFile, LPSTREAM pstmPBrush); FARINTERNAL_(HANDLE) UtGetHPRESFromNative (LPSTORAGE pstg, CLIPFORMAT cfFormat, BOOL fOle10Native); FARINTERNAL UtContentsStmTo10NativeStm (LPSTORAGE pstg, REFCLSID rclsid, BOOL fDeleteContents, UINT FAR* puiStatus); FARINTERNAL Ut10NativeStmToContentsStm(LPSTORAGE pstg, REFCLSID rclsid, BOOL fDeleteSrcStm); #endif // _UTILS_H