Autodocs Libraries:
icon.library AddFreeList BumpRevision ChangeToSelectedIconColor DeleteDiskObject DrawIconStateA DupDiskObjectA FindToolType FreeDiskObject FreeFreeList GetDefDiskObject GetDiskObject GetDiskObjectNew GetIconRectangleA GetIconTagList IconControlA LayoutIconA MatchToolValue NewDiskObject PutDefDiskObject PutDiskObject PutIconTagList Include GuruMeditation
|
Docs » Autodocs » icon.library » LayoutIconA
LayoutIconA -- Adapt a palette-mapped icon for display (V44)
success = LayoutIconA(icon,screen,tags); D0 A0 A1 A2 BOOL LayoutIconA(struct DiskObject *icon,struct Screen *screen, struct TagItem *tags); success = LayoutIcon(icon,screen,...); BOOL LayoutIcon(struct DiskObject *icon,struct Screen *screen,...);
This function will prepare an icon for display, either on a specific screen or using a default colour palette. It is useful only for palette mapped icons.
icon -- The icon to be remapped. This must be a palette mapped icon. screen -- Pointer to a screen to remap the icon for or NULL to remap the icon to use the system default colour palette or something very similar to it (this means: four colours only). tags -- Additional rendering options.
OBP_Precision (LONG) -- Pen colour allocation precision. Default is the same precision as set in the global icon.library settings (see IconControlA()).
success -- TRUE if the icon could be remapped, FALSE if the remapping failed for some reason. In case of of failure, icon.library will try its best to keep the icon in a presentable state, but this may fail. In case of failure, the error code can be retrieved using dos.library/IoErr.
You must make sure that the screen you remap to does not go away while there is an icon to use its colours. For a public screen, the easiest way to guarantee this is to keep it locked (see intuition.library/LockPubScreen). For custom screens, just don't close them! If you have to close the screen or need to keep your icon around until after a screen is closed, you should call LayoutIcon() with a NULL screen parameter. This will release all pens the icon has allocated and remap the icon to a default set of colours. Alternatively, you can dispose of the icon via FreeDiskObject() which will also release all pens the icon has allocated, including the icon itself, of course. Icons remapped to the global default screen (normally, that would be the Workbench screen) may get changed and remapped again during Workbench close/open transitions. To prevent this from taking place, just make sure that the Workbench screen does not close (e.g. via LockPubScreen("Workbench")). The sizes of the bitmapped icon imagery and the palette mapped icon imagery may not agree. Thus, the size of the icon may be reported differently before and after LayoutIconA() is called. Therefore, don't cache the icon size if you must call LayoutIconA()! First call LayoutIconA(), then determine the size of the icon.
dos.library/IoErr(), graphics.library/ObtainBestPenA(), graphics.library/ReleasePen(), icon.library/FreeDiskObject(), icon.library/GetIconRectangleA(), icon.library/GetIconTagList(), icon.library/IconControl, intuition.library/LockPubScreen(), intuition.library/UnlockPubScreen(), <graphics/view.h>
|