home *** CD-ROM | disk | FTP | other *** search
/ Audio 4.94 - Over 11,000 Files / audio-11000.iso / amiga / midi / med210.lhw / in.adf / Source / med210src.lzh / med-vol.c < prev    next >
C/C++ Source or Header  |  1990-06-17  |  3KB  |  87 lines

  1. /* med-vol.c: volume handling routines, by Teijo Kinnunen, 1990 */
  2. #include "med.h"
  3. #include "medproto.h"
  4.  
  5. extern char volstr[],mvolstr[];
  6. extern WORD mousex,mousey;
  7. extern UWORD nykyinenosio;
  8. extern struct Window *window;
  9. static UBYTE seltrkvol = 0;
  10. extern struct RastPort *wrp;
  11. extern struct Gadget far gadget8[];
  12. extern struct StringInfo strinfo[];
  13. extern struct Kappale far song;
  14. static void SelectTrackVol(void);
  15.  
  16. static void SelectTrackVol()
  17. {
  18.     register UBYTE row = (mousey - 26) / 10,col = (mousex - 6) / 28;
  19.     if((seltrkvol = 8 * row + col) > 15) seltrkvol = 15; /* foolproof */
  20. }
  21.  
  22. void ShowVols()
  23. {
  24.     UWORD pos1,pos2;
  25.     UBYTE tcnt;
  26.     if(nykyinenosio == 8) {
  27.         pos1 = RemoveGadget(window,&gadget8[2]);
  28.         pos2 = RemoveGadget(window,&gadget8[7]);
  29.     }
  30.     strinfo[6].BufferPos = strinfo[7].BufferPos = 0;
  31.     strinfo[6].DispPos = strinfo[7].DispPos = 0;
  32.     strinfo[6].LongInt = (LONG)(song.trkvol[seltrkvol]);
  33.     strinfo[7].LongInt = (LONG)(song.mastervol);
  34.     stcu_d(volstr,song.trkvol[seltrkvol]);
  35.     stcu_d(mvolstr,song.mastervol);
  36.     if(nykyinenosio == 8) {
  37.         AddGadget(window,&gadget8[2],pos1);
  38.         AddGadget(window,&gadget8[7],pos2);
  39.         RefreshGList(&gadget8[2],window,NULL,1);
  40.         RefreshGList(&gadget8[7],window,NULL,1);
  41.     }
  42.     for(tcnt = 0; tcnt < 16; tcnt++) {
  43.         if(tcnt == seltrkvol) SetAPen(wrp,5); else SetAPen(wrp,1);
  44.         if(tcnt < 8) prtnum((UWORD)(song.trkvol[tcnt]),(UWORD)(7 + 28 * tcnt),33,3);
  45.         else prtnum((UWORD)(song.trkvol[tcnt]),(UWORD)(7 + 28 * (tcnt - 8)),45,3);
  46.     }
  47.     SetAPen(wrp,0);
  48.     prtnum((UWORD)seltrkvol,15,58,2);
  49. }
  50.         
  51. void Handle8(UWORD gid)
  52. {
  53.     switch(gid) {
  54.         case 0x806:    if(song.mastervol > 1) song.mastervol--;
  55.                 break;
  56.         case 0x805:    if(song.mastervol > 11) song.mastervol -= 10;
  57.                 else song.mastervol = 1;
  58.                 break;
  59.         case 0x808:    if(song.mastervol < 100) song.mastervol++;
  60.                 break;
  61.         case 0x809:    if(song.mastervol < 90) song.mastervol += 10;
  62.                 else song.mastervol = 100;
  63.                 break;
  64.         case 0x801:    if(song.trkvol[seltrkvol] > 1) song.trkvol[seltrkvol]--;
  65.                 break;
  66.         case 0x800:    if(song.trkvol[seltrkvol] > 11) song.trkvol[seltrkvol] -= 10;
  67.                 else song.trkvol[seltrkvol] = 1;
  68.                 break;
  69.         case 0x803:    if(song.trkvol[seltrkvol] < 100) song.trkvol[seltrkvol]++;
  70.                 break;
  71.         case 0x804:    if(song.trkvol[seltrkvol] < 90) song.trkvol[seltrkvol] += 10;
  72.                 else song.trkvol[seltrkvol] = 100;
  73.                 break;
  74.         case 0x802:    if(strinfo[6].LongInt >= 100) song.trkvol[seltrkvol] = 100;
  75.                 else if(strinfo[6].LongInt < 1) song.trkvol[seltrkvol] = 1;
  76.                 else song.trkvol[seltrkvol] = (UBYTE)(strinfo[6].LongInt);
  77.                 break;
  78.         case 0x807:    if(strinfo[7].LongInt >= 100) song.mastervol = 100;
  79.                 else if(strinfo[7].LongInt < 1) song.mastervol = 1;
  80.                 else song.mastervol = (UBYTE)(strinfo[7].LongInt);
  81.                 break;
  82.         case 0x810:    SelectTrackVol();
  83.                 break;
  84.     }
  85.     ShowVols();
  86. }
  87.