Changeset 1743 for trunk/src/oleaut32/iPicture.h
- Timestamp:
- Nov 14, 1999, 10:07:18 PM (26 years ago)
- File:
-
- 1 edited
-
trunk/src/oleaut32/iPicture.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/oleaut32/iPicture.h
r1729 r1743 1 /* $Id: iPicture.h,v 1. 1 1999-11-14 01:26:36davidr Exp $ */1 /* $Id: iPicture.h,v 1.2 1999-11-14 21:04:43 davidr Exp $ */ 2 2 /* 3 3 * OLE Picture functions private header … … 14 14 #define IPICTURE_INCLUDED 15 15 16 #define PICTYPE_UNINITIALIZED (-1) 17 #define PICTYPE_NONE 0 18 #define PICTYPE_BITMAP 1 19 #define PICTYPE_METAFILE 2 20 #define PICTYPE_ICON 3 21 #define PICTYPE_ENHMETAFILE 4 22 23 typedef struct tagPICTDESC 24 { 25 UINT cbSizeofstruct; 26 UINT picType; 16 class IPictureStrat; // Forward defn. 17 18 typedef 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 27 33 union 28 34 { … … 51 57 } u; 52 58 53 } PICTDESC, * LPPICTDESC; 59 BOOL fKeepOriginalFormat; 60 BOOL fOwn; 61 HDC hCurDC; 62 DWORD lAttrib; 63 64 } IPictureImpl; 65 66 class IPictureStrat 67 { 68 public: 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 84 protected: 85 IPictureStrat(IPictureImpl * a_pPicture) {pPicture = a_pPicture; } 86 87 IPictureImpl * pPicture; 88 89 private: 90 91 }; 92 93 // ====================================================================== 94 // Uninitialised Picture 95 // ====================================================================== 96 97 class IPictureNone : public IPictureStrat 98 { 99 public: 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 114 protected: 115 116 private: 117 118 }; 119 120 121 // ====================================================================== 122 // Bitmap Picture 123 // ====================================================================== 124 125 class IPictureBmp : public IPictureStrat 126 { 127 public: 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 143 protected: 144 145 private: 146 147 }; 148 149 150 // ====================================================================== 151 // Icon Picture 152 // ====================================================================== 153 154 class IPictureIcon : public IPictureStrat 155 { 156 public: 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 174 protected: 175 176 private: 177 178 }; 179 180 // ====================================================================== 181 // Metafile Picture 182 // ====================================================================== 183 184 class IPictureMeta : public IPictureStrat 185 { 186 public: 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 202 protected: 203 204 private: 205 206 }; 207 208 // ====================================================================== 209 // Enhanced Metafile Picture 210 // ====================================================================== 211 212 class IPictureEmf : public IPictureStrat 213 { 214 public: 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 230 protected: 231 232 private: 233 234 }; 235 236 IPictureEmf::IPictureEmf(IPictureImpl * a_pPicture, HENHMETAFILE hemf) 237 : IPictureStrat(a_pPicture) 238 { 239 pPicture->u.emf.hemf = hemf; 240 } 241 242 IPictureEmf::~IPictureEmf() 243 { 244 if (pPicture->fOwn) 245 { 246 // Free metafile... 247 DeleteEnhMetaFile(pPicture->u.emf.hemf); 248 } 249 } 250 251 HRESULT IPictureEmf::get_Handle(OLE_HANDLE * pHandle) 252 { 253 *pHandle = pPicture->u.emf.hemf; 254 return S_OK; 255 } 256 257 HRESULT IPictureEmf::get_hPal(OLE_HANDLE * phPal) 258 { 259 *phPal = 0; 260 return S_OK; 261 } 262 263 HRESULT IPictureEmf::get_Type(SHORT * pType) 264 { 265 *pType = PICTYPE_ENHMETAFILE; 266 return S_OK; 267 } 268 269 HRESULT IPictureEmf::get_Width(OLE_XSIZE_HIMETRIC * pWidth) 270 { 271 *pWidth = 0; 272 return E_FAIL; 273 } 274 275 HRESULT IPictureEmf::get_Height(OLE_YSIZE_HIMETRIC * pHeight) 276 { 277 *pHeight = 0; 278 return E_FAIL; 279 } 280 281 HRESULT IPictureEmf::Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy, 282 OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc, 283 OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc, 284 LPCRECT pRcWBounds) 285 { 286 return E_FAIL; 287 } 288 289 HRESULT IPictureEmf::set_hPal(OLE_HANDLE hPal) 290 { 291 return E_FAIL; 292 } 293 294 HRESULT IPictureEmf::SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize) 295 { 296 return E_FAIL; 297 } 298 299 HRESULT IPictureEmf::get_Attributes(DWORD * pDwAttr) 300 { 301 *pDwAttr = PICTURE_SCALEABLE | PICTURE_TRANSPARENT; 302 return S_OK; 303 } 304 305 // Access macros 306 #define _ICOM_THIS(class, name) class* This = (class*)name; 307 #define _ICOM_THIS_From_IDispatch(class, name) class * This = (class*)(((char*)name)-sizeof(void*)); 308 #define _ICOM_THIS_From_IPersistStream(class, name) class * This = (class*)(((char*)name)-2*sizeof(void*)); 54 309 55 310 #endif /* IPICTURE_INCLUDED */
Note:
See TracChangeset
for help on using the changeset viewer.
