From 4d867fcaef3fd30fce7d66c6947e14fee5e2526e Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Fri, 16 Nov 2018 02:59:42 +0100 Subject: [PATCH] add floats for scaling --- inc/main.h | 5 +++++ src/main.c | 12 +++++++----- src/mouse.c | 17 +++++++---------- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/inc/main.h b/inc/main.h index cd1da26..69583c4 100644 --- a/inc/main.h +++ b/inc/main.h @@ -83,6 +83,11 @@ typedef struct IDirectDrawImpl LONG paletteUpdated; LONG surfaceUpdated; + + float scaleW; + float scaleH; + float unScaleW; + float unScaleH; } render; HWND hWnd; diff --git a/src/main.c b/src/main.c index df62bb2..b986535 100644 --- a/src/main.c +++ b/src/main.c @@ -609,6 +609,11 @@ HRESULT __stdcall ddraw_SetDisplayMode(IDirectDrawImpl *This, DWORD width, DWORD This->render.viewport.x = This->render.width / 2 - This->render.viewport.width / 2; } + This->render.scaleW = ((float)This->render.viewport.width / This->width); + This->render.scaleH = ((float)This->render.viewport.height / This->height); + This->render.unScaleW = ((float)This->width / This->render.viewport.width); + This->render.unScaleH = ((float)This->height / This->render.viewport.height); + if (This->windowed) { if (!This->border) @@ -1104,11 +1109,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) } else { - ddraw->cursor.x = - (x - ddraw->render.viewport.x) * ((float)ddraw->width / ddraw->render.viewport.width); - - ddraw->cursor.y = - (y - ddraw->render.viewport.y) * ((float)ddraw->height / ddraw->render.viewport.height); + ddraw->cursor.x = (x - ddraw->render.viewport.x) * ddraw->render.unScaleW; + ddraw->cursor.y = (y - ddraw->render.viewport.y) * ddraw->render.unScaleH; } mouse_lock(); diff --git a/src/mouse.c b/src/mouse.c index 6d56804..3d52c3b 100644 --- a/src/mouse.c +++ b/src/mouse.c @@ -71,8 +71,8 @@ BOOL WINAPI fake_GetCursorPos(LPPOINT lpPoint) if(ddraw->adjmouse) { - ddraw->cursor.x = pt.x * ((float)ddraw->width / ddraw->render.viewport.width); - ddraw->cursor.y = pt.y * ((float)ddraw->height / ddraw->render.viewport.height); + ddraw->cursor.x = pt.x * ddraw->render.unScaleW; + ddraw->cursor.y = pt.y * ddraw->render.unScaleH; } else { @@ -237,13 +237,13 @@ void mouse_lock() SetRect(&rc, pt.x, pt.y, pt2.x, pt2.y); - rc.bottom -= (yAdjust * 2) * ((float)ddraw->render.viewport.height / ddraw->height); + rc.bottom -= (yAdjust * 2) * ddraw->render.scaleH; if(ddraw->adjmouse) { SetCursorPos( - rc.left + (ddraw->cursor.x * ((float)ddraw->render.viewport.width / ddraw->width)), - rc.top + ((ddraw->cursor.y - yAdjust) * ((float)ddraw->render.viewport.height / ddraw->height))); + rc.left + (ddraw->cursor.x * ddraw->render.scaleW), + rc.top + ((ddraw->cursor.y - yAdjust) * ddraw->render.scaleH)); } else { @@ -304,11 +304,8 @@ void mouse_unlock() ReleaseCapture(); SetCursorPos( - rc.left + ddraw->render.viewport.x + - (ddraw->cursor.x * ((float)ddraw->render.viewport.width / ddraw->width)), - rc.top + ddraw->render.viewport.y + - ((ddraw->cursor.y + yAdjust) * ((float)ddraw->render.viewport.height / ddraw->height))); - + rc.left + ddraw->render.viewport.x + (ddraw->cursor.x * ddraw->render.scaleW), + rc.top + ddraw->render.viewport.y + ((ddraw->cursor.y + yAdjust) * ddraw->render.scaleH)); } }