mirror of https://github.com/OpenTTD/OpenTTD
(svn r12779) -Codechange: remove a few constants from openttd.h.
parent
14dc60c8a1
commit
dde68e922a
20
src/gfx.cpp
20
src/gfx.cpp
|
@ -17,6 +17,7 @@
|
||||||
#include "strings_func.h"
|
#include "strings_func.h"
|
||||||
#include "core/math_func.hpp"
|
#include "core/math_func.hpp"
|
||||||
#include "settings_type.h"
|
#include "settings_type.h"
|
||||||
|
#include "core/alloc_func.hpp"
|
||||||
|
|
||||||
#include "table/palettes.h"
|
#include "table/palettes.h"
|
||||||
#include "table/sprites.h"
|
#include "table/sprites.h"
|
||||||
|
@ -67,9 +68,9 @@ static byte _string_colorremap[3];
|
||||||
enum {
|
enum {
|
||||||
DIRTY_BLOCK_HEIGHT = 8,
|
DIRTY_BLOCK_HEIGHT = 8,
|
||||||
DIRTY_BLOCK_WIDTH = 64,
|
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];
|
static uint _dirty_bytes_per_line = 0;
|
||||||
|
static byte *_dirty_blocks = NULL;
|
||||||
|
|
||||||
void GfxScroll(int left, int top, int width, int height, int xo, int yo)
|
void GfxScroll(int left, int top, int width, int height, int xo, int yo)
|
||||||
{
|
{
|
||||||
|
@ -934,6 +935,9 @@ byte GetCharacterWidth(FontSize size, WChar key)
|
||||||
|
|
||||||
void ScreenSizeChanged()
|
void ScreenSizeChanged()
|
||||||
{
|
{
|
||||||
|
_dirty_bytes_per_line = (_screen.width + DIRTY_BLOCK_WIDTH - 1) / DIRTY_BLOCK_WIDTH;
|
||||||
|
_dirty_blocks = ReallocT<byte>(_dirty_blocks, _dirty_bytes_per_line * ((_screen.height + DIRTY_BLOCK_HEIGHT - 1) / DIRTY_BLOCK_HEIGHT));
|
||||||
|
|
||||||
/* check the dirty rect */
|
/* check the dirty rect */
|
||||||
if (_invalid_rect.right >= _screen.width) _invalid_rect.right = _screen.width;
|
if (_invalid_rect.right >= _screen.width) _invalid_rect.right = _screen.width;
|
||||||
if (_invalid_rect.bottom >= _screen.height) _invalid_rect.bottom = _screen.height;
|
if (_invalid_rect.bottom >= _screen.height) _invalid_rect.bottom = _screen.height;
|
||||||
|
@ -1059,7 +1063,7 @@ void DrawDirtyBlocks()
|
||||||
/* First try coalescing downwards */
|
/* First try coalescing downwards */
|
||||||
do {
|
do {
|
||||||
*p = 0;
|
*p = 0;
|
||||||
p += DIRTY_BYTES_PER_LINE;
|
p += _dirty_bytes_per_line;
|
||||||
bottom += DIRTY_BLOCK_HEIGHT;
|
bottom += DIRTY_BLOCK_HEIGHT;
|
||||||
} while (bottom != h && *p != 0);
|
} while (bottom != h && *p != 0);
|
||||||
|
|
||||||
|
@ -1074,7 +1078,7 @@ void DrawDirtyBlocks()
|
||||||
/* Check if a full line of dirty flags is set. */
|
/* Check if a full line of dirty flags is set. */
|
||||||
do {
|
do {
|
||||||
if (!*p2) goto no_more_coalesc;
|
if (!*p2) goto no_more_coalesc;
|
||||||
p2 += DIRTY_BYTES_PER_LINE;
|
p2 += _dirty_bytes_per_line;
|
||||||
} while (--h != 0);
|
} while (--h != 0);
|
||||||
|
|
||||||
/* Wohoo, can combine it one step to the right!
|
/* Wohoo, can combine it one step to the right!
|
||||||
|
@ -1085,7 +1089,7 @@ void DrawDirtyBlocks()
|
||||||
p2 = p;
|
p2 = p;
|
||||||
do {
|
do {
|
||||||
*p2 = 0;
|
*p2 = 0;
|
||||||
p2 += DIRTY_BYTES_PER_LINE;
|
p2 += _dirty_bytes_per_line;
|
||||||
} while (--h != 0);
|
} while (--h != 0);
|
||||||
}
|
}
|
||||||
no_more_coalesc:
|
no_more_coalesc:
|
||||||
|
@ -1104,7 +1108,7 @@ void DrawDirtyBlocks()
|
||||||
|
|
||||||
}
|
}
|
||||||
} while (b++, (x += DIRTY_BLOCK_WIDTH) != w);
|
} while (b++, (x += DIRTY_BLOCK_WIDTH) != w);
|
||||||
} while (b += -(w / DIRTY_BLOCK_WIDTH) + DIRTY_BYTES_PER_LINE, (y += DIRTY_BLOCK_HEIGHT) != h);
|
} while (b += -(w / DIRTY_BLOCK_WIDTH) + _dirty_bytes_per_line, (y += DIRTY_BLOCK_HEIGHT) != h);
|
||||||
|
|
||||||
_invalid_rect.left = w;
|
_invalid_rect.left = w;
|
||||||
_invalid_rect.top = h;
|
_invalid_rect.top = h;
|
||||||
|
@ -1154,7 +1158,7 @@ void SetDirtyBlocks(int left, int top, int right, int bottom)
|
||||||
left /= DIRTY_BLOCK_WIDTH;
|
left /= DIRTY_BLOCK_WIDTH;
|
||||||
top /= DIRTY_BLOCK_HEIGHT;
|
top /= DIRTY_BLOCK_HEIGHT;
|
||||||
|
|
||||||
b = _dirty_blocks + top * DIRTY_BYTES_PER_LINE + left;
|
b = _dirty_blocks + top * _dirty_bytes_per_line + left;
|
||||||
|
|
||||||
width = ((right - 1) / DIRTY_BLOCK_WIDTH) - left + 1;
|
width = ((right - 1) / DIRTY_BLOCK_WIDTH) - left + 1;
|
||||||
height = ((bottom - 1) / DIRTY_BLOCK_HEIGHT) - top + 1;
|
height = ((bottom - 1) / DIRTY_BLOCK_HEIGHT) - top + 1;
|
||||||
|
@ -1166,7 +1170,7 @@ void SetDirtyBlocks(int left, int top, int right, int bottom)
|
||||||
|
|
||||||
do b[--i] = 0xFF; while (i);
|
do b[--i] = 0xFF; while (i);
|
||||||
|
|
||||||
b += DIRTY_BYTES_PER_LINE;
|
b += _dirty_bytes_per_line;
|
||||||
} while (--height != 0);
|
} while (--height != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -449,7 +449,7 @@ void GameSizeChanged()
|
||||||
{
|
{
|
||||||
_cur_resolution[0] = _screen.width;
|
_cur_resolution[0] = _screen.width;
|
||||||
_cur_resolution[1] = _screen.height;
|
_cur_resolution[1] = _screen.height;
|
||||||
RelocateAllWindows(_screen.width, _screen.height);
|
|
||||||
ScreenSizeChanged();
|
ScreenSizeChanged();
|
||||||
|
RelocateAllWindows(_screen.width, _screen.height);
|
||||||
MarkWholeScreenDirty();
|
MarkWholeScreenDirty();
|
||||||
}
|
}
|
||||||
|
|
|
@ -258,8 +258,8 @@ static void ParseResolution(int res[2], const char *s)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
res[0] = Clamp(strtoul(s, NULL, 0), 64, MAX_SCREEN_WIDTH);
|
res[0] = max(strtoul(s, NULL, 0), 64UL);
|
||||||
res[1] = Clamp(strtoul(t + 1, NULL, 0), 64, MAX_SCREEN_HEIGHT);
|
res[1] = max(strtoul(t + 1, NULL, 0), 64UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void InitializeDynamicVariables()
|
static void InitializeDynamicVariables()
|
||||||
|
|
|
@ -97,11 +97,6 @@ enum {
|
||||||
|
|
||||||
extern byte _savegame_sort_order;
|
extern byte _savegame_sort_order;
|
||||||
|
|
||||||
enum {
|
|
||||||
MAX_SCREEN_WIDTH = 2048,
|
|
||||||
MAX_SCREEN_HEIGHT = 1200,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* In certain windows you navigate with the arrow keys. Do not scroll the
|
/* In certain windows you navigate with the arrow keys. Do not scroll the
|
||||||
* gameview when here. Bitencoded variable that only allows scrolling if all
|
* gameview when here. Bitencoded variable that only allows scrolling if all
|
||||||
* elements are zero */
|
* elements are zero */
|
||||||
|
|
|
@ -127,8 +127,7 @@ static void GetVideoModes()
|
||||||
for (i = 0; modes[i]; i++) {
|
for (i = 0; modes[i]; i++) {
|
||||||
int w = modes[i]->w;
|
int w = modes[i]->w;
|
||||||
int h = modes[i]->h;
|
int h = modes[i]->h;
|
||||||
if (IsInsideMM(w, 640, MAX_SCREEN_WIDTH + 1) &&
|
if (w >= 640 && h >= 480) {
|
||||||
IsInsideMM(h, 480, MAX_SCREEN_HEIGHT + 1)) {
|
|
||||||
int j;
|
int j;
|
||||||
for (j = 0; j < n; j++) {
|
for (j = 0; j < n; j++) {
|
||||||
if (_resolutions[j][0] == w && _resolutions[j][1] == h) break;
|
if (_resolutions[j][0] == w && _resolutions[j][1] == h) break;
|
||||||
|
@ -419,8 +418,8 @@ static int PollEvent()
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_VIDEORESIZE: {
|
case SDL_VIDEORESIZE: {
|
||||||
int w = Clamp(ev.resize.w, 64, MAX_SCREEN_WIDTH);
|
int w = max(ev.resize.w, 64);
|
||||||
int h = Clamp(ev.resize.h, 64, MAX_SCREEN_HEIGHT);
|
int h = max(ev.resize.h, 64);
|
||||||
ChangeResInGame(w, h);
|
ChangeResInGame(w, h);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -545,8 +545,8 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP
|
||||||
|
|
||||||
w = r->right - r->left - (r2.right - r2.left);
|
w = r->right - r->left - (r2.right - r2.left);
|
||||||
h = r->bottom - r->top - (r2.bottom - r2.top);
|
h = r->bottom - r->top - (r2.bottom - r2.top);
|
||||||
w = Clamp(w, 64, MAX_SCREEN_WIDTH);
|
w = max(w, 64);
|
||||||
h = Clamp(h, 64, MAX_SCREEN_HEIGHT);
|
h = max(h, 64);
|
||||||
SetRect(&r2, 0, 0, w, h);
|
SetRect(&r2, 0, 0, w, h);
|
||||||
|
|
||||||
AdjustWindowRect(&r2, GetWindowLong(hwnd, GWL_STYLE), FALSE);
|
AdjustWindowRect(&r2, GetWindowLong(hwnd, GWL_STYLE), FALSE);
|
||||||
|
@ -677,8 +677,8 @@ static bool AllocateDibSection(int w, int h)
|
||||||
HDC dc;
|
HDC dc;
|
||||||
int bpp = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth();
|
int bpp = BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth();
|
||||||
|
|
||||||
w = Clamp(w, 64, MAX_SCREEN_WIDTH);
|
w = max(w, 64);
|
||||||
h = Clamp(h, 64, MAX_SCREEN_HEIGHT);
|
h = max(h, 64);
|
||||||
|
|
||||||
if (bpp == 0) error("Can't use a blitter that blits 0 bpp for normal visuals");
|
if (bpp == 0) error("Can't use a blitter that blits 0 bpp for normal visuals");
|
||||||
|
|
||||||
|
@ -737,8 +737,8 @@ static void FindResolutions()
|
||||||
* Doesn't really matter since we don't pass a string anyways, but still
|
* Doesn't really matter since we don't pass a string anyways, but still
|
||||||
* a letdown */
|
* a letdown */
|
||||||
for (i = 0; EnumDisplaySettingsA(NULL, i, &dm) != 0; i++) {
|
for (i = 0; EnumDisplaySettingsA(NULL, i, &dm) != 0; i++) {
|
||||||
if (dm.dmBitsPerPel == BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() && IsInsideMM(dm.dmPelsWidth, 640, MAX_SCREEN_WIDTH + 1) &&
|
if (dm.dmBitsPerPel == BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() &&
|
||||||
IsInsideMM(dm.dmPelsHeight, 480, MAX_SCREEN_HEIGHT + 1)) {
|
dm.dmPelsWidth >= 640 && dm.dmPelsHeight >= 480) {
|
||||||
uint j;
|
uint j;
|
||||||
|
|
||||||
for (j = 0; j < n; j++) {
|
for (j = 0; j < n; j++) {
|
||||||
|
@ -787,10 +787,10 @@ const char *VideoDriver_Win32::Start(const char * const *parm)
|
||||||
_wnd.height_org = _cur_resolution[1];
|
_wnd.height_org = _cur_resolution[1];
|
||||||
|
|
||||||
AllocateDibSection(_cur_resolution[0], _cur_resolution[1]);
|
AllocateDibSection(_cur_resolution[0], _cur_resolution[1]);
|
||||||
MarkWholeScreenDirty();
|
|
||||||
|
|
||||||
MakeWindow(_fullscreen);
|
MakeWindow(_fullscreen);
|
||||||
|
|
||||||
|
MarkWholeScreenDirty();
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue