1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

add floats for scaling

This commit is contained in:
FunkyFr3sh 2018-11-16 02:59:42 +01:00
parent ff8528a72c
commit 4d867fcaef
3 changed files with 19 additions and 15 deletions

View File

@ -83,6 +83,11 @@ typedef struct IDirectDrawImpl
LONG paletteUpdated; LONG paletteUpdated;
LONG surfaceUpdated; LONG surfaceUpdated;
float scaleW;
float scaleH;
float unScaleW;
float unScaleH;
} render; } render;
HWND hWnd; HWND hWnd;

View File

@ -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.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->windowed)
{ {
if (!This->border) if (!This->border)
@ -1104,11 +1109,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
} }
else else
{ {
ddraw->cursor.x = ddraw->cursor.x = (x - ddraw->render.viewport.x) * ddraw->render.unScaleW;
(x - ddraw->render.viewport.x) * ((float)ddraw->width / ddraw->render.viewport.width); ddraw->cursor.y = (y - ddraw->render.viewport.y) * ddraw->render.unScaleH;
ddraw->cursor.y =
(y - ddraw->render.viewport.y) * ((float)ddraw->height / ddraw->render.viewport.height);
} }
mouse_lock(); mouse_lock();

View File

@ -71,8 +71,8 @@ BOOL WINAPI fake_GetCursorPos(LPPOINT lpPoint)
if(ddraw->adjmouse) if(ddraw->adjmouse)
{ {
ddraw->cursor.x = pt.x * ((float)ddraw->width / ddraw->render.viewport.width); ddraw->cursor.x = pt.x * ddraw->render.unScaleW;
ddraw->cursor.y = pt.y * ((float)ddraw->height / ddraw->render.viewport.height); ddraw->cursor.y = pt.y * ddraw->render.unScaleH;
} }
else else
{ {
@ -237,13 +237,13 @@ void mouse_lock()
SetRect(&rc, pt.x, pt.y, pt2.x, pt2.y); 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) if(ddraw->adjmouse)
{ {
SetCursorPos( SetCursorPos(
rc.left + (ddraw->cursor.x * ((float)ddraw->render.viewport.width / ddraw->width)), rc.left + (ddraw->cursor.x * ddraw->render.scaleW),
rc.top + ((ddraw->cursor.y - yAdjust) * ((float)ddraw->render.viewport.height / ddraw->height))); rc.top + ((ddraw->cursor.y - yAdjust) * ddraw->render.scaleH));
} }
else else
{ {
@ -304,11 +304,8 @@ void mouse_unlock()
ReleaseCapture(); ReleaseCapture();
SetCursorPos( SetCursorPos(
rc.left + ddraw->render.viewport.x + rc.left + ddraw->render.viewport.x + (ddraw->cursor.x * ddraw->render.scaleW),
(ddraw->cursor.x * ((float)ddraw->render.viewport.width / ddraw->width)), rc.top + ddraw->render.viewport.y + ((ddraw->cursor.y + yAdjust) * ddraw->render.scaleH));
rc.top + ddraw->render.viewport.y +
((ddraw->cursor.y + yAdjust) * ((float)ddraw->render.viewport.height / ddraw->height)));
} }
} }