static PyObject *Icn_PlotIconSuite(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; Rect theRect; IconAlignmentType align; IconTransformType transform; IconSuiteRef theIconSuite; #ifndef PlotIconSuite PyMac_PRECHECK(PlotIconSuite); #endif if (!PyArg_ParseTuple(_args, "O&hhO&", PyMac_GetRect, &theRect, &align, &transform, ResObj_Convert, &theIconSuite)) return NULL; _err = PlotIconSuite(&theRect, align, transform, theIconSuite); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; }
/* アイコンプレビューのアップデート */ 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); } } } }