/************* * DESCRIPTION: this method is called whenever the user presses return in * the float string object * INPUT: cl class * obj object * msg message * OUTPUT: *************/ static ULONG StringAck(struct IClass *cl,Object *obj,struct opGet *msg) { struct Float_Data *data = (struct Float_Data *)INST_DATA(cl,obj); char *s; float value; char buffer[32]; GetAttr(MUIA_String_Contents,data->fs_gadget,(ULONG*)&s); value = atof(s); if(data->lowerbound && (((value < data->lower) && data->lowerinside) || ((value <= data->lower) && !data->lowerinside))) { value = data->value; Float2String(value, buffer); SetAttrs(data->fs_gadget, MUIA_String_Contents, buffer, TAG_DONE); DisplayBeep(_screen(obj)); } if(data->upperbound && (((value > data->upper) && data->upperinside) || ((value >= data->upper) && !data->upperinside))) { value = data->value; Float2String(value, buffer); SetAttrs(data->fs_gadget, MUIA_String_Contents, buffer, TAG_DONE); DisplayBeep(_screen(obj)); } data->value = value; return 0; }
IPTR Levelmeter__MUIM_Setup(struct IClass *cl, Object *obj, struct MUIP_Setup *msg) { struct Levelmeter_DATA *data = INST_DATA(cl, obj); //struct RastPort rp; IPTR retval; retval = DoSuperMethodA(cl, obj, (Msg)msg); if (retval) { #if 0 InitRastPort(&rp); SetFont(&rp,_font(obj)); DeinitRastPort(&rp); #endif data->levelbgpen = ObtainBestPen(_screen(obj)->ViewPort.ColorMap, 0x4b4b4b4b, 0x39393939, 0x93939393, OBP_FailIfBad, FALSE, OBP_Precision, PRECISION_GUI, TAG_DONE); } return retval; }
static IPTR mLampAskMinMax(struct IClass *cl, Object *obj, struct MUIP_AskMinMax *msg) { struct lampData *data = INST_DATA(cl,obj); struct RastPort rp; struct TextExtent te; UWORD w, h, d; DoSuperMethodA(cl,obj,(APTR)msg); CopyMem(&_screen(obj)->RastPort,&rp,sizeof(rp)); /* Don't ask or modify ! */ SetFont(&rp,_font(obj)); TextExtent(&rp," ",2,&te); w = te.te_Width; h = te.te_Height; if (w>=h) d = w; else d = h; data->delta = te.te_Extent.MinY; msg->MinMaxInfo->MinWidth += d; msg->MinMaxInfo->MinHeight += h; msg->MinMaxInfo->DefWidth += d; msg->MinMaxInfo->DefHeight += h; msg->MinMaxInfo->MaxWidth += d; msg->MinMaxInfo->MaxHeight += h; return 0; }
IPTR Levelmeter__MUIM_Cleanup(struct IClass *cl, Object *obj, struct MUIP_Cleanup *msg) { struct Levelmeter_DATA *data = INST_DATA(cl, obj); if (data->levelbgpen != -1) { ReleasePen(_screen(obj)->ViewPort.ColorMap, data->levelbgpen); data->levelbgpen = -1; } return DoSuperMethodA(cl, obj, (Msg)msg); }
IPTR Colorfield__MUIM_Setup(struct IClass *cl, Object *obj, struct MUIP_Setup *msg) { struct Colorfield_DATA *data = INST_DATA(cl,obj); if (!(DoSuperMethodA(cl, obj, (Msg)msg))) return 0; if (data->flags & FLAG_FIXED_PEN) { SetRGB32(&_screen(obj)->ViewPort, data->pen, data->rgb[0], data->rgb[1], data->rgb[2]); } else { LONG pen; pen = ObtainPen(_screen(obj)->ViewPort.ColorMap, (ULONG)-1, data->rgb[0], data->rgb[1], data->rgb[2], PENF_EXCLUSIVE); if (pen == -1) { data->flags |= FLAG_NO_PEN; data->pen = 0; } else { data->pen = (UBYTE)pen; data->flags |= FLAG_PEN_ALLOCATED; } } return 1; }
IPTR Colorfield__MUIM_Cleanup(struct IClass *cl, Object *obj, struct MUIP_Cleanup *msg) { struct Colorfield_DATA *data = INST_DATA(cl,obj); if (data->flags & FLAG_PEN_ALLOCATED) { ReleasePen(_screen(obj)->ViewPort.ColorMap, data->pen); data->flags &= ~FLAG_PEN_ALLOCATED; data->pen = 0; } data->flags &= ~FLAG_NO_PEN; return DoSuperMethodA(cl, obj, (Msg)msg); }
IPTR Colorfield__OM_SET(struct IClass *cl, Object *obj, struct opSet *msg) { struct Colorfield_DATA *data; const struct TagItem *tags; struct TagItem *tag; ULONG *rgb; BOOL newcol = FALSE; IPTR retval; data = INST_DATA(cl, obj); for (tags = msg->ops_AttrList; (tag = NextTagItem(&tags)); ) { switch (tag->ti_Tag) { case MUIA_Colorfield_Red: data->rgb[0] = (ULONG)tag->ti_Data; newcol = TRUE; break; case MUIA_Colorfield_Green: data->rgb[1] = (ULONG)tag->ti_Data; newcol = TRUE; break; case MUIA_Colorfield_Blue: data->rgb[2] = (ULONG)tag->ti_Data; newcol = TRUE; break; case MUIA_Colorfield_RGB: rgb = (ULONG *)tag->ti_Data; data->rgb[0] = *rgb++; data->rgb[1] = *rgb++; data->rgb[2] = *rgb++; newcol = TRUE; break; case MUIA_Colorfield_Pen: if (data->flags & FLAG_PEN_ALLOCATED) { ReleasePen(_screen(obj)->ViewPort.ColorMap, data->pen); data->flags &= ~(FLAG_PEN_ALLOCATED | FLAG_NO_PEN); } data->pen = (UBYTE)data->pen; data->flags |= FLAG_FIXED_PEN; break; } } retval = DoSuperMethodA(cl, obj, (Msg)msg); if (newcol && (_flags(obj) & MADF_SETUP) && !(data->flags & FLAG_NO_PEN)) { SetRGB32(&_screen(obj)->ViewPort, data->pen, data->rgb[0], data->rgb[1], data->rgb[2]); if (GetBitMapAttr(_rp(obj)->BitMap, BMA_DEPTH) > 8) { MUI_Redraw(obj, MADF_DRAWUPDATE); } } return retval; }
static BOOL MakePopupWin(Object *obj, struct Numericbutton_DATA *data) { const struct ZuneFrameGfx *zframe; struct RastPort *rp, *saverp; LONG winx, winy, winw, winh; LONG framew, frameh; LONG min, max; zframe = zune_zframe_get_with_state(obj, &muiGlobalInfo(obj)->mgi_Prefs->frames[MUIV_Frame_Slider], muiGlobalInfo(obj)->mgi_Prefs->frames[MUIV_Frame_Slider].state); data->pop_innerx = zframe->ileft; data->pop_innery = zframe->itop; data->knob_width = data->max_text_width + 4; data->knob_height = data->text_height + 2; framew = data->pop_innerx + zframe->iright; frameh = data->pop_innery + zframe->ibottom; longget(obj, MUIA_Numeric_Min, &min); longget(obj, MUIA_Numeric_Max, &max); winw = max - min + data->knob_width + framew; winh = data->knob_height + frameh; if (winw > _screen(obj)->Width) { winw = _screen(obj)->Width; } if ((winw < data->knob_width + framew) || (winh > _screen(obj)->Height)) { return FALSE; } data->pop_innerw = winw - framew; data->pop_innerh = winh - frameh; data->knob_left = DoMethod(obj, MUIM_Numeric_ValueToScale, 0, data->pop_innerw - data->knob_width); winx = _window(obj)->LeftEdge + _mleft(obj) - data->pop_innerx - 2 - data->knob_left; winy = _window(obj)->TopEdge + _mtop(obj) - 1- data->pop_innery; data->popwin = OpenWindowTags(NULL, WA_CustomScreen, (IPTR)_screen(obj), WA_Left, winx, WA_Top, winy, WA_Width, winw, WA_Height, winh, WA_AutoAdjust, TRUE, WA_Borderless, TRUE, WA_Activate, FALSE, WA_BackFill, (IPTR)LAYERS_NOBACKFILL, TAG_DONE); if (!data->popwin) { return FALSE; } rp = data->popwin->RPort; saverp = _rp(obj); _rp(obj) = rp; zframe->draw(zframe->customframe, muiRenderInfo(obj), 0, 0, winw, winh, 0, 0, winw, winh); DrawKnob(obj, data, TRUE); _rp(obj) = saverp; return TRUE; }