|
|
/* ostm2stg.h
Used by ostm2stg.cpp only
Defines a generic object structure which stores all the data necessary to construct either a 2.0 IStorage or a 1.0 OLESTREAM */
#define OLE_PRESENTATION_STREAM_1 OLESTR("\2OlePres001")
// We will need to do conversions to and from WIN16 and WIN32 bitmaps, so
// define what a BITMAP used to be under WIN16 (Same for METAFILEPICT).
#pragma pack(1) // Ensure the structure is not expanded
// for alignment reasons
typedef struct tagWIN16BITMAP { short bmType; short bmWidth; short bmHeight; short bmWidthBytes; BYTE bmPlanes; BYTE bmBitsPixel; void FAR* bmBits; } WIN16BITMAP, * LPWIN16BITMAP;
typedef struct tagWIN16METAFILEPICT { short mm; short xExt; short yExt; WORD hMF; } WIN16METAFILEPICT, * LPWIN16METAFILEPICT;
#pragma pack() // Resume normal packing
// Version number written to stream, From OLE 1.0 ole.h
const DWORD dwVerToFile = 0x0501;
typedef enum { ctagNone, ctagCLSID, ctagString } CLASSTAG; typedef enum { ftagNone, ftagClipFormat, ftagString } FORMATTAG;
class CClass : public CPrivAlloc { public: CLSID m_clsid; // These two should always represent
LPOLESTR m_szClsid; // the same CLSID
INTERNAL Set (REFCLSID clsid, LPSTORAGE pstg); INTERNAL SetSz (LPOLESTR pcsz); INTERNAL Reset (REFCLSID clsid); CClass (void); ~CClass (void);
}; typedef CClass CLASS;
class CData : public CPrivAlloc { public: ULONG m_cbSize; LPVOID m_pv; // the same memory
HANDLE m_h; BOOL m_fNoFree; // Free memory in destructor?
CData (void); ~CData (void); }; typedef CData DATA; typedef CData *PDATA;
class CFormat : public CPrivAlloc { public: FORMATTAG m_ftag; struct { CLIPFORMAT m_cf; DATA m_dataFormatString; };
CFormat (void); inline BOOL operator== (const CFormat FAR&) { Win4Assert(0 && "Format == Used"); return FALSE; }; }; typedef CFormat FORMAT; typedef CFormat *PFORMAT;
class CPres : public CPrivAlloc { public: FORMAT m_format; ULONG m_ulHeight; ULONG m_ulWidth; DATA m_data;
CPres (void); }; typedef CPres PRES; typedef CPres *PPRES;
// OLE 1.0 values. Used in m_lnkupdopt
#define UPDATE_ALWAYS 0L
#define UPDATE_ONSAVE 1L
#define UPDATE_ONCALL 2L
#define UPDATE_ONCLOSE 3L
// OLE 1.0 format id's
// These never change.
#define FMTID_LINK 1L
#define FMTID_EMBED 2L
#define FMTID_STATIC 3L
#define FMTID_PRES 5L
class CGenericObject : CPrivAlloc { public: CLASS m_class; CLASS m_classLast; PPRES m_ppres; DATA m_dataNative; BOOL m_fLink; BOOL m_fStatic; BOOL m_fNoBlankPres; LPOLESTR m_szTopic; LPOLESTR m_szItem; ULONG m_lnkupdopt;
CGenericObject (void); ~CGenericObject (void); }; typedef CGenericObject GENOBJ; typedef CGenericObject FAR* PGENOBJ; typedef const GENOBJ FAR * PCGENOBJ;
static INTERNAL OLESTREAMToGenericObject (LPOLESTREAM pos, PGENOBJ pgenobj) ;
static INTERNAL GetStaticObject (LPOLESTREAM pos, PGENOBJ pgenobj) ;
static INTERNAL GetPresentationObject (LPOLESTREAM pos, PGENOBJ pgenobj, BOOL fStatic = FALSE) ;
static INTERNAL GetStandardPresentation (LPOLESTREAM pos, PGENOBJ pgenobj, CLIPFORMAT cf) ;
static INTERNAL GetGenericPresentation (LPOLESTREAM pos, PGENOBJ pgenobj) ;
static INTERNAL GetSizedDataOLE1Stm (LPOLESTREAM pos, PDATA pdata) ;
static INTERNAL OLE1StreamToUL (LPOLESTREAM pos, ULONG FAR* pul) ;
static INTERNAL GenericObjectToOLESTREAM (const GENOBJ FAR& genobj, LPOLESTREAM pos) ;
static INTERNAL OLE1StmToString (LPOLESTREAM pos, LPOLESTR FAR* psz) ;
static INTERNAL PutPresentationObject (LPOLESTREAM pos, const PRES FAR* pres, const CLASS FAR& cls, BOOL fStatic = FALSE) ;
static INTERNAL PutStandardPresentation (LPOLESTREAM pos, const PRES FAR* pres) ;
static INTERNAL PutGenericPresentation (LPOLESTREAM pos, const PRES FAR* pres, LPCOLESTR szClass) ;
static INTERNAL StringToOLE1Stm (LPOLESTREAM pos, LPCOLESTR sz) ;
static INTERNAL SizedDataToOLE1Stm (LPOLESTREAM pos, const DATA FAR& data) ;
static INTERNAL PutNetworkInfo (LPOLESTREAM pos, LPOLESTR szTopic) ;
static INTERNAL Read20OleStream (LPSTORAGE pstg, PGENOBJ pgenobj) ;
static INTERNAL Read20PresStream (LPSTORAGE pstg, PGENOBJ pgenobj, BOOL fObjFmtKnown) ;
static INTERNAL StorageToGenericObject (LPSTORAGE pstg, PGENOBJ pgenobj) ;
static INTERNAL MonikerIntoGenObj (PGENOBJ pgenobj, REFCLSID clsidLast, LPMONIKER pmk) ;
static INTERNAL OLE2StmToSizedData (LPSTREAM pstm, PDATA pdata, ULONG cbSizeDelta=0, ULONG cbSizeKnown=0) ;
static INTERNAL Read20NativeStreams (LPSTORAGE pstg, PDATA pdata) ;
static INTERNAL GenObjToOLE2Stm (LPSTORAGE pstg, const GENOBJ FAR& genobj) ;
FARINTERNAL GenericObjectToIStorage (const GENOBJ FAR& genobj, LPSTORAGE pstg, const DVTARGETDEVICE FAR* ptd) ;
static INTERNAL PresToNewOLE2Stm (LPSTORAGE pstg, BOOL fLink, const PRES FAR& pres, const DVTARGETDEVICE FAR* ptd, LPOLESTR szStream, BOOL fPBrushNative = FALSE); ;
static INTERNAL PresToIStorage (LPSTORAGE pstg, const GENOBJ FAR& genobj, const DVTARGETDEVICE FAR* ptd) ;
static INTERNAL Write20NativeStreams (LPSTORAGE pstg, const GENOBJ FAR& genobj) ;
static INTERNAL WriteFormat (LPSTREAM pstm, const FORMAT FAR& format) ;
static INTERNAL ReadFormat (LPSTREAM pstm, PFORMAT pformat) ;
static INTERNAL DataObjToOLE2Stm (LPSTREAM pstm, const DATA FAR& data) ;
static INTERNAL OLE2StmToUL (LPSTREAM pstm, ULONG FAR* pul) ;
inline static INTERNAL ULToOLE2Stm (LPSTREAM pstm, ULONG ul) ;
inline static INTERNAL FTToOle2Stm (LPSTREAM pstm);
static INTERNAL FindPresStream (LPSTORAGE pstg, LPSTREAM FAR* ppstm, BOOL fObjFmtKnown) ;
static INTERNAL MonikerToOLE2Stm (LPSTREAM pstm, LPOLESTR szFile, LPOLESTR szItem, CLSID clsid) ;
static INTERNAL OLE2StmToMoniker (LPSTREAM pstm, LPMONIKER FAR* ppmk) ;
static INTERNAL ReadRealClassStg (LPSTORAGE pstg, LPCLSID pclsid) ;
INTERNAL wCLSIDFromProgID(LPOLESTR szClass, LPCLSID pclsid, BOOL fForceAssign);
INTERNAL wProgIDFromCLSID (REFCLSID clsid, LPOLESTR FAR* pszClass) ;
INTERNAL wWriteFmtUserType (LPSTORAGE, REFCLSID) ;
INTERNAL_(BOOL) wIsValidHandle (HANDLE h, CLIPFORMAT cf) ;
inline INTERNAL_(VOID) ConvertBM32to16(LPBITMAP lpsrc, LPWIN16BITMAP lpdest); inline INTERNAL_(VOID) ConvertBM16to32(LPWIN16BITMAP lpsrc, LPBITMAP lpdest); inline INTERNAL_(VOID) ConvertMF16to32( LPWIN16METAFILEPICT lpsrc, LPMETAFILEPICT lpdest ); inline INTERNAL_(VOID) ConvertMF32to16( LPMETAFILEPICT lpsrc, LPWIN16METAFILEPICT lpdest );
|