Mercurial > hg > openttd
changeset 8981:5b1b9266942c draft
(svn r12773) -Codechange: replace some magic numbers with enums.
author | rubidium <rubidium@openttd.org> |
---|---|
date | Fri, 18 Apr 2008 19:26:52 +0000 |
parents | b4160d91b7c7 |
children | 42d58f31a3dc |
files | src/gfx.cpp |
diffstat | 1 files changed, 18 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -64,8 +64,12 @@ static const byte *_color_remap_ptr; static byte _string_colorremap[3]; -#define DIRTY_BYTES_PER_LINE (MAX_SCREEN_WIDTH / 64) -static byte _dirty_blocks[DIRTY_BYTES_PER_LINE * MAX_SCREEN_HEIGHT / 8]; +enum { + DIRTY_BLOCK_HEIGHT = 8, + DIRTY_BLOCK_WIDTH = 64, + DIRTY_BYTES_PER_LINE = MAX_SCREEN_WIDTH / DIRTY_BLOCK_WIDTH, +}; +static byte _dirty_blocks[DIRTY_BYTES_PER_LINE * MAX_SCREEN_HEIGHT / DIRTY_BLOCK_HEIGHT]; void GfxScroll(int left, int top, int width, int height, int xo, int yo) { @@ -1033,8 +1037,8 @@ void DrawDirtyBlocks() { byte *b = _dirty_blocks; - const int w = Align(_screen.width, 64); - const int h = Align(_screen.height, 8); + const int w = Align(_screen.width, DIRTY_BLOCK_WIDTH); + const int h = Align(_screen.height, DIRTY_BLOCK_HEIGHT); int x; int y; @@ -1047,7 +1051,7 @@ if (*b != 0) { int left; int top; - int right = x + 64; + int right = x + DIRTY_BLOCK_WIDTH; int bottom = y; byte *p = b; int h2; @@ -1056,11 +1060,11 @@ do { *p = 0; p += DIRTY_BYTES_PER_LINE; - bottom += 8; + bottom += DIRTY_BLOCK_HEIGHT; } while (bottom != h && *p != 0); /* Try coalescing to the right too. */ - h2 = (bottom - y) >> 3; + h2 = (bottom - y) / DIRTY_BLOCK_HEIGHT; assert(h2 > 0); p = b; @@ -1075,7 +1079,7 @@ /* Wohoo, can combine it one step to the right! * Do that, and clear the bits. */ - right += 64; + right += DIRTY_BLOCK_WIDTH; h = h2; p2 = p; @@ -1099,8 +1103,8 @@ } } - } while (b++, (x += 64) != w); - } while (b += -(w >> 6) + DIRTY_BYTES_PER_LINE, (y += 8) != h); + } while (b++, (x += DIRTY_BLOCK_WIDTH) != w); + } while (b += -(w / DIRTY_BLOCK_WIDTH) + DIRTY_BYTES_PER_LINE, (y += DIRTY_BLOCK_HEIGHT) != h); _invalid_rect.left = w; _invalid_rect.top = h; @@ -1147,13 +1151,13 @@ if (right > _invalid_rect.right ) _invalid_rect.right = right; if (bottom > _invalid_rect.bottom) _invalid_rect.bottom = bottom; - left >>= 6; - top >>= 3; + left /= DIRTY_BLOCK_WIDTH; + top /= DIRTY_BLOCK_HEIGHT; b = _dirty_blocks + top * DIRTY_BYTES_PER_LINE + left; - width = ((right - 1) >> 6) - left + 1; - height = ((bottom - 1) >> 3) - top + 1; + width = ((right - 1) / DIRTY_BLOCK_WIDTH) - left + 1; + height = ((bottom - 1) / DIRTY_BLOCK_HEIGHT) - top + 1; assert(width > 0 && height > 0);