The IM_DRAW method is used to tell the image to render itself. The
Intuition function DrawImageState() uses this method. IM_DRAW receives
the following parameters:
struct impDraw
{
ULONG MethodID;
struct RastPort *imp_RPort;
struct
{
WORD X;
WORD Y;
} imp_Offset;
ULONG imp_State;
struct DrawInfo *imp_DrInfo;
};
The imp_State field contains the visual state to render the image. The
visual states (defined in <intuition/imageclass.h>) are:
IDS_NORMAL idle state
IDS_SELECTED for selected gadgets.
IDS_DISABLED for disabled gadgets.
IDS_BUSY for future functionality
IDS_INDETERMINATE for future functionality
IDS_INACTIVENORMAL normal, in inactive window border.
IDS_INACTIVESELECTED selected, in inactive border.
IDS_INACTIVEDISABLED disabled, in inactive border.
When setting the pens to render an image, use the values from the
imp_DrInfo->dri_Pens pen array (Note that it is possible that imp_DrInfo
will be NULL). The possible pen values are defined in
<intuition/screens.h>.
The following code fragment shows how to use the shadow color for
rendering.
UWORD *pens = (imp->imp_DrInfo) ? imp->imp_DrInfo->dri_Pens : NULL;
if (pens)
{
SetAPen (imp->imp_RPort, pens[SHADOWPEN]);
}
[Back to Amiga Developer Docs]