- Timestamp:
- Nov 23, 1999, 9:46:04 PM (26 years ago)
- Location:
- trunk/src/oleaut32
- Files:
-
- 5 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/oleaut32/iPicture.cpp
r1743 r1824 1 /* $Id: iPicture.cpp,v 1. 2 1999-11-14 21:05:08davidr Exp $ */1 /* $Id: iPicture.cpp,v 1.3 1999-11-23 20:45:23 davidr Exp $ */ 2 2 /* 3 3 * OLE Picture functions … … 34 34 static void IPictureImpl_Destructor(IPictureImpl * obj); 35 35 36 static ULONG WIN32API IPictureImpl_AddRef(LPPICTURE iface);37 36 static HRESULT WIN32API IPictureImpl_QueryInterface(LPPICTURE iface, 38 37 REFIID refiid, LPVOID * obj); … … 162 161 163 162 // ---------------------------------------------------------------------- 164 // Uninitialised Picture165 // ----------------------------------------------------------------------166 HRESULT IPictureNone::get_Handle(OLE_HANDLE * pHandle)167 {168 *pHandle = 0;169 return E_FAIL;170 }171 172 HRESULT IPictureNone::get_hPal(OLE_HANDLE * phPal)173 {174 *phPal = 0;175 return E_FAIL;176 }177 178 HRESULT IPictureNone::get_Type(SHORT * pType)179 {180 *pType = PICTYPE_UNINITIALIZED;181 return S_OK;182 }183 184 HRESULT IPictureNone::get_Width(OLE_XSIZE_HIMETRIC * pWidth)185 {186 *pWidth = 0;187 return E_FAIL;188 }189 190 HRESULT IPictureNone::get_Height(OLE_YSIZE_HIMETRIC * pHeight)191 {192 *pHeight = 0;193 return E_FAIL;194 }195 196 HRESULT IPictureNone::Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,197 OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,198 OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,199 LPCRECT pRcWBounds)200 {201 return E_FAIL;202 }203 204 HRESULT IPictureNone::set_hPal(OLE_HANDLE hPal)205 {206 return E_FAIL;207 }208 209 HRESULT IPictureNone::SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize)210 {211 return E_FAIL;212 }213 214 HRESULT IPictureNone::get_Attributes(DWORD * pDwAttr)215 {216 *pDwAttr = 0;217 return S_OK;218 }219 220 IPictureBmp::IPictureBmp(IPictureImpl * a_pPicture, HBITMAP hbitmap, HPALETTE hpal)221 : IPictureStrat(a_pPicture)222 {223 pPicture->u.bmp.hbitmap = hbitmap;224 pPicture->u.bmp.hpal = hpal;225 }226 227 // ----------------------------------------------------------------------228 // Icon Picture229 // ----------------------------------------------------------------------230 IPictureBmp::~IPictureBmp()231 {232 if (pPicture->fOwn)233 {234 // Free bitmap...235 DeleteObject(pPicture->u.bmp.hbitmap);236 DeleteObject(pPicture->u.bmp.hpal);237 }238 }239 240 HRESULT IPictureBmp::get_Handle(OLE_HANDLE * pHandle)241 {242 *pHandle = pPicture->u.bmp.hbitmap;243 return S_OK;244 }245 246 HRESULT IPictureBmp::get_hPal(OLE_HANDLE * phPal)247 {248 *phPal = pPicture->u.bmp.hpal;249 return S_OK;250 }251 252 HRESULT IPictureBmp::get_Type(SHORT * pType)253 {254 *pType = PICTYPE_BITMAP;255 return S_OK;256 }257 258 HRESULT IPictureBmp::get_Width(OLE_XSIZE_HIMETRIC * pWidth)259 {260 SIZE size;261 262 if (GetBitmapDimensionEx( pPicture->u.bmp.hbitmap, &size) == 0)263 {264 *pWidth = 0;265 return E_FAIL;266 }267 268 *pWidth = size.cx;269 270 return S_OK;271 }272 273 HRESULT IPictureBmp::get_Height(OLE_YSIZE_HIMETRIC * pHeight)274 {275 SIZE size;276 277 if (GetBitmapDimensionEx( pPicture->u.bmp.hbitmap, &size) == 0)278 {279 *pHeight = 0;280 return E_FAIL;281 }282 283 *pHeight = size.cy;284 285 return S_OK;286 }287 288 HRESULT IPictureBmp::Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,289 OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,290 OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,291 LPCRECT pRcWBounds)292 {293 return E_FAIL;294 }295 296 HRESULT IPictureBmp::set_hPal(OLE_HANDLE hPal)297 {298 pPicture->u.bmp.hpal = hPal;299 return S_OK;300 }301 302 HRESULT IPictureBmp::SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize)303 {304 return E_FAIL;305 }306 307 HRESULT IPictureBmp::get_Attributes(DWORD * pDwAttr)308 {309 // Although bitmaps may be scaled, it is really stretching.310 *pDwAttr = 0;311 return S_OK;312 }313 314 // ----------------------------------------------------------------------315 // Metafile Picture316 // ----------------------------------------------------------------------317 IPictureIcon::IPictureIcon(IPictureImpl * a_pPicture, HICON hicon)318 : IPictureStrat(a_pPicture)319 {320 pPicture->u.icon.hicon = hicon;321 }322 323 IPictureIcon::~IPictureIcon()324 {325 if (pPicture->fOwn)326 {327 // Free icon...328 DestroyIcon(pPicture->u.icon.hicon);329 }330 }331 332 HRESULT IPictureIcon::get_Handle(OLE_HANDLE * pHandle)333 {334 *pHandle = pPicture->u.icon.hicon;335 return S_OK;336 }337 338 HRESULT IPictureIcon::get_hPal(OLE_HANDLE * phPal)339 {340 *phPal = 0;341 return S_OK;342 }343 344 HRESULT IPictureIcon::get_Type(SHORT * pType)345 {346 *pType = PICTYPE_ICON;347 return S_OK;348 }349 350 HRESULT IPictureIcon::get_Width(OLE_XSIZE_HIMETRIC * pWidth)351 {352 // FIXME - Read from system constants...353 *pWidth = 32;354 355 return S_OK;356 }357 358 HRESULT IPictureIcon::get_Height(OLE_YSIZE_HIMETRIC * pHeight)359 {360 // FIXME - Read from system constants...361 *pHeight = 32;362 363 return S_OK;364 }365 366 HRESULT IPictureIcon::Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,367 OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,368 OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,369 LPCRECT pRcWBounds)370 {371 return E_FAIL;372 }373 374 HRESULT IPictureIcon::set_hPal(OLE_HANDLE hPal)375 {376 return E_FAIL;377 }378 379 HRESULT IPictureIcon::SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize)380 {381 return E_FAIL;382 }383 384 HRESULT IPictureIcon::get_Attributes(DWORD * pDwAttr)385 {386 *pDwAttr = PICTURE_TRANSPARENT;387 return S_OK;388 }389 390 // ----------------------------------------------------------------------391 // Enhanced Metafile Picture392 // ----------------------------------------------------------------------393 394 IPictureMeta::IPictureMeta(IPictureImpl * a_pPicture, HMETAFILE hmeta, int xExt, int yExt)395 : IPictureStrat(a_pPicture)396 {397 pPicture->u.wmf.hmeta = hmeta;398 pPicture->u.wmf.xExt = xExt;399 pPicture->u.wmf.yExt = yExt;400 }401 402 IPictureMeta::~IPictureMeta()403 {404 if (pPicture->fOwn)405 {406 // Free metafile...407 DeleteMetaFile(pPicture->u.wmf.hmeta);408 }409 }410 411 HRESULT IPictureMeta::get_Handle(OLE_HANDLE * pHandle)412 {413 *pHandle = pPicture->u.wmf.hmeta;414 return S_OK;415 }416 417 HRESULT IPictureMeta::get_hPal(OLE_HANDLE * phPal)418 {419 *phPal = 0;420 return E_FAIL;421 }422 423 HRESULT IPictureMeta::get_Type(SHORT * pType)424 {425 *pType = PICTYPE_METAFILE;426 return S_OK;427 }428 429 HRESULT IPictureMeta::get_Width(OLE_XSIZE_HIMETRIC * pWidth)430 {431 *pWidth = pPicture->u.wmf.xExt;432 return S_OK;433 }434 435 HRESULT IPictureMeta::get_Height(OLE_YSIZE_HIMETRIC * pHeight)436 {437 *pHeight = pPicture->u.wmf.yExt;438 return S_OK;439 }440 441 HRESULT IPictureMeta::Render(HDC hdc, LONG x, LONG y, LONG cx, LONG cy,442 OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc,443 OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc,444 LPCRECT pRcWBounds)445 {446 return E_FAIL;447 }448 449 HRESULT IPictureMeta::set_hPal(OLE_HANDLE hPal)450 {451 return E_FAIL;452 }453 454 HRESULT IPictureMeta::SaveAsFile(LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize)455 {456 return E_FAIL;457 }458 459 HRESULT IPictureMeta::get_Attributes(DWORD * pDwAttr)460 {461 *pDwAttr = PICTURE_SCALEABLE | PICTURE_TRANSPARENT;462 return S_OK;463 }464 465 // ----------------------------------------------------------------------466 163 // IPictureImpl_QueryInterface 467 164 // ---------------------------------------------------------------------- 468 165 static IPictureImpl * IPictureImpl_Constructor(LPPICTDESC description, BOOL fOwn) 469 166 { 470 IPictureImpl * newObject;167 IPictureImpl * pNewObject; 471 168 472 169 // Allocate a new object on the heap... 473 if (( newObject = (IPictureImpl *)HeapAlloc(GetProcessHeap(), 0, sizeof(IPictureImpl))) == 0)170 if ((pNewObject = (IPictureImpl *)HeapAlloc(GetProcessHeap(), 0, sizeof(IPictureImpl))) == 0) 474 171 return 0; 475 172 476 dprintf(("OLEAUT32: IPictureImpl(%p)->Contructor(fOwn = %d)\n", newObject, fOwn));173 dprintf(("OLEAUT32: IPictureImpl(%p)->Contructor(fOwn = %d)\n", pNewObject, fOwn)); 477 174 478 175 // Initialise the vft's 479 newObject->lpvtbl1 = &IPictureImpl_VTable;480 newObject->lpvtbl2 = &IPictureImpl_IDispatch_VTable;481 newObject->lpvtbl3 = &IPictureImpl_IPersistStream_VTable;176 pNewObject->lpvtbl1 = &IPictureImpl_VTable; 177 pNewObject->lpvtbl2 = &IPictureImpl_IDispatch_VTable; 178 pNewObject->lpvtbl3 = &IPictureImpl_IPersistStream_VTable; 482 179 483 180 // Initial reference count of 1... 484 newObject->ref = 1;485 newObject->fOwn = fOwn;181 pNewObject->ref = 1; 182 pNewObject->fOwn = fOwn; 486 183 487 184 // If a description is not passed then leave the picture uninitialised... 488 185 if (description == 0) 489 newObject->pStrat = new IPictureNone(newObject);186 pNewObject->pStrat = new IPictureNone(pNewObject); 490 187 else 491 188 { … … 493 190 if (description->cbSizeofstruct < sizeof(PICTDESC)) 494 191 { 495 dprintf(("OLEAUT32: IPictureImpl(%p)->Constructor - Invalid cbSizeofstruct!", newObject));192 dprintf(("OLEAUT32: IPictureImpl(%p)->Constructor - Invalid cbSizeofstruct!", pNewObject)); 496 193 return 0; 497 194 } … … 499 196 { 500 197 case PICTYPE_BITMAP: 501 newObject->pStrat = new IPictureBmp(502 newObject,198 pNewObject->pStrat = new IPictureBmp( 199 pNewObject, 503 200 description->u.bmp.hbitmap, 504 201 description->u.bmp.hpal); … … 506 203 507 204 case PICTYPE_METAFILE: 508 newObject->pStrat = new IPictureMeta(newObject,205 pNewObject->pStrat = new IPictureMeta(pNewObject, 509 206 description->u.wmf.hmeta, 510 207 description->u.wmf.xExt, … … 513 210 514 211 case PICTYPE_ICON: 515 newObject->pStrat = new IPictureIcon(newObject,212 pNewObject->pStrat = new IPictureIcon(pNewObject, 516 213 description->u.icon.hicon); 517 214 break; 518 215 519 216 case PICTYPE_ENHMETAFILE: 520 newObject->pStrat = new IPictureIcon(newObject,217 pNewObject->pStrat = new IPictureIcon(pNewObject, 521 218 description->u.emf.hemf); 522 219 break; … … 524 221 default: 525 222 // assume uninitialised... 526 newObject->pStrat = new IPictureNone(newObject);223 pNewObject->pStrat = new IPictureNone(pNewObject); 527 224 break; 528 225 } 529 226 } 530 227 531 return newObject;228 return pNewObject; 532 229 } 533 230 … … 535 232 // IPictureImpl_QueryInterface 536 233 // ---------------------------------------------------------------------- 537 static void IPictureImpl_Destructor(IPictureImpl * obj)538 { 539 dprintf(("OLEAUT32: IPictureImpl(%p)->Destructor()\n", obj));540 541 delete obj->pStrat;542 543 HeapFree(GetProcessHeap(), 0, obj);234 static void IPictureImpl_Destructor(IPictureImpl * This) 235 { 236 dprintf(("OLEAUT32: IPictureImpl(%p)->Destructor()\n", This)); 237 238 delete This->pStrat; 239 240 HeapFree(GetProcessHeap(), 0, This); 544 241 } 545 242 -
trunk/src/oleaut32/iPicture.h
r1743 r1824 1 /* $Id: iPicture.h,v 1. 2 1999-11-14 21:04:43davidr Exp $ */1 /* $Id: iPicture.h,v 1.3 1999-11-23 20:46:04 davidr Exp $ */ 2 2 /* 3 3 * OLE Picture functions private header … … 60 60 BOOL fOwn; 61 61 HDC hCurDC; 62 DWORDlAttrib;62 ULONG lAttrib; 63 63 64 64 } IPictureImpl; … … 234 234 }; 235 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 236 // Access macros 306 237 #define _ICOM_THIS(class, name) class* This = (class*)name;
Note:
See TracChangeset
for help on using the changeset viewer.