Difference for 2d/bitblt.c from version 1.7 to 1.8


version 1.7 version 1.8
Line 19
 
Line 19
  * Routines for bitblt's.   * Routines for bitblt's.
  *   *
  * $Log$   * $Log$
    * Revision 1.8  1999/11/20 10:05:16  donut
    * variable size menu patch from Jan Bobrowski.  Variable menu font size support and a bunch of fixes for menus that didn't work quite right, by me (MPM).
    *
  * Revision 1.7  1999/10/18 07:26:38  donut   * Revision 1.7  1999/10/18 07:26:38  donut
  * beginning work on bitblt with source==BM_OGL, fixes squished bitblts, better support for alternate texture formats, support for driver specific hacks, etc   * beginning work on bitblt with source==BM_OGL, fixes squished bitblts, better support for alternate texture formats, support for driver specific hacks, etc
  *   *
Line 1014
 
Line 1017
  masked );   masked );
  sbits += (int)src->bm_data[4+y1+sy];   sbits += (int)src->bm_data[4+y1+sy];
  }   }
   }
   
   // rescalling bitmaps, 10/14/99 Jan Bobrowski jb@wizard.ae.krakow.pl
   
   inline void scale_line(byte *in, byte *out, int ilen, int olen)
   {
    int a = olen/ilen, b = olen%ilen;
    int c = 0, i;
    byte *end = out + olen;
    while(out<end) {
    i = a;
    c += b;
    if(c >= ilen) {
    c -= ilen;
    goto inside;
    }
    while(--i>=0) {
   inside:
    *out++ = *in;
    }
    in++;
    }
   }
   
   void gr_bitmap_scale_to(grs_bitmap *src, grs_bitmap *dst)
   {
    byte *s = src->bm_data;
    byte *d = dst->bm_data;
    int h = src->bm_h;
    int a = dst->bm_h/h, b = dst->bm_h%h;
    int c = 0, i, y;
   
    for(y=0; y<h; y++) {
    i = a;
    c += b;
    if(c >= h) {
    c -= h;
    goto inside;
    }
    while(--i>=0) {
   inside:
    scale_line(s, d, src->bm_w, dst->bm_w);
    d += dst->bm_rowsize;
    }
    s += src->bm_rowsize;
    }
   }
   
   void show_fullscr(grs_bitmap *bm)
   {
    grs_bitmap * const scr = &grd_curcanv->cv_bitmap;
   
    if(scr->bm_type != BM_LINEAR) {
    grs_bitmap *tmp = gr_create_bitmap(scr->bm_w, scr->bm_h);
    gr_bitmap_scale_to(bm, tmp);
    gr_bitmap(0, 0, tmp);
    gr_free_bitmap(tmp);
    return;
    }
    gr_bitmap_scale_to(bm, scr);
 }  }

Legend:
line(s) removed in v.1.7 
line(s) changed
 line(s) added in v.1.8