Exemplo n.º 1
0
// varargs SetGadgetAttrs
void __stdargs L_SetGadgetAttrs(
	struct Gadget *gad,
	struct Window *win,
	Tag tag,...)
{
	SetGadgetAttrsA(gad,win,0,(struct TagItem *)&tag);
}
Exemplo n.º 2
0
int GetConvArgs( FRAME *frame, struct TagItem *tags, struct PPTBase *xd, struct convargs *cargs )
{
    Object *Win, *wtgroup, *weights[7][7], *Bias, *Frq, *Name, *Div;
    ULONG sigmask, sig, rc;
    int quit = FALSE, res = PERR_OK,i,j;
    struct Window *win;
    struct IntuitionBase *IntuitionBase = xd->lb_Intuition;
    struct ExecBase *SysBase = xd->lb_Sys;
    struct Library *BGUIBase = xd->lb_BGUI;
    char *name = "Unknown";

#ifdef DEBUG_MODE
    PDebug("\tCreating window object\n");
#endif

    Win = WindowObject,
        WINDOW_Screen,    xd->g->maindisp->scr,
        WINDOW_Title,     frame->nd.ln_Name,
        WINDOW_Font,      xd->g->userprefs->mainfont,
        WINDOW_ScreenTitle, "Convolute Tool",
        WINDOW_ScaleWidth, 20,
        WINDOW_MenuStrip, Menus,
        TAG_SKIP,         (cargs->winpos.Height == 0) ? 1 : 0,
        WINDOW_Bounds,    &(cargs->winpos),
        WINDOW_NoBufferRP, TRUE,
        WINDOW_MasterGroup,
            VGroupObject, Spacing(4), HOffset(6), VOffset(4),
                StartMember,
                    Name = InfoFixed("Name:","",NULL,1),
                EndMember,
                StartMember,
                    HGroupObject, Spacing(4), HOffset(4),
                        StartMember,
                            /* Grid */
                            wtgroup = VGroupObject,
                                StartMember,
                                    HGroupObject,
                                        StartMember,
                                            weights[0][0] = Integer(NULL,0,3,GID_W00),
                                        EndMember,
                                        StartMember,
                                            weights[0][1] = Integer(NULL,0,3,GID_W01),
                                        EndMember,
                                        StartMember,
                                            weights[0][2] = Integer(NULL,0,3,GID_W02),
                                        EndMember,
                                        StartMember,
                                            weights[0][3] = Integer(NULL,0,3,GID_W03),
                                        EndMember,
                                        StartMember,
                                            weights[0][4] = Integer(NULL,0,3,GID_W04),
                                        EndMember,
                                        StartMember,
                                            weights[0][5] = Integer(NULL,0,3,GID_W05),
                                        EndMember,
                                        StartMember,
                                            weights[0][6] = Integer(NULL,0,3,GID_W06),
                                        EndMember,
                                    EndObject,
                                EndMember,
                                StartMember,
                                    HGroupObject,
                                        StartMember,
                                            weights[1][0] = Integer(NULL,0,3,GID_W10),
                                        EndMember,
                                        StartMember,
                                            weights[1][1] = Integer(NULL,0,3,GID_W11),
                                        EndMember,
                                        StartMember,
                                            weights[1][2] = Integer(NULL,0,3,GID_W12),
                                        EndMember,
                                        StartMember,
                                            weights[1][3] = Integer(NULL,0,3,GID_W13),
                                        EndMember,
                                        StartMember,
                                            weights[1][4] = Integer(NULL,0,3,GID_W14),
                                        EndMember,
                                        StartMember,
                                            weights[1][5] = Integer(NULL,0,3,GID_W15),
                                        EndMember,
                                        StartMember,
                                            weights[1][6] = Integer(NULL,0,3,GID_W16),
                                        EndMember,
                                    EndObject,
                                EndMember,
                                StartMember,
                                    HGroupObject,
                                        StartMember,
                                            weights[2][0] = Integer(NULL,0,3,GID_W20),
                                        EndMember,
                                        StartMember,
                                            weights[2][1] = Integer(NULL,0,3,GID_W21),
                                        EndMember,
                                        StartMember,
                                            weights[2][2] = Integer(NULL,0,3,GID_W22),
                                        EndMember,
                                        StartMember,
                                            weights[2][3] = Integer(NULL,0,3,GID_W23),
                                        EndMember,
                                        StartMember,
                                            weights[2][4] = Integer(NULL,0,3,GID_W24),
                                        EndMember,
                                        StartMember,
                                            weights[2][5] = Integer(NULL,0,3,GID_W25),
                                        EndMember,
                                        StartMember,
                                            weights[2][6] = Integer(NULL,0,3,GID_W26),
                                        EndMember,
                                    EndObject,
                                EndMember,
                                StartMember,
                                    HGroupObject,
                                        StartMember,
                                            weights[3][0] = Integer(NULL,0,3,GID_W30),
                                        EndMember,
                                        StartMember,
                                            weights[3][1] = Integer(NULL,0,3,GID_W31),
                                        EndMember,
                                        StartMember,
                                            weights[3][2] = Integer(NULL,0,3,GID_W32),
                                        EndMember,
                                        StartMember,
                                            weights[3][3] = Integer(NULL,1,3,GID_W33),
                                        EndMember,
                                        StartMember,
                                            weights[3][4] = Integer(NULL,0,3,GID_W34),
                                        EndMember,
                                        StartMember,
                                            weights[3][5] = Integer(NULL,0,3,GID_W35),
                                        EndMember,
                                        StartMember,
                                            weights[3][6] = Integer(NULL,0,3,GID_W36),
                                        EndMember,
                                    EndObject,
                                EndMember,
                                StartMember,
                                    HGroupObject,
                                        StartMember,
                                            weights[4][0] = Integer(NULL,0,3,GID_W40),
                                        EndMember,
                                        StartMember,
                                            weights[4][1] = Integer(NULL,0,3,GID_W41),
                                        EndMember,
                                        StartMember,
                                            weights[4][2] = Integer(NULL,0,3,GID_W42),
                                        EndMember,
                                        StartMember,
                                            weights[4][3] = Integer(NULL,0,3,GID_W43),
                                        EndMember,
                                        StartMember,
                                            weights[4][4] = Integer(NULL,0,3,GID_W44),
                                        EndMember,
                                        StartMember,
                                            weights[4][5] = Integer(NULL,0,3,GID_W45),
                                        EndMember,
                                        StartMember,
                                            weights[4][6] = Integer(NULL,0,3,GID_W46),
                                        EndMember,
                                    EndObject,
                                EndMember,
                                StartMember,
                                    HGroupObject,
                                        StartMember,
                                            weights[5][0] = Integer(NULL,0,3,GID_W50),
                                        EndMember,
                                        StartMember,
                                            weights[5][1] = Integer(NULL,0,3,GID_W51),
                                        EndMember,
                                        StartMember,
                                            weights[5][2] = Integer(NULL,0,3,GID_W52),
                                        EndMember,
                                        StartMember,
                                            weights[5][3] = Integer(NULL,0,3,GID_W53),
                                        EndMember,
                                        StartMember,
                                            weights[5][4] = Integer(NULL,0,3,GID_W54),
                                        EndMember,
                                        StartMember,
                                            weights[5][5] = Integer(NULL,0,3,GID_W55),
                                        EndMember,
                                        StartMember,
                                            weights[5][6] = Integer(NULL,0,3,GID_W56),
                                        EndMember,
                                    EndObject,
                                EndMember,
                                StartMember,
                                    HGroupObject,
                                        StartMember,
                                            weights[6][0] = Integer(NULL,0,3,GID_W60),
                                        EndMember,
                                        StartMember,
                                            weights[6][1] = Integer(NULL,0,3,GID_W61),
                                        EndMember,
                                        StartMember,
                                            weights[6][2] = Integer(NULL,0,3,GID_W62),
                                        EndMember,
                                        StartMember,
                                            weights[6][3] = Integer(NULL,0,3,GID_W63),
                                        EndMember,
                                        StartMember,
                                            weights[6][4] = Integer(NULL,0,3,GID_W64),
                                        EndMember,
                                        StartMember,
                                            weights[6][5] = Integer(NULL,0,3,GID_W65),
                                        EndMember,
                                        StartMember,
                                            weights[6][6] = Integer(NULL,0,3,GID_W66),
                                        EndMember,
                                    EndObject,
                                EndMember,
                                StartMember,
                                    HGroupObject, Spacing(4),
                                        StartMember,
                                            Bias = Integer("Bias:",0,4,GID_BIAS),
                                        EndMember,
                                        StartMember,
                                            Div = Integer("Div:",1,4,GID_DIV),
                                        EndMember,
                                    EndObject,
                                EndMember,
                            EndObject, Weight(75),
                        EndMember,
                        StartMember,
                            VGroupObject, Spacing(4),
                                StartMember,
                                    XenButton("Load",GID_LOAD),
                                EndMember,
                                StartMember,
                                    XenButton("Save",GID_SAVE),
                                EndMember,
                                StartMember,
                                    XenButton("Clear",GID_CLEAR),
                                EndMember,
                                StartMember,
                                    XenButton("Convolute!",GID_OK),
                                EndMember,
                                StartMember,
                                    XenButton("Cancel",GID_CANCEL),
                                EndMember,
                            EndObject, Weight(10),
                        EndMember,
                    EndObject,
                EndMember,
            EndObject, /* MasterVGroup */
        EndObject; /* Window */

    if(Win) {
#ifdef DEBUG_MODE
        PDebug("\tSucceeded in creating window\n");
#endif

        for(i = 0; i < 7; i++) {
            for(j = 0; j < 7; j++) {
                SetGadgetAttrs( (struct Gadget *)weights[i][j], NULL, NULL,
                                STRINGA_LongVal, cargs->weights[i][j], TAG_DONE );
            }
        }
        SetGadgetAttrs( (struct Gadget *)Bias, NULL, NULL, STRINGA_LongVal, cargs->bias, TAG_DONE);
        SetGadgetAttrs( (struct Gadget *)Div, NULL, NULL, STRINGA_LongVal, cargs->div, TAG_DONE);
        SetGadgetAttrs( (struct Gadget *)Name, NULL, NULL, INFO_TextFormat, cargs->name, TAG_DONE);

        if( win = WindowOpen( Win ) ) {
#ifdef DEBUG_MODE
            PDebug("\tOpened window OK\n");
#endif
            Frq = FileReqObject,
                    ASLFR_Window, win,
                    ASLFR_SleepWindow, TRUE,
                    ASLFR_InitialDrawer, "PROGDIR:modules/convolutions",
                    ASLFR_InitialPattern,"~(#?.info)",
                  EndObject;
            GetAttr( WINDOW_SigMask, Win, &sigmask );

            while(!quit) {
                sig = Wait(sigmask | SIGBREAKF_CTRL_C | SIGBREAKF_CTRL_F);

                /*
                 *  Break signal
                 */

                if( sig & SIGBREAKF_CTRL_C ) {
                    quit = TRUE;
                    res = PERR_BREAK;
                }

                if( sig & SIGBREAKF_CTRL_F ) {
                    WindowToFront( win );
                    ActivateWindow( win );
                }

                /*
                 *  Gadget message
                 */

                if( sig & sigmask ) {
                    while(( rc = HandleEvent( Win )) != WMHI_NOMORE ) {
                        struct TagItem clrtable[] = { STRINGA_LongVal, 0, TAG_END };
                        struct TagItem nonametable[] = { INFO_TextFormat, (ULONG)"unnamed", TAG_END };
                        struct TagItem settable[] = {STRINGA_LongVal, 0, TAG_END };
                        struct TagItem frqloadtable[] = {ASLFR_DoSaveMode, FALSE, TAG_END };
                        struct TagItem newnametable[] = {INFO_TextFormat, NULL, TAG_END };
                        struct TagItem frqsavetable[] = {ASLFR_DoSaveMode, TRUE, TAG_END };
                        struct TagItem nametable[] = {INFO_TextFormat, NULL, TAG_END };
                        int id;

                        switch(rc) {
                            case WMHI_CLOSEWINDOW:
                            case GID_CANCEL:
                                res = PERR_CANCELED;
                                quit = TRUE;
                                WindowClose(Win);
                                break;

                            case GID_CLEAR:
                                WindowBusy(Win);
                                clrtable[0].ti_Data = 0;
                                SetGadgetAttrsA( (struct Gadget *)Bias, win, NULL, clrtable);
                                for(i = 0; i < 7; i++) {
                                    for(j = 0; j < 7; j++) {
                                        SetGadgetAttrsA( (struct Gadget *)weights[i][j], win,
                                                         NULL, clrtable );
                                        cargs->weights[i][j] = 0;
                                    }
                                }
                                clrtable[0].ti_Data = 1; /* For Divisor & Middle value. */

                                SetGadgetAttrsA( (struct Gadget *)weights[3][3], win,
                                                 NULL, clrtable );
                                cargs->weights[3][3] = 1;

                                clrtable[0].ti_Data = 1; /* For Divisor */
                                SetGadgetAttrsA( (struct Gadget *)Div, win, NULL, clrtable);
                                SetGadgetAttrsA( (struct Gadget *) Name, win, NULL, nonametable);
                                WindowReady(Win);
                                break;

                            case GID_LOAD:
                                SetAttrsA( Frq, frqloadtable );
                                if(DoRequest( Frq ) == FRQ_OK) {
                                    GetAttr( FRQ_Path, Frq, (ULONG *)&name );
                                    WindowBusy(Win);
                                    if(LoadConvFilter( xd, name, cargs ) == PERR_OK ) {
                                        for(i = 0; i < 7; i++) {
                                            for(j = 0; j < 7; j++) {
                                                settable[0].ti_Data = cargs->weights[i][j];
                                                SetGadgetAttrsA( (struct Gadget *)weights[i][j], win,
                                                    NULL, settable );
                                            }
                                        }
                                        settable[0].ti_Data = cargs->bias;
                                        SetGadgetAttrsA( (struct Gadget *)Bias, win, NULL, settable);
                                        settable[0].ti_Data = cargs->div;
                                        SetGadgetAttrsA( (struct Gadget *)Div, win, NULL, settable);
                                        GetAttr( FRQ_File, Frq, (ULONG *) &newnametable[0].ti_Data );
                                        SetGadgetAttrsA( (struct Gadget *) Name, win, NULL, newnametable);
                                    }
                                    WindowReady(Win);
                                }
                                break;

                            case GID_SAVE:
                                SetAttrsA( Frq, frqsavetable );
                                if(DoRequest(Frq) == FRQ_OK) {
                                    WindowBusy(Win);
                                    GetAttr( FRQ_Path, Frq, (ULONG *)&name );
                                    for(i = 0; i < 7; i++) {
                                        for(j = 0; j < 7; j++) {
                                            GetAttr( STRINGA_LongVal, weights[i][j], (ULONG *) &(cargs->weights[i][j]) );
                                        }
                                    }
                                    GetAttr( STRINGA_LongVal, Bias, (ULONG *) &(cargs->bias));
                                    GetAttr( STRINGA_LongVal, Div, (ULONG *) &(cargs->div));
                                    SaveConvFilter( xd, name, cargs );
                                    GetAttr( FRQ_File, Frq, &nametable[0].ti_Data );
                                    SetGadgetAttrsA( (struct Gadget *) Name, win, NULL, nametable);
                                    WindowReady(Win);
                                }
                                break;

                            case GID_OK:
                                GetAttr( STRINGA_LongVal, Bias, (ULONG *) &(cargs->bias));
                                GetAttr( STRINGA_LongVal, Div, (ULONG *) &(cargs->div));
                                GetAttr( WINDOW_Bounds, Win, (ULONG *) &(cargs->winpos) );
                                if( cargs->div != 0 ) {
                                    WindowClose(Win);
                                    for(i = 0; i < 7; i++) {
                                        for(j = 0; j < 7; j++) {
                                            GetAttr( STRINGA_LongVal, weights[i][j], (ULONG *) &(cargs->weights[i][j]) );
                                        }
                                    }
                                    GetAttr( STRINGA_LongVal, Bias, (ULONG *) &(cargs->bias));
                                    GetAttr( STRINGA_LongVal, Div, (ULONG *) &(cargs->div));
                                    strncpy( cargs->name, name, 40 );
                                    res = PERR_OK;
                                    quit = TRUE;
                                }
                                break;

                            default:

                                if(rc >= OPR(0) && rc <= OPR(1000)) { /* It's a default opr */
                                    WindowBusy(Win);
                                    for(id = 0; presets[id].id != rc && presets[id].id != 0L; id++); /* Fetch correct area. */
                                    if(presets[id].id) {
                                        for(i = 0; i < 7; i++) {
                                            for(j = 0; j < 7; j++) {
                                                settable[0].ti_Data = cargs->weights[i][j] = presets[id].weights[i][j];
                                                SetGadgetAttrsA( (struct Gadget *)weights[i][j], win,
                                                    NULL, settable );
                                            }
                                        }
                                        settable[0].ti_Data = cargs->bias = presets[id].bias;
                                        SetGadgetAttrsA( (struct Gadget *)Bias, win, NULL, settable);
                                        settable[0].ti_Data = cargs->div = presets[id].div;
                                        SetGadgetAttrsA( (struct Gadget *)Div,  win, NULL, settable);
                                        newnametable[0].ti_Data = name = (ULONG)presets[id].name;
                                        SetGadgetAttrsA( (struct Gadget *)Name, win, NULL, newnametable);
                                    }
#ifdef DEBUG_MODE
                                    else {
                                        PDebug("Serious software error!!!\n");
                                    }
#endif
                                    WindowReady(Win);
                                }
                                break;

                        } /* switch */
                    } /* while */
                } /* sig & sigmask */

            } /* while(!quit) */

            DisposeObject(Win);
            DisposeObject(Frq);
        } else {
#ifdef DEBUG_MODE
            PDebug("\tFailed to get window\n");
#endif
            DisposeObject(Win);
            return PERR_WONTOPEN;
        }
    } else {
#ifdef DEBUG_MODE
        PDebug("\tFailed to get window object\n");
#endif
        return PERR_WONTOPEN;
    }

    return res;
}
Exemplo n.º 3
0
STATIC IPTR scroller_set(Class * cl, Object * o, struct opSet * msg)
{
    IPTR 		retval = 0UL;
    struct TagItem 	*tag, tags[] =
    {
    	{PGA_Total	, 0	},
    	{PGA_Top	, 0	},
    	{PGA_Visible	, 0	},
    	{TAG_MORE		}
    };
    const struct TagItem *tstate = msg->ops_AttrList;

    struct ScrollerData *data = INST_DATA(cl, o);

    D(bug("scroller_set(cl 0x%lx o 0x%lx msg 0x%lx)\n",cl,o,msg));

    tags[3].ti_Data = (IPTR)msg->ops_AttrList;
    
    /* Get old values */
    DoSuperMethod(cl, o, OM_GET, PGA_Total, 	(IPTR) &(tags[0].ti_Data));
    DoSuperMethod(cl, o, OM_GET, PGA_Top, 	(IPTR) &(tags[1].ti_Data));
    DoSuperMethod(cl, o, OM_GET, PGA_Visible, 	(IPTR) &(tags[2].ti_Data));

    D(bug("scroller_set: Old Total %ld Top %ld Visible %ld\n",
		tags[0].ti_Data,
		tags[1].ti_Data,
		tags[2].ti_Data));

    
    while ((tag = NextTagItem(&tstate)))
    {
    	
    	switch (tag->ti_Tag)
    	{
	     case GTA_GadgetKind:
		data->gadgetkind = tag->ti_Data;
		break;

    	     case GTSC_Total:
		D(bug("scroller_set: GTSC_Total %ld\n",tag->ti_Data));
    	     	tags[0].ti_Data  = tag->ti_Data;
    	     	break;

    	     case GTSC_Top:
		D(bug("scroller_set: GTSC_Top %ld\n",tag->ti_Data));
		tags[1].ti_Data  = tag->ti_Data;
		break;
    	     	
    	     case GTSC_Visible:
		D(bug("scroller_set: GTSC_Visible %ld\n",tag->ti_Data));
            	tags[2].ti_Data  = tag->ti_Data;
            	break;
            	
             case GTA_Scroller_Dec:
            	if (tags[1].ti_Data > 0)
            	{
            	    tags[1].ti_Data --;
            	    retval = 1UL;
            	}
                break;
            
            case GTA_Scroller_Inc:
        	/* Top < (Total - Visible) ? */
        	if (tags[1].ti_Data < (tags[0].ti_Data - tags[2].ti_Data))
        	{
            	    tags[1].ti_Data ++;
           	    retval = 1UL;
        	}
                break;
            
	    case GTA_Scroller_Arrow1:
	        data->arrow1 = (struct Gadget *)tag->ti_Data;
		break;
		
	    case GTA_Scroller_Arrow2:
	        data->arrow2 = (struct Gadget *)tag->ti_Data;
		break;
	
	    case GA_Disabled:
	        {
		    struct TagItem set_tags[] = 
		    {
		        {GA_Disabled	, tag->ti_Data	},
			{TAG_DONE			}
		    };
		    
		    if (data->arrow1)
		    {
		        if (msg->ops_GInfo)
			{
			    SetGadgetAttrsA(data->arrow1, msg->ops_GInfo->gi_Window, 0, set_tags);
			} else {
			    SetAttrsA((Object *)data->arrow1, set_tags);
			}
		    }
		    
		    if (data->arrow2)
		    {
		        if (msg->ops_GInfo)
			{
			    SetGadgetAttrsA(data->arrow2, msg->ops_GInfo->gi_Window, 0, set_tags);
			} else {
			    SetAttrsA((Object *)data->arrow2, set_tags);
			}
		    }
		}
		break;
		
    	} /* switch (tag->ti_Tag) */
    	
    } /* while ((tag = NextTagItem(&tstate))) */

    DoSuperMethod(cl, o, OM_SET, (IPTR) tags, (IPTR) msg->ops_GInfo);

    return (retval);
}