version 1.7 | | version 1.8 |
---|
| | |
* 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 |
* | | * |
| | |
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); |
} | | } |