IPTR Pendisplay__MUIM_Setup(struct IClass *cl, Object *obj, struct MUIP_Setup *msg) { struct Pendisplay_DATA *data = INST_DATA(cl,obj); if (!(DoSuperMethodA(cl, obj, (Msg)msg))) return 0; if (!data->refobj) { data->pen = MUI_ObtainPen(muiRenderInfo(obj), &data->penspec, 0); } return 1; }
static IPTR mLampSetup(struct IClass *cl, Object *obj, struct MUIP_Setup *msg) { struct lampData *data = INST_DATA(cl,obj); if (!DoSuperMethodA(cl,obj,(APTR)msg)) return FALSE; if (MUIMasterBase->lib_Version<20) { data->enabled = MUI_ObtainPen(muiRenderInfo(obj),(APTR)"r00000000,ffffffff,00000000",0); data->disabled = MUI_ObtainPen(muiRenderInfo(obj),(APTR)"rffffffff,00000000,00000000",0); data->detail = MUI_ObtainPen(muiRenderInfo(obj),(APTR)"r00000000,00000000,00000000",0); } else { data->enabled = MUI_ObtainPen(muiRenderInfo(obj),(APTR)"r02ff00",0); data->disabled = MUI_ObtainPen(muiRenderInfo(obj),(APTR)"rff0000",0); data->detail = MUI_ObtainPen(muiRenderInfo(obj),(APTR)"r000000",0); } SET_FLAG(data->flags, FLG_LampSetup); return TRUE; }
IPTR Pendisplay__OM_SET(struct IClass *cl, Object *obj, struct opSet *msg) { struct Pendisplay_DATA *data; const struct TagItem *tags; struct TagItem *tag; BOOL newcol = FALSE; IPTR retval; data = INST_DATA(cl, obj); for (tags = msg->ops_AttrList; (tag = NextTagItem(&tags)); ) { switch (tag->ti_Tag) { case MUIA_Pendisplay_Reference: if (data->refobj) { DoMethod(data->refobj, MUIM_KillNotifyObj, MUIA_Pendisplay_Spec, (IPTR)obj); } data->refobj = (Object *)tag->ti_Data; if (data->refobj) { DoMethod(data->refobj, MUIM_Notify, MUIA_Pendisplay_Spec, MUIV_EveryTime, (IPTR)obj, 3, MUIM_Set, MUIA_Pendisplay_Spec, MUIV_TriggerValue); } newcol = TRUE; break; case MUIA_Pendisplay_RGBcolor: { struct MUI_RGBcolor *rgb = (struct MUI_RGBcolor *)tag->ti_Data; snprintf(data->penspec.ps_buf, sizeof(data->penspec.ps_buf), "%lc%08lx,%08lx,%08lx", (LONG)PST_RGB, rgb->red, rgb->green, rgb->blue); } newcol = TRUE; break; case MUIA_Pendisplay_Spec: if (tag->ti_Data) { data->penspec = *(struct MUI_PenSpec *)tag->ti_Data; newcol = TRUE; } break; } } retval = DoSuperMethodA(cl, obj, (Msg)msg); if (newcol && (_flags(obj) & MADF_SETUP)) { if (data->pen != -1) { MUI_ReleasePen(muiRenderInfo(obj), data->pen); data->pen = -1; } if (!data->refobj) { data->pen = MUI_ObtainPen(muiRenderInfo(obj), &data->penspec, 0); } MUI_Redraw(obj, MADF_DRAWUPDATE); } return retval; }