home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * GADGET.C
- *
- * (c)Copyright 1987 Matthew Dillon, All Rights Reserved.
- *
- */
-
- #include "files.h"
-
- #define NI 0
-
- static BORDER Bdr[10];
-
- static ITEXT BText[] = {
- { 3,0,JAM2,1,0,NULL,(ubyte *)"info"},
- { 3,0,JAM2,1,0,NULL,(ubyte *)"del" },
- { 3,0,JAM2,1,0,NULL,(ubyte *)"undo"},
- { 3,0,JAM2,1,0,NULL,(ubyte *)"all" }
- };
-
- static ITEXT SText[] = {
- { 3,0,JAM2,NI,-2,NULL,(ubyte *)"Volume: " },
- { 3,0,JAM2,NI,-2,NULL,(ubyte *)"Pattern: " },
- { 3,0,JAM2,NI,-2,NULL,(ubyte *)"Comment: " }
- };
-
- ubyte Buf1_vol[128]; ubyte Buf2_vol[128];
- ubyte Buf1_pat[128]; ubyte Buf2_pat[128];
- ubyte Buf1_com[128]; ubyte Buf2_com[128];
-
- STRINGINFO Si_vol = { Buf1_vol,Buf2_vol,0,sizeof(Buf1_vol),0,0,0,0,0,0 };
- STRINGINFO Si_pat = { Buf1_pat,Buf2_pat,0,sizeof(Buf2_pat),0,0,0,0,0,0 };
- STRINGINFO Si_com = { Buf1_com,Buf2_com,0,sizeof(Buf2_com),0,0,0,0,0,0 };
-
- GADGET Gad_vol = { NULL , NI, 0, NI, NI, GADGHCOMP|GRELWIDTH,GADGIMMEDIATE|RELVERIFY,STRGADGET,NI,NULL,&SText[0],NULL,(APTR)&Si_vol };
- GADGET Gad_pat = { &Gad_vol , NI, 1, NI, NI, GADGHCOMP|GRELWIDTH,GADGIMMEDIATE|RELVERIFY,STRGADGET,NI,NULL,&SText[1],NULL,(APTR)&Si_pat };
- GADGET Gad_com = { &Gad_pat , NI, 2, NI, NI, GADGHCOMP|GRELWIDTH,GADGIMMEDIATE|RELVERIFY,STRGADGET,NI,NULL,&SText[2],NULL,(APTR)&Si_com };
-
- GADGET Gad_info= { &Gad_com , 5 ,-15, NI, NI, GADGHCOMP|GRELBOTTOM,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,NI,NULL,&BText[0] };
- GADGET Gad_del = { &Gad_info , 50,-15, NI, NI, GADGHCOMP|GRELBOTTOM,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,NI,NULL,&BText[1] };
- GADGET Gad_undo= { &Gad_del ,-110,-15, NI, NI,GADGHCOMP|GRELRIGHT|GRELBOTTOM,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,NI,NULL,&BText[2] };
- GADGET Gad_all = { &Gad_undo , -50,-15, NI, NI, GADGHCOMP|GRELRIGHT|GRELBOTTOM,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,NI,NULL,&BText[3] };
-
- GADGET *FirstGadget = &Gad_all;
-
- GADGET Gad_box = { NULL , NI, NI, NI, NI, GADGHNONE|GRELWIDTH|GRELHEIGHT,GADGIMMEDIATE|RELVERIFY|FOLLOWMOUSE,BOOLGADGET,NULL,NULL,NULL };
-
- PROPINFO Prop_slid = { AUTOKNOB|FREEVERT, 0, 0, 0x30, 0x30 };
- IMAGE Imag_slid = { 0,0,2,1,1,NULL,1,0,NULL };
-
- GADGET Gad_slid = { NULL, -20, 12, 20, -30, GADGHCOMP|GRELHEIGHT|GRELRIGHT,GADGIMMEDIATE|RELVERIFY|RIGHTBORDER|FOLLOWMOUSE,PROPGADGET,(APTR)&Imag_slid,NULL,NULL,0,(APTR)&Prop_slid };
-
- initslider(nw)
- NW *nw;
- {
- nw->FirstGadget = &Gad_slid;
- }
-
- initstructs()
- {
- register short i;
- register GADGET *gad;
-
- for (i = 0; i < sizeof(Bdr)/sizeof(Bdr[0]); ++i) {
- register BORDER *b = &Bdr[i];
- register short *xy= malloc(5 * 2 * sizeof(short));
- /*b->LeftEdge = b->TopEdge = -2;*/
- b->FrontPen = 1;
- b->DrawMode = JAM2;
- b->Count = 5;
- b->XY = xy;
- bzero(xy, 5 * 2 * sizeof(short));
- xy[2] = i * Win->RPort->TxWidth + 4;
- xy[4] = xy[2];
- xy[5] = Win->RPort->TxHeight + 2;
- xy[7] = Win->RPort->TxHeight + 2;
- }
- for (i = 0; i < sizeof(SText)/sizeof(SText[0]); ++i) {
- register ITEXT *it = &SText[i];
- it->LeftEdge = -strlen(it->IText) * Win->RPort->TxWidth + 2;
- it->TopEdge += 2;
- }
- for (i = 0; i < sizeof(BText)/sizeof(BText[0]); ++i) {
- register ITEXT *it = &BText[i];
- it->LeftEdge+= 2;
- it->TopEdge += 2;
- }
- for (gad = FirstGadget; gad; gad = gad->NextGadget) {
- register ubyte *str = gad->GadgetText->IText;
- gad->Height = Win->RPort->TxHeight + 3;
- gad->Width = strlen(str) * Win->RPort->TxWidth + 5;
- if (gad->GadgetType == STRGADGET) {
- gad->LeftEdge = Win->BorderLeft + strlen(str) * Win->RPort->TxWidth + 2;
- gad->Width = -gad->LeftEdge - Win->BorderRight;
- gad->TopEdge = gad->TopEdge * (Win->RPort->TxHeight + 2) + Win->BorderTop;
- gad->GadgetText->LeftEdge = -strlen(str) * Win->RPort->TxWidth;
- } else {
- gad->GadgetRender = (APTR)&Bdr[strlen(str)];
- }
- }
- Gad_box.LeftEdge= Win->BorderLeft;
- Gad_box.TopEdge = Gad_com.TopEdge + Win->RPort->TxHeight + 2;
- Gad_box.Width = -Gad_box.LeftEdge - Win->BorderRight;
- Gad_box.Height = -Gad_box.TopEdge + Gad_undo.TopEdge - 2;
- }
-
- addgadgets()
- {
- register GADGET *gad, *ngad;
- int i = 0;
-
- initstructs(Win);
- for (gad = FirstGadget; gad; gad = ngad) {
- ngad = gad->NextGadget;
- AddGadget(Win, gad, i);
- ++i;
- }
- AddGadget(Win, &Gad_box, i);
- RefreshGList(FirstGadget, Win, NULL, -1);
- }
-
- remgadgets()
- {
-
- }
-
- fixgadgets()
- {
-
- }
-
- getgadget(im, sel, str)
- IMESS *im;
- short *sel;
- ubyte **str;
- {
- GADGET *gad = (GADGET *)im->IAddress;
-
- *sel = gad->Flags & SELECTED;
-
- if (gad == &Gad_info) return(GAD_INFO);
- if (gad == &Gad_del) return(GAD_DEL);
- if (gad == &Gad_undo) return(GAD_UNDO);
- if (gad == &Gad_all) return(GAD_ALL);
- if (gad == &Gad_slid) return(GAD_SLIDER);
- if (gad == &Gad_box) return(GAD_BIGBOX);
-
- if (gad == &Gad_vol || gad == &Gad_pat || gad == &Gad_com) {
- *str = ((STRINGINFO *)gad->SpecialInfo)->Buffer;
- if (gad == &Gad_vol) return(GAD_VOLUME);
- if (gad == &Gad_pat) return(GAD_PATTERN);
- if (gad == &Gad_com) return(GAD_COMMENT);
- }
- return(0);
- }
-
- bigboxbounds(xs,xe,ys,ye)
- short *xs,*xe,*ys,*ye;
- {
- *xs = Gad_box.LeftEdge;
- *xe = *xs + Gad_box.Width + Win->Width;
- *ys = Gad_box.TopEdge;
- *ye = *ys + Gad_box.Height+ Win->Height;
- if (*xe <= *xs)
- *xe = *xs + 1;
- if (*ye <= *ys)
- *ye = *ys + 1;
- }
-
- getsliderpos(pot, full)
- short *pot, *full;
- {
- *pot = Prop_slid.VertPot;
- *full= Prop_slid.VertBody;
- }
-
- getboxpos(im)
- IMESS *im;
- {
- return(im->MouseY - Gad_box.TopEdge);
- }
-
- setslider(pos, fatness)
- {
- NewModifyProp(&Gad_slid, Win, NULL, AUTOKNOB|FREEVERT,0,pos,0,fatness,1);
- }
-
- setcomment(str)
- char *str;
- {
- strcpy(Buf1_com, str);
- RefreshGList(&Gad_com, Win, NULL, 1);
- }
-
- activate_vol()
- {
- ActivateGadget(&Gad_vol, Win, NULL);
- }
-
- activate_pat()
- {
- ActivateGadget(&Gad_pat, Win, NULL);
- }
-
- activate_com()
- {
- ActivateGadget(&Gad_com, Win, NULL);
- }
-
-