Pass gr_bitblt_find_transparent_area arg by &
This commit is contained in:
parent
c990701d87
commit
3097a5b247
|
@ -505,18 +505,18 @@ void show_fullscr(grs_bitmap &bm)
|
|||
}
|
||||
|
||||
// Find transparent area in bitmap
|
||||
void gr_bitblt_find_transparent_area(grs_bitmap *bm, unsigned &minx, unsigned &miny, unsigned &maxx, unsigned &maxy)
|
||||
void gr_bitblt_find_transparent_area(const grs_bitmap &bm, unsigned &minx, unsigned &miny, unsigned &maxx, unsigned &maxy)
|
||||
{
|
||||
using std::advance;
|
||||
using std::min;
|
||||
using std::max;
|
||||
|
||||
if (!(bm->bm_flags&BM_FLAG_TRANSPARENT))
|
||||
if (!(bm.bm_flags&BM_FLAG_TRANSPARENT))
|
||||
return;
|
||||
|
||||
minx = bm->bm_w - 1;
|
||||
minx = bm.bm_w - 1;
|
||||
maxx = 0;
|
||||
miny = bm->bm_h - 1;
|
||||
miny = bm.bm_h - 1;
|
||||
maxy = 0;
|
||||
|
||||
unsigned i = 0, count = 0;
|
||||
|
@ -530,28 +530,28 @@ void gr_bitblt_find_transparent_area(grs_bitmap *bm, unsigned &minx, unsigned &m
|
|||
}
|
||||
};
|
||||
// decode the bitmap
|
||||
if (bm->bm_flags & BM_FLAG_RLE){
|
||||
if (bm.bm_flags & BM_FLAG_RLE){
|
||||
unsigned data_offset;
|
||||
|
||||
data_offset = 1;
|
||||
if (bm->bm_flags & BM_FLAG_RLE_BIG)
|
||||
if (bm.bm_flags & BM_FLAG_RLE_BIG)
|
||||
data_offset = 2;
|
||||
auto sbits = &bm->bm_data[4 + (bm->bm_h * data_offset)];
|
||||
for (unsigned y = 0; y < bm->bm_h; ++y)
|
||||
auto sbits = &bm.get_bitmap_data()[4 + (bm.bm_h * data_offset)];
|
||||
for (unsigned y = 0; y < bm.bm_h; ++y)
|
||||
{
|
||||
array<ubyte, 4096> buf;
|
||||
gr_rle_decode({sbits, begin(buf)}, rle_end(*bm, buf));
|
||||
advance(sbits, bm->bm_data[4+i] | (data_offset == 2 ? static_cast<unsigned>(bm->bm_data[5+i]) << 8 : 0));
|
||||
gr_rle_decode({sbits, begin(buf)}, rle_end(bm, buf));
|
||||
advance(sbits, bm.bm_data[4+i] | (data_offset == 2 ? static_cast<unsigned>(bm.bm_data[5+i]) << 8 : 0));
|
||||
i += data_offset;
|
||||
for (unsigned x = 0; x < bm->bm_w; ++x)
|
||||
for (unsigned x = 0; x < bm.bm_w; ++x)
|
||||
check(x, y, buf[x]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (unsigned y = 0; y < bm->bm_h; ++y)
|
||||
for (unsigned x = 0; x < bm->bm_w; ++x)
|
||||
check(x, y, bm->bm_data[i++]);
|
||||
for (unsigned y = 0; y < bm.bm_h; ++y)
|
||||
for (unsigned x = 0; x < bm.bm_w; ++x)
|
||||
check(x, y, bm.bm_data[i++]);
|
||||
}
|
||||
Assert (count);
|
||||
}
|
||||
|
|
|
@ -316,7 +316,7 @@ void gr_ubitmap(grs_bitmap &bm);
|
|||
void show_fullscr(grs_bitmap &bm);
|
||||
|
||||
// Find transparent area in bitmap
|
||||
void gr_bitblt_find_transparent_area(grs_bitmap *bm, unsigned &minx, unsigned &miny, unsigned &maxx, unsigned &maxy);
|
||||
void gr_bitblt_find_transparent_area(const grs_bitmap &bm, unsigned &minx, unsigned &miny, unsigned &maxx, unsigned &maxy);
|
||||
|
||||
// bitmap function with transparency
|
||||
void gr_bitmapm(unsigned x, unsigned y, const grs_bitmap &bm);
|
||||
|
|
|
@ -210,16 +210,15 @@ void init_cockpit()
|
|||
case CM_REAR_VIEW:
|
||||
{
|
||||
unsigned x1 = 0, y1 = 0, x2 = SWIDTH, y2 = (SHEIGHT*2)/3;
|
||||
grs_bitmap *bm;
|
||||
int mode = PlayerCfg.CockpitMode[1];
|
||||
#if defined(DXX_BUILD_DESCENT_II)
|
||||
mode += (HIRESMODE?(Num_cockpits/2):0);
|
||||
#endif
|
||||
|
||||
PIGGY_PAGE_IN(cockpit_bitmap[mode]);
|
||||
bm=&GameBitmaps[cockpit_bitmap[mode].index];
|
||||
auto &bm = GameBitmaps[cockpit_bitmap[mode].index];
|
||||
gr_bitblt_find_transparent_area(bm, x1, y1, x2, y2);
|
||||
game_init_render_sub_buffers(x1*((float)SWIDTH/bm->bm_w), y1*((float)SHEIGHT/bm->bm_h), (x2-x1+1)*((float)SWIDTH/bm->bm_w), (y2-y1+2)*((float)SHEIGHT/bm->bm_h));
|
||||
game_init_render_sub_buffers(x1*((float)SWIDTH/bm.bm_w), y1*((float)SHEIGHT/bm.bm_h), (x2-x1+1)*((float)SWIDTH/bm.bm_w), (y2-y1+2)*((float)SHEIGHT/bm.bm_h));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue