home *** CD-ROM | disk | FTP | other *** search
/ Der Mediaplex Sampler - Die 6 von Plex / 6_v_plex.zip / 6_v_plex / DISK2 / MULTI_04 / GIF386.ZIP / BITBLT.C next >
Text File  |  1989-12-03  |  1KB  |  52 lines

  1.  
  2. BitBlt(int swidth,int sheight,int ix,int iy,int iwidth,int iheight,char *image,int device) {
  3. register int pixel,count,ioffset,scan,yoffset;
  4. short    bank;
  5. int    width,height,nbanks,scansperbank,startscan,endscan,shortline;
  6.  
  7.     width = (swidth < iwidth) ? swidth : iwidth;
  8.     height= (sheight< iheight)? sheight: iheight;
  9.  
  10.     nbanks = ((swidth * sheight) / 65536) + 1;        
  11.  
  12.     scansperbank = 65536 / swidth;
  13.  
  14.     SetBank(device,0);
  15.     count = 0;
  16.     shortline = 65536 % swidth;
  17.     
  18.     for (bank = 1;bank < nbanks;bank++)    {
  19.  
  20.         startscan = (bank - 1) * scansperbank;
  21.         endscan   = startscan + scansperbank;
  22.         
  23.         for (scan = startscan;scan < endscan - 1;scan++)    {
  24.             yoffset = iy + scan;
  25.             ioffset = yoffset * iwidth + ix;
  26.         
  27.             for (pixel = 0;pixel < width;pixel++)
  28.                 screen[count + pixel] = image[ioffset + pixel];
  29.  
  30.             count += swidth;
  31.         }
  32.  
  33.         if ((shortline < iwidth) && (shortline > 0))    {
  34.             yoffset = iy + endscan - 1;
  35.             ioffset = yoffset * iwidth + ix;
  36.     
  37.             for (pixel = 0;pixel < shortline;pixel++)
  38.                 screen[count + pixel] = image[ioffset + pixel];
  39.  
  40.             SetBank(device,bank);
  41.             count = 0;
  42.             
  43.             for (pixel = shortline + 1;pixel < width;pixel++)
  44.                 screen[count + pixel] = image[ioffset + pixel];
  45.         } else {
  46.             SetBank(device,bank);
  47.             count = 0;
  48.         }
  49.     }
  50. }
  51.  
  52.