/* med-vol.c: volume handling routines, by Teijo Kinnunen, 1990 */ #include "med.h" #include "medproto.h" extern char volstr[],mvolstr[]; extern WORD mousex,mousey; extern UWORD nykyinenosio; extern struct Window *window; static UBYTE seltrkvol = 0; extern struct RastPort *wrp; extern struct Gadget far gadget8[]; extern struct StringInfo strinfo[]; extern struct Kappale far song; static void SelectTrackVol(void); static void SelectTrackVol() { register UBYTE row = (mousey - 28) / 10,col = (mousex - 44) / 18; if((seltrkvol = 8 * row + col) > 15) seltrkvol = 15; /* foolproof */ } void ShowVols() { UWORD pos1,pos2; UBYTE tcnt; if(nykyinenosio == 8) { pos1 = RemoveGadget(window,&gadget8[2]); pos2 = RemoveGadget(window,&gadget8[7]); } strinfo[6].BufferPos = strinfo[7].BufferPos = 0; strinfo[6].DispPos = strinfo[7].DispPos = 0; strinfo[6].LongInt = (LONG)(song.trkvol[seltrkvol]); strinfo[7].LongInt = (LONG)(song.mastervol); stcu_d(volstr,song.trkvol[seltrkvol]); stcu_d(mvolstr,song.mastervol); if(nykyinenosio == 8) { AddGadget(window,&gadget8[2],pos1); AddGadget(window,&gadget8[7],pos2); RefreshGList(&gadget8[2],window,NULL,1); RefreshGList(&gadget8[7],window,NULL,1); } for(tcnt = 0; tcnt < 16; tcnt++) { if(tcnt == seltrkvol) SetAPen(wrp,5); else SetAPen(wrp,1); if(tcnt < 8) prtnum((UWORD)(song.trkvol[tcnt]),(UWORD)(44 + 18 * tcnt),34,2); else prtnum((UWORD)(song.trkvol[tcnt]),(UWORD)(44 + 18 * (tcnt - 8)),44,2); } SetAPen(wrp,0); prtnum((UWORD)seltrkvol,15,58,2); } void Handle8(UWORD gid) { switch(gid) { case 0x806: if(song.mastervol > 1) song.mastervol--; break; case 0x805: if(song.mastervol > 11) song.mastervol -= 10; else song.mastervol = 1; break; case 0x808: if(song.mastervol < 64) song.mastervol++; break; case 0x809: if(song.mastervol < 54) song.mastervol += 10; else song.mastervol = 64; break; case 0x801: if(song.trkvol[seltrkvol] > 1) song.trkvol[seltrkvol]--; break; case 0x800: if(song.trkvol[seltrkvol] > 11) song.trkvol[seltrkvol] -= 10; else song.trkvol[seltrkvol] = 1; break; case 0x803: if(song.trkvol[seltrkvol] < 64) song.trkvol[seltrkvol]++; break; case 0x804: if(song.trkvol[seltrkvol] < 54) song.trkvol[seltrkvol] += 10; else song.trkvol[seltrkvol] = 64; break; case 0x802: if(strinfo[6].LongInt >= 64) song.trkvol[seltrkvol] = 64; else if(strinfo[6].LongInt < 1) song.trkvol[seltrkvol] = 1; else song.trkvol[seltrkvol] = (UBYTE)(strinfo[6].LongInt); break; case 0x807: if(strinfo[7].LongInt >= 64) song.mastervol = 64; else if(strinfo[7].LongInt < 1) song.mastervol = 1; else song.mastervol = (UBYTE)(strinfo[7].LongInt); break; case 0x810: SelectTrackVol(); break; } ShowVols(); }