From 3097a5b247e591374908b98ed2ef4137091aa6c3 Mon Sep 17 00:00:00 2001 From: Kp Date: Tue, 2 Dec 2014 03:35:01 +0000 Subject: [PATCH] Pass gr_bitblt_find_transparent_area arg by & --- common/2d/bitblt.cpp | 28 ++++++++++++++-------------- common/include/gr.h | 2 +- similar/main/game.cpp | 5 ++--- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/common/2d/bitblt.cpp b/common/2d/bitblt.cpp index e0e0e216f..98ef7891c 100644 --- a/common/2d/bitblt.cpp +++ b/common/2d/bitblt.cpp @@ -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 buf; - gr_rle_decode({sbits, begin(buf)}, rle_end(*bm, buf)); - advance(sbits, bm->bm_data[4+i] | (data_offset == 2 ? static_cast(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(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); } diff --git a/common/include/gr.h b/common/include/gr.h index 7bf5c987a..0a84e6aab 100644 --- a/common/include/gr.h +++ b/common/include/gr.h @@ -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); diff --git a/similar/main/game.cpp b/similar/main/game.cpp index 0859b34fd..1d067def3 100644 --- a/similar/main/game.cpp +++ b/similar/main/game.cpp @@ -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; }