summaryrefslogtreecommitdiffstats
path: root/private/ole32/ole232/inc/mf.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/ole32/ole232/inc/mf.h')
-rw-r--r--private/ole32/ole232/inc/mf.h177
1 files changed, 177 insertions, 0 deletions
diff --git a/private/ole32/ole232/inc/mf.h b/private/ole32/ole232/inc/mf.h
new file mode 100644
index 000000000..c3e1e7e33
--- /dev/null
+++ b/private/ole32/ole232/inc/mf.h
@@ -0,0 +1,177 @@
+
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: mf.h
+//
+// Contents: Declaration of CMfObject (metafile presentation object)
+//
+// Classes: CMfObject
+//
+// Functions:
+//
+// History: dd-mmm-yy Author Comment
+// 01-Feb-95 t-ScottH add Dump method to CMfObject
+// 24-Jan-94 alexgo first pass converting to Cairo style
+// memory allocation
+// 29-Nov-93 alexgo 32bit port
+//
+//--------------------------------------------------------------------------
+
+#include "olepres.h"
+#include "olecache.h"
+#include "cachenod.h"
+
+#define RECORD_COUNT 16
+
+#ifndef _MAC
+
+typedef struct _METADC
+{
+ int xMwo;
+ int yMwo;
+ int xMwe;
+ int yMwe;
+ int xre;
+ int yre;
+ struct _METADC FAR* pNext;
+} METADC, *PMETADC, FAR* LPMETADC;
+
+typedef struct _METAINFO
+{
+ METADC headDc;
+ int xwo;
+ int ywo;
+ int xwe;
+ int ywe;
+ int xro;
+ int yro;
+} METAINFO, *PMETAINFO, FAR* LPMETAINFO;
+
+#endif
+
+
+//+-------------------------------------------------------------------------
+//
+// Class: CMfObject
+//
+// Purpose: Metafile presentation object
+//
+// Interface: IOlePresObj
+//
+// History: dd-mmm-yy Author Comment
+// 01-Feb-95 t-ScottH add Dump method (_DEBUG only) (this method
+// is also a method in IOlePresObj
+// 29-Nov-93 alexgo 32bit port
+//
+// Notes:
+//
+//--------------------------------------------------------------------------
+
+class FAR CMfObject : public IOlePresObj, public CPrivAlloc
+{
+public:
+ CMfObject(LPCACHENODE pCacheNode, DWORD dwAspect,
+ BOOL fConvert = FALSE);
+ ~CMfObject(void);
+
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj);
+ STDMETHOD_(ULONG,AddRef) (THIS) ;
+ STDMETHOD_(ULONG,Release) (THIS);
+
+ STDMETHOD(GetData) (THIS_ LPFORMATETC pformatetcIn,
+ LPSTGMEDIUM pmedium );
+ STDMETHOD(GetDataHere) (THIS_ LPFORMATETC pformatetcIn,
+ LPSTGMEDIUM pmedium );
+
+ STDMETHOD(SetDataWDO) (THIS_ LPFORMATETC pformatetc,
+ STGMEDIUM FAR * pmedium,
+ BOOL fRelease, IDataObject * pdo);
+
+ STDMETHOD(Draw) (THIS_ void FAR* pvAspect, HDC hicTargetDev,
+ HDC hdcDraw,
+ LPCRECTL lprcBounds,
+ LPCRECTL lprcWBounds,
+ BOOL (CALLBACK * pfnContinue)(DWORD),
+ DWORD dwContinue);
+ STDMETHOD(GetExtent) (THIS_ DWORD dwAspect, LPSIZEL lpsizel);
+ STDMETHOD(Load) (THIS_ LPSTREAM pstm, BOOL fReadHeaderOnly = FALSE);
+ STDMETHOD(Save) (THIS_ LPSTREAM pstm);
+ STDMETHOD(GetColorSet) (void FAR* pvAspect, HDC hicTargetDev,
+ LPLOGPALETTE FAR* ppColorSet);
+ STDMETHOD_(BOOL, IsBlank) (THIS);
+ STDMETHOD_(void, DiscardHPRES)(THIS);
+
+#ifndef _MAC
+ inline int CallbackFuncForDraw(HDC hdc, LPHANDLETABLE lpHTable,
+ LPMETARECORD lpMFR, int nObj);
+
+ inline int CallbackFuncForGetColorSet(HDC hdc, LPHANDLETABLE lpHTable,
+ LPMETARECORD lpMFR, int nObj);
+#endif
+
+ #ifdef _DEBUG
+ STDMETHOD(Dump) (THIS_ char **ppszDump, ULONG ulFlag, int nIndentLevel);
+ #endif // _DEBUG
+
+private:
+
+#ifndef _MAC
+ INTERNAL_(HANDLE) GetHmfp (void);
+ INTERNAL_(BOOL) PopDc (void);
+ INTERNAL_(BOOL) PushDc (void);
+ INTERNAL_(void) CleanStack(void);
+#endif
+
+ INTERNAL ChangeData (HANDLE hMfp, BOOL fDelete);
+ INTERNAL_(HANDLE) LoadHPRES(void);
+ INTERNAL_(HANDLE) GetCopyOfHPRES(void);
+
+ INTERNAL_(void) SetPictOrg (HDC, int, int, BOOL);
+ INTERNAL_(void) SetPictExt (HDC, int, int);
+ INTERNAL_(void) ScalePictExt (HDC, int, int, int, int);
+ INTERNAL_(void) ScaleRectExt (HDC, int, int, int, int);
+
+shared_state:
+ ULONG m_ulRefs;
+#ifdef _MAC
+ PicHandle m_hPres;
+#else
+ HMETAFILE m_hPres;
+
+ // these are used only during draw
+ LPMETAINFO m_pMetaInfo;
+ LPMETADC m_pCurMdc;
+ BOOL m_fMetaDC;
+ int m_nRecord;
+ HRESULT m_error;
+ LPLOGPALETTE m_pColorSet;
+ BOOL m_fConvert;
+#endif
+ BOOL (CALLBACK * m_pfnContinue)(DWORD);
+ DWORD m_dwContinue;
+ DWORD m_dwAspect;
+ DWORD m_dwSize;
+ LONG m_lWidth;
+ LONG m_lHeight;
+ LPCACHENODE m_pCacheNode;
+ HPALETTE m_hPalDCOriginal;
+ HPALETTE m_hPalLast;
+
+};
+
+
+INTERNAL_(DWORD) MfGetSize (LPHANDLE lphmf);
+
+#ifndef _MAC
+FARINTERNAL_(HMETAFILE) QD2GDI(HANDLE);
+
+int CALLBACK __loadds MfCallbackFuncForDraw(HDC hdc, HANDLETABLE FAR* lpHTable,
+ METARECORD FAR* lpMFR, int nObj, LPARAM lpobj);
+
+int CALLBACK __loadds MfCallbackFuncForGetColorSet(HDC hdc,
+ HANDLETABLE FAR* lpHTable,
+ METARECORD FAR* lpMFR, int nObj, LPARAM lpobj);
+#endif