mirror of https://github.com/OpenTTD/OpenTTD
(svn r7202) -Codechange: Move _viewports and _active_viewports local to viewport.c and have them
called from the appropiate places in window.crelease/0.5
parent
583c9e531b
commit
e3f905e653
22
viewport.c
22
viewport.c
|
@ -23,6 +23,12 @@
|
||||||
|
|
||||||
#define VIEWPORT_DRAW_MEM (65536 * 2)
|
#define VIEWPORT_DRAW_MEM (65536 * 2)
|
||||||
|
|
||||||
|
/* viewport.c */
|
||||||
|
// XXX - maximum viewports is maximum windows - 2 (main toolbar + status bar)
|
||||||
|
static ViewPort _viewports[25 - 2];
|
||||||
|
static uint32 _active_viewports; ///< bitmasked variable where each bit signifies if a viewport is in use or not
|
||||||
|
assert_compile(lengthof(_viewports) < sizeof(_active_viewports) * 8);
|
||||||
|
|
||||||
static bool _added_tile_sprite;
|
static bool _added_tile_sprite;
|
||||||
static bool _offset_ground_sprites;
|
static bool _offset_ground_sprites;
|
||||||
|
|
||||||
|
@ -119,6 +125,18 @@ static Point MapXYZToViewport(const ViewPort *vp, uint x, uint y, uint z)
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void InitViewports(void) {
|
||||||
|
memset(_viewports, 0, sizeof(_viewports));
|
||||||
|
_active_viewports = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeleteWindowViewport(Window *w)
|
||||||
|
{
|
||||||
|
CLRBIT(_active_viewports, w->viewport - _viewports);
|
||||||
|
w->viewport->width = 0;
|
||||||
|
w->viewport = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void AssignWindowViewport(Window *w, int x, int y,
|
void AssignWindowViewport(Window *w, int x, int y,
|
||||||
int width, int height, uint32 follow_flags, byte zoom)
|
int width, int height, uint32 follow_flags, byte zoom)
|
||||||
{
|
{
|
||||||
|
@ -126,11 +144,11 @@ void AssignWindowViewport(Window *w, int x, int y,
|
||||||
Point pt;
|
Point pt;
|
||||||
uint32 bit;
|
uint32 bit;
|
||||||
|
|
||||||
for (vp = _viewports, bit = 1; ; vp++, bit <<= 1) {
|
for (vp = _viewports, bit = 0; ; vp++, bit++) {
|
||||||
assert(vp != endof(_viewports));
|
assert(vp != endof(_viewports));
|
||||||
if (vp->width == 0) break;
|
if (vp->width == 0) break;
|
||||||
}
|
}
|
||||||
_active_viewports |= bit;
|
SETBIT(_active_viewports, bit);
|
||||||
|
|
||||||
vp->left = x + w->left;
|
vp->left = x + w->left;
|
||||||
vp->top = y + w->top;
|
vp->top = y + w->top;
|
||||||
|
|
|
@ -16,6 +16,8 @@ struct ViewPort {
|
||||||
void SetSelectionRed(bool);
|
void SetSelectionRed(bool);
|
||||||
|
|
||||||
/* viewport.c */
|
/* viewport.c */
|
||||||
|
void InitViewports(void);
|
||||||
|
void DeleteWindowViewport(Window *w);
|
||||||
void AssignWindowViewport(Window *w, int x, int y,
|
void AssignWindowViewport(Window *w, int x, int y,
|
||||||
int width, int height, uint32 follow_flags, byte zoom);
|
int width, int height, uint32 follow_flags, byte zoom);
|
||||||
ViewPort *IsPtInWindowViewport(const Window *w, int x, int y);
|
ViewPort *IsPtInWindowViewport(const Window *w, int x, int y);
|
||||||
|
@ -139,11 +141,6 @@ typedef struct TileHighlightData {
|
||||||
// common button handler
|
// common button handler
|
||||||
bool HandlePlacePushButton(Window *w, int widget, uint32 cursor, int mode, PlaceProc *placeproc);
|
bool HandlePlacePushButton(Window *w, int widget, uint32 cursor, int mode, PlaceProc *placeproc);
|
||||||
|
|
||||||
/* viewport.c */
|
|
||||||
// XXX - maximum viewports is maximum windows - 2 (main toolbar + status bar)
|
|
||||||
VARDEF ViewPort _viewports[25 - 2];
|
|
||||||
VARDEF uint32 _active_viewports;
|
|
||||||
|
|
||||||
VARDEF Point _tile_fract_coords;
|
VARDEF Point _tile_fract_coords;
|
||||||
|
|
||||||
extern TileHighlightData _thd;
|
extern TileHighlightData _thd;
|
||||||
|
|
9
window.c
9
window.c
|
@ -302,11 +302,7 @@ void DeleteWindow(Window *w)
|
||||||
|
|
||||||
w = FindWindowById(wc, wn);
|
w = FindWindowById(wc, wn);
|
||||||
|
|
||||||
if (w->viewport != NULL) {
|
if (w->viewport != NULL) DeleteWindowViewport(w);
|
||||||
CLRBIT(_active_viewports, w->viewport - _viewports);
|
|
||||||
w->viewport->width = 0;
|
|
||||||
w->viewport = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetWindowDirty(w);
|
SetWindowDirty(w);
|
||||||
|
|
||||||
|
@ -832,8 +828,7 @@ void InitWindowSystem(void)
|
||||||
|
|
||||||
memset(&_windows, 0, sizeof(_windows));
|
memset(&_windows, 0, sizeof(_windows));
|
||||||
_last_window = _windows;
|
_last_window = _windows;
|
||||||
memset(_viewports, 0, sizeof(_viewports));
|
InitViewports();
|
||||||
_active_viewports = 0;
|
|
||||||
_no_scroll = 0;
|
_no_scroll = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue