source: trunk/src/oleaut32/old/iPicture.h@ 10367

Last change on this file since 10367 was 6505, checked in by sandervl, 24 years ago

backup of David's changes

File size: 7.1 KB
Line 
1/* $Id: iPicture.h,v 1.1 2001-08-10 19:24:39 sandervl Exp $ */
2/*
3 * OLE Picture functions private header
4 *
5 * 12/11/99 - New Code
6 *
7 * Copyright 1999 David J. Raison
8 *
9 * Project Odin Software License can be found in LICENSE.TXT
10 *
11 */
12
13#if !defined(IPICTURE_INCLUDED)
14#define IPICTURE_INCLUDED
15
16class IPictureStrat; // Forward defn.
17
18typedef struct IPictureImpl {
19
20 // IUnknown, IPicture
21 ICOM_VTABLE(IPicture) * lpvtbl1;
22
23 // IDispatch, IPictureDisp
24 ICOM_VTABLE(IDispatch) * lpvtbl2;
25
26 // IPersistStream
27 ICOM_VTABLE(IPersistStream) * lpvtbl3;
28
29 ULONG ref; // Reference counter...
30
31 IPictureStrat * pStrat; // Current object strategy.
32
33 union
34 {
35 struct
36 {
37 HBITMAP hbitmap; // Bitmap
38 HPALETTE hpal; // Accompanying palette
39 } bmp;
40
41 struct
42 {
43 HMETAFILE hmeta; // Metafile
44 int xExt;
45 int yExt; // Extent
46 } wmf;
47
48 struct
49 {
50 HICON hicon; // Icon
51 } icon;
52
53 struct
54 {
55 HENHMETAFILE hemf; // Enhanced Metafile
56 } emf;
57 } u;
58
59 BOOL fKeepOriginalFormat;
60 BOOL fOwn;
61 HDC hCurDC;
62 ULONG lAttrib;
63
64} IPictureImpl;
65
66class IPictureStrat
67{
68public:
69 virtual HRESULT get_Handle(OLE_HANDLE * pHandle) = 0;
70 virtual HRESULT get_hPal(OLE_HANDLE * phPal) = 0;
71 virtual HRESULT get_Type(SHORT * pType) = 0;
72 virtual HRESULT get_Width(OLE_XSIZE_HIMETRIC * pWidth) = 0;
73 virtual HRESULT get_Height(OLE_YSIZE_HIMETRIC * pHeight) = 0;
74 virtual HRESULT Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
75 OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
76 OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
77 LPCRECT pRcWBounds) = 0;
78 virtual HRESULT set_hPal(OLE_HANDLE hPal) = 0;
79 virtual HRESULT SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize) = 0;
80 virtual HRESULT get_Attributes(DWORD * pDwAttr) = 0;
81
82 virtual ~IPictureStrat() {};
83
84protected:
85 IPictureStrat(IPictureImpl * a_pPicture) {pPicture = a_pPicture; }
86
87 IPictureImpl * pPicture;
88
89private:
90
91};
92
93// ======================================================================
94// Uninitialised Picture
95// ======================================================================
96
97class IPictureNone : public IPictureStrat
98{
99public:
100 IPictureNone(IPictureImpl * a_pPicture) : IPictureStrat(a_pPicture) {}
101 HRESULT get_Handle(OLE_HANDLE * pHandle);
102 HRESULT get_hPal(OLE_HANDLE * phPal);
103 HRESULT get_Type(SHORT * pType);
104 HRESULT get_Width(OLE_XSIZE_HIMETRIC * pWidth);
105 HRESULT get_Height(OLE_YSIZE_HIMETRIC * pHeight);
106 HRESULT Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
107 OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
108 OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
109 LPCRECT pRcWBounds);
110 HRESULT set_hPal(OLE_HANDLE hPal);
111 HRESULT SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize);
112 HRESULT get_Attributes(DWORD * pDwAttr);
113
114protected:
115
116private:
117
118};
119
120
121// ======================================================================
122// Bitmap Picture
123// ======================================================================
124
125class IPictureBmp : public IPictureStrat
126{
127public:
128 IPictureBmp(IPictureImpl * a_pPicture, HBITMAP hBitmap, HPALETTE hpal);
129 ~IPictureBmp();
130 HRESULT get_Handle(OLE_HANDLE * pHandle);
131 HRESULT get_hPal(OLE_HANDLE * phPal);
132 HRESULT get_Type(SHORT * pType);
133 HRESULT get_Width(OLE_XSIZE_HIMETRIC * pWidth);
134 HRESULT get_Height(OLE_YSIZE_HIMETRIC * pHeight);
135 HRESULT Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
136 OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
137 OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
138 LPCRECT pRcWBounds);
139 HRESULT set_hPal(OLE_HANDLE hPal);
140 HRESULT SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize);
141 HRESULT get_Attributes(DWORD * pDwAttr);
142
143protected:
144
145private:
146
147};
148
149
150// ======================================================================
151// Icon Picture
152// ======================================================================
153
154class IPictureIcon : public IPictureStrat
155{
156public:
157 IPictureIcon(IPictureImpl * a_pPicture, HICON hicon);
158 ~IPictureIcon();
159 HRESULT get_Handle(OLE_HANDLE * pHandle);
160 HRESULT get_hPal(OLE_HANDLE * phPal);
161 HRESULT get_Type(SHORT * pType);
162 HRESULT get_Width(OLE_XSIZE_HIMETRIC * pWidth);
163 HRESULT get_Height(OLE_YSIZE_HIMETRIC * pHeight);
164 HRESULT Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
165 OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
166 OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
167 LPCRECT pRcWBounds);
168 HRESULT set_hPal(OLE_HANDLE hPal);
169 HRESULT get_CurDC(HDC * phDC);
170 HRESULT put_KeepOriginalFormat(BOOL Keep);
171 HRESULT SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize);
172 HRESULT get_Attributes(DWORD * pDwAttr);
173
174protected:
175
176private:
177
178};
179
180// ======================================================================
181// Metafile Picture
182// ======================================================================
183
184class IPictureMeta : public IPictureStrat
185{
186public:
187 IPictureMeta(IPictureImpl * a_pPicture, HMETAFILE hmeta, int xExt, int yExt);
188 ~IPictureMeta();
189 HRESULT get_Handle(OLE_HANDLE * pHandle);
190 HRESULT get_hPal(OLE_HANDLE * phPal);
191 HRESULT get_Type(SHORT * pType);
192 HRESULT get_Width(OLE_XSIZE_HIMETRIC * pWidth);
193 HRESULT get_Height(OLE_YSIZE_HIMETRIC * pHeight);
194 HRESULT Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
195 OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
196 OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
197 LPCRECT pRcWBounds);
198 HRESULT set_hPal(OLE_HANDLE hPal);
199 HRESULT SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize);
200 HRESULT get_Attributes(DWORD * pDwAttr);
201
202protected:
203
204private:
205
206};
207
208// ======================================================================
209// Enhanced Metafile Picture
210// ======================================================================
211
212class IPictureEmf : public IPictureStrat
213{
214public:
215 IPictureEmf(IPictureImpl * a_pPicture, HENHMETAFILE hemf);
216 ~IPictureEmf();
217 HRESULT get_Handle(OLE_HANDLE * pHandle);
218 HRESULT get_hPal(OLE_HANDLE * phPal);
219 HRESULT get_Type(SHORT * pType);
220 HRESULT get_Width(OLE_XSIZE_HIMETRIC * pWidth);
221 HRESULT get_Height(OLE_YSIZE_HIMETRIC * pHeight);
222 HRESULT Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,
223 OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,
224 OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,
225 LPCRECT pRcWBounds);
226 HRESULT set_hPal(OLE_HANDLE hPal);
227 HRESULT SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize);
228 HRESULT get_Attributes(DWORD * pDwAttr);
229
230protected:
231
232private:
233
234};
235
236// Access macros
237#define _ICOM_THIS(class, name) class* This = (class*)name;
238#define _ICOM_THIS_From_IDispatch(class, name) class * This = (class*)(((char*)name)-sizeof(void*));
239#define _ICOM_THIS_From_IPersistStream(class, name) class * This = (class*)(((char*)name)-2*sizeof(void*));
240
241#endif /* IPICTURE_INCLUDED */
Note: See TracBrowser for help on using the repository browser.