void VPictureData_MacPicture::_DoLoad()const { if (fMetaFile) return; VIndex offset = 0; if (fDataProvider && fDataProvider->GetDataSize() && !fPicHandle) { fPicHandle = _BuildPicHandle(); } if (fPicHandle) { #if VERSIONWIN xMacRect rect; rect = (*((xMacPicture**) fPicHandle))->picFrame; //QDGetPictureBounds((qtime::Picture**)fPicHandle,&rect); fBounds.SetCoords(0, 0, rect.right - rect.left, rect.bottom - rect.top); #elif VERSIONMAC Rect rect; QDGetPictureBounds((Picture**) fPicHandle, &rect); fBounds.SetCoords(0, 0, rect.right - rect.left, rect.bottom - rect.top); #endif } if (fPicHandle) { #if VERSIONMAC GetMacAllocator()->Lock(fPicHandle); CGDataProviderRef dataprov = xV4DPicture_MemoryDataProvider::CGDataProviderCreate(*(char**) fPicHandle, GetMacAllocator()->GetSize(fPicHandle), true); GetMacAllocator()->Unlock(fPicHandle); fMetaFile = QDPictCreateWithProvider(dataprov); CGDataProviderRelease(dataprov); #elif VERSIONWIN if (sQDBridge) fMetaFile = sQDBridge->ToMetaFile(fPicHandle); #endif } }
VPictureData_MacPicture::VPictureData_MacPicture(PortRef inPortRef, const VRect& inBounds) { _SetDecoderByExtension(sCodec_pict); fPicHandle = NULL; fMetaFile = NULL; fTrans = NULL; #if VERSIONWIN inPortRef; // pp pour warning inBounds; fGdiplusMetaFile = NULL; #endif #if VERSIONMAC GrafPtr oldPort; GetPort(&oldPort); SetPort(inPortRef); RGBColor saveFore, saveBack, white = { 0xffff, 0xffff, 0xffff }, black = { 0, 0, 0 }; Rect r; inBounds.MAC_ToQDRect(r); GetBackColor(&saveFore); GetForeColor(&saveFore); RGBBackColor(&white); RGBForeColor(&black); PicHandle newPicture = ::OpenPicture(&r); const BitMap* portBits = ::GetPortBitMapForCopyBits(inPortRef); ::ClipRect(&r); ::CopyBits(portBits, portBits, &r, &r, srcCopy, NULL); ::ClosePicture(); RGBBackColor(&saveFore); RGBForeColor(&saveFore); SetPort(oldPort); fPicHandle = newPicture; #if VERSIONWIN qtime::Rect rect; QDGetPictureBounds((qtime::Picture**)fPicHandle, &rect); fBounds.SetCoords(0, 0, rect.right - rect.left, rect.bottom - rect.top); #else Rect rect; QDGetPictureBounds((Picture**) fPicHandle, &rect); fBounds.SetCoords(0, 0, rect.right - rect.left, rect.bottom - rect.top); #endif #if VERSIONMAC if (fPicHandle) { GetMacAllocator()->Lock(fPicHandle); CGDataProviderRef dataprov = xV4DPicture_MemoryDataProvider::CGDataProviderCreate(*(char**) fPicHandle, GetMacAllocator()->GetSize(fPicHandle), true); GetMacAllocator()->Unlock(fPicHandle); fMetaFile = QDPictCreateWithProvider(dataprov); CGDataProviderRelease(dataprov); } #endif #endif }
/* アイコンプレビューのアップデート */ void DrawIPIconPreview(const IPIconRec *ipIcon) { PicHandle previewPict; Rect r; Pattern pat; Boolean drawLarge=false,drawSmall=false,drawThumbnail=false; Handle h; OSErr err; IconSuiteRef iconSuite=NULL; IconRef iconRef; Rect picRect; /* プレビューの大きさ */ GetWindowPortBounds(gPreviewWindow,&r); /* まず背景 */ switch (gListBackground) { case iBackWhite: EraseRect(&r); break; case iBackGray: GetIndPattern(&pat,0,4); FillRect(&r,&pat); break; case iBackBlack: PaintRect(&r); break; case iBackDesktop: #if !TARGET_API_MAC_CARBON { PixPatHandle ppat; UseResFile(0); // ppat=GetPixPat(16); ppat=LMGetDeskCPat(); if (ppat==nil) { LMGetDeskPattern(&pat); FillRect(&r,&pat); } else { FillCRect(&r,ppat); // DisposePixPat(ppat); } UseResFile(gApplRefNum); } #else EraseRect(&r); #endif break; default: EraseRect(&r); break; } if (ipIcon!=NULL) { err=GetDataFromIPIcon(&h,ipIcon,kL1Data); drawLarge=(h!=nil); err=GetDataFromIPIcon(&h,ipIcon,kS1Data); drawSmall=(h!=nil); err=GetDataFromIPIcon(&h,ipIcon,kT32Data); drawThumbnail=(h!=nil); } if (drawThumbnail) previewPict = GetPicture(142); else previewPict = GetPicture(141); QDGetPictureBounds(previewPict, &picRect); DrawPicture(previewPict,&picRect); if (ipIcon==NULL) return; if (!isThumbnailIconsAvailable || !drawThumbnail) { iconSuite = ipIcon->iconSuite; } else { IconFamilyHandle iconFamily; err=IPIconToIconFamily(ipIcon,&iconFamily); err=RegisterIconRefFromIconFamily(kIconPartyCreator,'TEMP',iconFamily,&iconRef); // DisposeHandle((Handle)iconFamily); } if (isThumbnailIconsAvailable && drawThumbnail) { err=PlotIconRef(&iconPreviewRect[12],kAlignNone,kTransformNone,kIconServicesNormalUsageFlag, iconRef); err=ReleaseIconRef(iconRef); } else { if (iconSuite != NULL) { PlotIconSuite(&iconPreviewRect[0],kAlignNone,kTransformNone,iconSuite); PlotIconSuite(&iconPreviewRect[1],kAlignNone,kTransformSelected,iconSuite); if (drawLarge) { PlotIconSuite(&iconPreviewRect[4],kAlignNone,kTransformOpen,iconSuite); PlotIconSuite(&iconPreviewRect[5],kAlignNone,kTransformSelectedOpen,iconSuite); PlotIconSuite(&iconPreviewRect[8],kAlignNone,kTransformOffline,iconSuite); PlotIconSuite(&iconPreviewRect[9],kAlignNone,kTransformSelectedOffline,iconSuite); } PlotIconSuite(&iconPreviewRect[2],kAlignNone,kTransformNone,iconSuite); PlotIconSuite(&iconPreviewRect[3],kAlignNone,kTransformSelected,iconSuite); if (drawSmall) { PlotIconSuite(&iconPreviewRect[6],kAlignNone,kTransformOpen,iconSuite); PlotIconSuite(&iconPreviewRect[7],kAlignNone,kTransformSelectedOpen,iconSuite); PlotIconSuite(&iconPreviewRect[10],kAlignNone,kTransformOffline,iconSuite); PlotIconSuite(&iconPreviewRect[11],kAlignNone,kTransformSelectedOffline,iconSuite); } } } }