Example #1
0
static ULONG
MUIPC_LButton__OM_SET(struct IClass *CLASS,Object *self,struct opSet *message)
{
    struct MiamiPanelLButtonClass_DATA    *data = INST_DATA(CLASS,self);
    struct TagItem *tag;

    if (tag = FindTagItem(MPA_LButton_State,message->ops_AttrList))
    {
        UBYTE  *text;
        ULONG  color, dis;

        switch (tag->ti_Data)
        {
            case MIAMIPANELV_AddInterface_State_GoingOnline:
                color = MUIV_Lamp_Color_Error;
                text  = offs;
                dis   = FALSE;
                break;

            case MIAMIPANELV_AddInterface_State_GoingOffline:
                color = MUIV_Lamp_Color_Warning;
                text  = ons;
                dis   = TRUE;
                break;

            case MIAMIPANELV_AddInterface_State_Suspending:
                color = MUIV_Lamp_Color_FatalError;
                text  = NULL;
                dis   = TRUE;
                break;

            case MIAMIPANELV_AddInterface_State_Online:
                color = MUIV_Lamp_Color_Ok;
                text  = offs;
                dis   = FALSE;
                break;

            case MIAMIPANELV_AddInterface_State_Suspended:
                color = MUIV_Lamp_Color_Processing;
                text  = NULL;
                dis   = TRUE;
                break;

            default:
                color = MUIV_Lamp_Color_Off;
                text  = ons;
                dis   = FALSE;
                break;
        }

        if (data->lamp) set(data->lamp,MUIA_Lamp_Color,color);
        if (text) set(data->text,MUIA_Text_Contents,text);
        SetSuperAttrs(CLASS,self,MUIA_Disabled,dis,TAG_DONE);
    }

    return DoSuperMethodA(CLASS,self,(Msg)message);
}
Example #2
0
static void
scaleBitMap(struct data *data,UWORD w,UWORD h)
{
    register UWORD x, y;

    if (w==data->picWidth && h==data->picHeight)
        return;

    if (w==0 || w>16383 || h==0 || h>16383)
        return;

    x = ScalerDiv(w,FACTOR,data->picWidth);
    y = ScalerDiv(h,FACTOR,data->picHeight);

    if (x==0 || x>16383 || y==0 || y>16383)
    	return;

    w = ScalerDiv(x,data->picWidth,FACTOR);
    h = ScalerDiv(y,data->picHeight,FACTOR);

    if (w==0 || w>16383 || h==0 || h>16383)
        return;

    if (data->scaledBitMap = AllocBitMap(w,h,data->bmh->bmh_Depth,((data->flags & FLG_Cyber) ? BMF_MINPLANES : 0)|BMF_CLEAR,data->screen->RastPort.BitMap))
    {
        struct BitScaleArgs scale;

        memset(&scale,0,sizeof(struct BitScaleArgs));

        scale.bsa_SrcBitMap   = data->bitMap;
        scale.bsa_DestBitMap  = data->scaledBitMap;

        scale.bsa_SrcWidth    = data->picWidth;
        scale.bsa_SrcHeight   = data->picHeight;

        scale.bsa_XSrcFactor  = FACTOR;
        scale.bsa_XDestFactor = x;

        scale.bsa_YSrcFactor  = FACTOR;
        scale.bsa_YDestFactor = y;

        BitMapScale(&scale);

        data->scaledWidth  = w;
        data->scaledHeight = h;

		scaleMask(data,data->picWidth,data->picHeight,scale.bsa_DestWidth,scale.bsa_DestHeight,x,y);
        SetSuperAttrs(data->cl,data->obj,MUIA_Pic_Width,w,MUIA_Pic_Height,h,TAG_DONE);
    }
}
Example #3
0
__asm ULONG ObjStringDispatcher(a0 struct IClass *cl, a2 Object *o, a1 Msg msg)
{
    TagItem    *ti;
    struct ObjStringData *idata = INST_DATA(cl, o);

    putreg(REG_A6, (long)cl->cl_UserData);
    geta4();

    switch (msg->MethodID) {
    case OM_NEW: {
        Object *obj = (Object*)DoSuperMethodA(cl, o, msg);
        if (obj) {
            idata = INST_DATA(cl, obj);
            if (ti = FindTagItem(SWA_ObjString_StrAttr, ((opSet *)msg)->ops_AttrList))
                idata->StrAttr = ti->ti_Data;
            SetAttrs(obj, MUIA_Draggable,          TRUE,
                     MUIA_CycleChain,         1,
                     MUIA_String_AdvanceOnCR, TRUE, TAG_DONE);
        }
        return (ULONG)obj;
    }

    case OM_GET: {
        if (((struct opGet *)msg)->opg_AttrID == SWA_ObjString_NumVal) {
            ULONG *Store = ((struct opGet *)msg)->opg_Storage;

            if (Store) *Store = SWGetUL(o, MUIA_String_Integer);

            return 1;
        }

        break;
    }

    case OM_SET:
    case OM_UPDATE: {
        ULONG rc;

        if (ti=FindTagItem(MUIA_String_Contents,((opSet *)msg)->ops_AttrList)) {
            rc = DoSuperMethodA(cl, o, msg);
            set(o, SWA_ObjString_NumVal, SWGetUL(o, MUIA_String_Integer));
            return rc;
        }


        if (ti=FindTagItem(SWA_ObjString_NumVal,((opSet *)msg)->ops_AttrList)) {
            if (idata->LastVal == ti->ti_Data) {
                ti->ti_Tag = TAG_IGNORE;
                rc = DoSuperMethodA(cl, o, msg);
                ti->ti_Tag = SWA_ObjString_NumVal;
                return rc;
            }

            SetSuperAttrs(cl, o,
                          MUIA_NoNotify,       TRUE,
                          MUIA_String_Integer, idata->LastVal = ti->ti_Data,
                          TAG_DONE);
        }
    }

    break;

    case MUIM_DragQuery: {
        Object *drag_o = ((struct MUIP_DragQuery *)msg)->obj;
        if (drag_o == o)                        return MUIV_DragQuery_Refuse;
        if (OCLASS(drag_o) == OCLASS(o)) {
            UBYTE *s1, *s2;
            get(drag_o, MUIA_String_Accept, &s1);
            get(o,      MUIA_String_Accept, &s2);
            if (!s1 && !s2) return MUIV_DragQuery_Accept;
            if (!s1 || !s2) return MUIV_DragQuery_Refuse;
            return (ULONG)(!strcmp(s1, s2) ? MUIV_DragQuery_Accept
                           : MUIV_DragQuery_Refuse);
        }

        if (OCLASS(drag_o) == SWObjListClass()) SWDB_RET(MUIV_DragQuery_Accept);

        if (!idata->StrAttr)                    return MUIV_DragQuery_Refuse;

        if (!(drag_o = (Object *)DoMethod(drag_o, SWM_Root_GetDragObj)))
            return MUIV_DragQuery_Refuse;

        return (ULONG)(get(drag_o, idata->StrAttr, NULL)
                       ? MUIV_DragQuery_Accept : MUIV_DragQuery_Refuse);
    }

    case MUIM_DragDrop: {
        Object *drag_o = ((struct MUIP_DragQuery *)msg)->obj;
        if (OCLASS(drag_o) == OCLASS(o)) {
            set(o, MUIA_String_Contents, SWGetUL(drag_o, MUIA_String_Contents));
            set(o, SWA_ObjString_NumVal, SWGetUL(o,      MUIA_String_Integer));
            return 0;
        }

        // -- if objlist, append its primary attribute -----------------------

        if (OCLASS(drag_o) == SWObjListClass()) {
            UBYTE *c, *val;
            get(o, MUIA_String_Contents, &c);

            val = (UBYTE *)DoMethod((Object *)muiUserData(drag_o),
                                    SWM_E_Listmgr_StrCopy, c);

            if (val && c) {
                set(o,  MUIA_String_Contents, val);
                FreeVec(val);
                return 0;
            }
        }

        if (!(drag_o = (Object *)DoMethod(drag_o, SWM_Root_GetDragObj)))
            return MUIV_DragQuery_Refuse;

        set(o, MUIA_String_Contents, SWGetStr(drag_o, idata->StrAttr));
        return 0;
    }

    case SWM_ObjString_AppMsg: {
        UBYTE FSpec[FMSIZE];
        struct AppMessage *AMsg = ((struct SWP_AppMsg *)msg)->AMsg;

        if (AMsg->am_NumArgs > 0) {
            NameFromLock(AMsg->am_ArgList[0].wa_Lock, FSpec, FMSIZE);
            AddPart(FSpec, AMsg->am_ArgList[0].wa_Name, FMSIZE);
            set(o, MUIA_String_Contents, FSpec);
        }
        return 0;
    }

    }

    return DoSuperMethodA(cl, o, msg);
}