mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-11-10 08:38:20 +00:00
[client] refactor struct CursorState
to use struct DoublePoint
This commit is contained in:
parent
d2a4f8f346
commit
40c3c38681
@ -86,9 +86,9 @@ static void lgInit()
|
|||||||
g_state.state = APP_STATE_RUNNING;
|
g_state.state = APP_STATE_RUNNING;
|
||||||
g_state.resizeDone = true;
|
g_state.resizeDone = true;
|
||||||
|
|
||||||
g_cursor.scale = false;
|
g_cursor.useScale = false;
|
||||||
g_cursor.scaleX = 1.0f;
|
g_cursor.scale.x = 1.0;
|
||||||
g_cursor.scaleY = 1.0f;
|
g_cursor.scale.y = 1.0;
|
||||||
g_cursor.draw = true;
|
g_cursor.draw = true;
|
||||||
g_cursor.inView = false;
|
g_cursor.inView = false;
|
||||||
g_cursor.guest.valid = false;
|
g_cursor.guest.valid = false;
|
||||||
@ -154,13 +154,13 @@ static void updatePositionInfo()
|
|||||||
}
|
}
|
||||||
g_state.dstRect.valid = true;
|
g_state.dstRect.valid = true;
|
||||||
|
|
||||||
g_cursor.scale = (
|
g_cursor.useScale = (
|
||||||
g_state.srcSize.y != g_state.dstRect.h ||
|
g_state.srcSize.y != g_state.dstRect.h ||
|
||||||
g_state.srcSize.x != g_state.dstRect.w ||
|
g_state.srcSize.x != g_state.dstRect.w ||
|
||||||
g_cursor.guest.dpiScale != 100);
|
g_cursor.guest.dpiScale != 100);
|
||||||
|
|
||||||
g_cursor.scaleX = (float)g_state.srcSize.y / (float)g_state.dstRect.h;
|
g_cursor.scale.x = (float)g_state.srcSize.y / (float)g_state.dstRect.h;
|
||||||
g_cursor.scaleY = (float)g_state.srcSize.x / (float)g_state.dstRect.w;
|
g_cursor.scale.y = (float)g_state.srcSize.x / (float)g_state.dstRect.w;
|
||||||
g_cursor.dpiScale = g_cursor.guest.dpiScale / 100.0f;
|
g_cursor.dpiScale = g_cursor.guest.dpiScale / 100.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -843,12 +843,12 @@ static bool isValidCursorLocation(int x, int y)
|
|||||||
static void cursorToInt(double ex, double ey, int *x, int *y)
|
static void cursorToInt(double ex, double ey, int *x, int *y)
|
||||||
{
|
{
|
||||||
/* convert to int accumulating the fractional error */
|
/* convert to int accumulating the fractional error */
|
||||||
g_cursor.accX += ex;
|
g_cursor.acc.x += ex;
|
||||||
g_cursor.accY += ey;
|
g_cursor.acc.y += ey;
|
||||||
*x = floor(g_cursor.accX);
|
*x = floor(g_cursor.acc.x);
|
||||||
*y = floor(g_cursor.accY);
|
*y = floor(g_cursor.acc.y);
|
||||||
g_cursor.accX -= *x;
|
g_cursor.acc.x -= *x;
|
||||||
g_cursor.accY -= *y;
|
g_cursor.acc.y -= *y;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handleMouseGrabbed(double ex, double ey)
|
static void handleMouseGrabbed(double ex, double ey)
|
||||||
@ -880,10 +880,10 @@ static void handleMouseNormal(double ex, double ey)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* scale the movement to the guest */
|
/* scale the movement to the guest */
|
||||||
if (g_cursor.scale && params.scaleMouseInput)
|
if (g_cursor.useScale && params.scaleMouseInput)
|
||||||
{
|
{
|
||||||
ex *= g_cursor.scaleX / g_cursor.dpiScale;
|
ex *= g_cursor.scale.x / g_cursor.dpiScale;
|
||||||
ey *= g_cursor.scaleY / g_cursor.dpiScale;
|
ey *= g_cursor.scale.y / g_cursor.dpiScale;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool enter = false;
|
bool enter = false;
|
||||||
@ -919,8 +919,8 @@ static void handleMouseNormal(double ex, double ey)
|
|||||||
|
|
||||||
struct DoublePoint guest =
|
struct DoublePoint guest =
|
||||||
{
|
{
|
||||||
.x = (g_cursor.pos.x - g_state.dstRect.x) * g_cursor.scaleX * g_cursor.dpiScale,
|
.x = (g_cursor.pos.x - g_state.dstRect.x) * g_cursor.scale.x * g_cursor.dpiScale,
|
||||||
.y = (g_cursor.pos.y - g_state.dstRect.y) * g_cursor.scaleY * g_cursor.dpiScale
|
.y = (g_cursor.pos.y - g_state.dstRect.y) * g_cursor.scale.y * g_cursor.dpiScale
|
||||||
};
|
};
|
||||||
|
|
||||||
/* add the difference to the offset */
|
/* add the difference to the offset */
|
||||||
@ -940,8 +940,8 @@ static void handleMouseNormal(double ex, double ey)
|
|||||||
/* translate the guests position to our coordinate space */
|
/* translate the guests position to our coordinate space */
|
||||||
struct DoublePoint local =
|
struct DoublePoint local =
|
||||||
{
|
{
|
||||||
.x = (g_cursor.guest.x + g_cursor.guest.hx) / g_cursor.scaleX,
|
.x = (g_cursor.guest.x + g_cursor.guest.hx) / g_cursor.scale.x,
|
||||||
.y = (g_cursor.guest.y + g_cursor.guest.hy) / g_cursor.scaleY
|
.y = (g_cursor.guest.y + g_cursor.guest.hy) / g_cursor.scale.y
|
||||||
};
|
};
|
||||||
|
|
||||||
/* check if the move would push the cursor outside the guest's viewport */
|
/* check if the move would push the cursor outside the guest's viewport */
|
||||||
|
@ -188,33 +188,33 @@ struct DoublePoint
|
|||||||
struct CursorState
|
struct CursorState
|
||||||
{
|
{
|
||||||
/* cursor is in grab mode */
|
/* cursor is in grab mode */
|
||||||
bool grab;
|
bool grab;
|
||||||
|
|
||||||
/* true if we are to draw the cursor on screen */
|
/* true if we are to draw the cursor on screen */
|
||||||
bool draw;
|
bool draw;
|
||||||
|
|
||||||
/* true if the cursor is currently in our window */
|
/* true if the cursor is currently in our window */
|
||||||
bool inWindow;
|
bool inWindow;
|
||||||
|
|
||||||
/* true if the cursor is currently in the guest view area */
|
/* true if the cursor is currently in the guest view area */
|
||||||
bool inView;
|
bool inView;
|
||||||
|
|
||||||
/* true if the cursor needs re-drawing/updating */
|
/* true if the cursor needs re-drawing/updating */
|
||||||
bool redraw;
|
bool redraw;
|
||||||
|
|
||||||
/* true if the cursor movements should be scaled */
|
/* true if the cursor movements should be scaled */
|
||||||
bool scale;
|
bool useScale;
|
||||||
|
|
||||||
/* the amount to scale the X & Y movements by */
|
/* the amount to scale the X & Y movements by */
|
||||||
double scaleX, scaleY;
|
struct DoublePoint scale;
|
||||||
|
|
||||||
/* the dpi scale factor from the guest as a fraction */
|
/* the dpi scale factor from the guest as a fraction */
|
||||||
double dpiScale;
|
double dpiScale;
|
||||||
|
|
||||||
/* the error accumulators */
|
/* the error accumulator */
|
||||||
double accX, accY;
|
struct DoublePoint acc;
|
||||||
|
|
||||||
/* the local X & Y position */
|
/* the local position */
|
||||||
struct DoublePoint pos;
|
struct DoublePoint pos;
|
||||||
|
|
||||||
/* the delta since last warp when in auto capture mode */
|
/* the delta since last warp when in auto capture mode */
|
||||||
|
Loading…
Reference in New Issue
Block a user