Changeset - r8922:4018defc583d
[Not reviewed]
master
0 1 0
rubidium - 16 years ago 2008-04-13 18:59:32
rubidium@openttd.org
(svn r12692) -Codechange: swap to functions to remove a function declaration.
1 file changed with 33 insertions and 39 deletions:
0 comments (0 inline, 0 general)
src/window.cpp
Show inline comments
 
@@ -250,33 +250,6 @@ static void DispatchMouseWheelEvent(Wind
 
	}
 
}
 

	
 
static void DrawOverlappedWindow(Window* const *wz, int left, int top, int right, int bottom);
 

	
 
/**
 
 * From a rectangle that needs redrawing, find the windows that intersect with the rectangle.
 
 * These windows should be re-painted.
 
 * @param left Left edge of the rectangle that should be repainted
 
 * @param top Top edge of the rectangle that should be repainted
 
 * @param right Right edge of the rectangle that should be repainted
 
 * @param bottom Bottom edge of the rectangle that should be repainted
 
 */
 
void DrawOverlappedWindowForAll(int left, int top, int right, int bottom)
 
{
 
	Window* const *wz;
 
	DrawPixelInfo bk;
 
	_cur_dpi = &bk;
 

	
 
	FOR_ALL_WINDOWS(wz) {
 
		const Window *w = *wz;
 
		if (right > w->left &&
 
				bottom > w->top &&
 
				left < w->left + w->width &&
 
				top < w->top + w->height) {
 
			DrawOverlappedWindow(wz, left, top, right, bottom);
 
		}
 
	}
 
}
 

	
 
/**
 
 * Generate repaint events for the visible part of window *wz within the rectangle.
 
 *
 
@@ -288,8 +261,6 @@ void DrawOverlappedWindowForAll(int left
 
 * @param top Top edge of the rectangle that should be repainted
 
 * @param right Right edge of the rectangle that should be repainted
 
 * @param bottom Bottom edge of the rectangle that should be repainted
 
 *
 
 * @todo Swap this function to above DrawOverlappedWindowForAll() to eliminate the forward declaration
 
 */
 
static void DrawOverlappedWindow(Window* const *wz, int left, int top, int right, int bottom)
 
{
 
@@ -333,16 +304,39 @@ static void DrawOverlappedWindow(Window*
 
		}
 
	}
 

	
 
	{
 
		DrawPixelInfo *dp = _cur_dpi;
 
		dp->width = right - left;
 
		dp->height = bottom - top;
 
		dp->left = left - (*wz)->left;
 
		dp->top = top - (*wz)->top;
 
		dp->pitch = _screen.pitch;
 
		dp->dst_ptr = BlitterFactoryBase::GetCurrentBlitter()->MoveTo(_screen.dst_ptr, left, top);
 
		dp->zoom = ZOOM_LVL_NORMAL;
 
		CallWindowEventNP(*wz, WE_PAINT);
 
	DrawPixelInfo *dp = _cur_dpi;
 
	dp->width = right - left;
 
	dp->height = bottom - top;
 
	dp->left = left - (*wz)->left;
 
	dp->top = top - (*wz)->top;
 
	dp->pitch = _screen.pitch;
 
	dp->dst_ptr = BlitterFactoryBase::GetCurrentBlitter()->MoveTo(_screen.dst_ptr, left, top);
 
	dp->zoom = ZOOM_LVL_NORMAL;
 
	CallWindowEventNP(*wz, WE_PAINT);
 
}
 

	
 
/**
 
 * From a rectangle that needs redrawing, find the windows that intersect with the rectangle.
 
 * These windows should be re-painted.
 
 * @param left Left edge of the rectangle that should be repainted
 
 * @param top Top edge of the rectangle that should be repainted
 
 * @param right Right edge of the rectangle that should be repainted
 
 * @param bottom Bottom edge of the rectangle that should be repainted
 
 */
 
void DrawOverlappedWindowForAll(int left, int top, int right, int bottom)
 
{
 
	Window* const *wz;
 
	DrawPixelInfo bk;
 
	_cur_dpi = &bk;
 

	
 
	FOR_ALL_WINDOWS(wz) {
 
		const Window *w = *wz;
 
		if (right > w->left &&
 
				bottom > w->top &&
 
				left < w->left + w->width &&
 
				top < w->top + w->height) {
 
			DrawOverlappedWindow(wz, left, top, right, bottom);
 
		}
 
	}
 
}
 

	
0 comments (0 inline, 0 general)