mirror of
https://github.com/AngelAuraMC/Amethyst-Android.git
synced 2025-09-17 08:35:37 -04:00
Support sub-pixel cursor precision
This commit is contained in:
parent
37202f21cd
commit
d183c991a0
@ -49,7 +49,7 @@ public class BaseMainActivity extends LoggableActivity {
|
|||||||
public double sensitivityFactor;
|
public double sensitivityFactor;
|
||||||
private final int fingerStillThreshold = (int) Tools.dpToPx(9);
|
private final int fingerStillThreshold = (int) Tools.dpToPx(9);
|
||||||
private float initialX, initialY;
|
private float initialX, initialY;
|
||||||
private int scrollInitialX, scrollInitialY;
|
private float scrollInitialX, scrollInitialY;
|
||||||
private float prevX, prevY;
|
private float prevX, prevY;
|
||||||
private int currentPointerID;
|
private int currentPointerID;
|
||||||
|
|
||||||
@ -62,8 +62,8 @@ public class BaseMainActivity extends LoggableActivity {
|
|||||||
switch (msg.what) {
|
switch (msg.what) {
|
||||||
case MSG_LEFT_MOUSE_BUTTON_CHECK:
|
case MSG_LEFT_MOUSE_BUTTON_CHECK:
|
||||||
if(LauncherPreferences.PREF_DISABLE_GESTURES) break;
|
if(LauncherPreferences.PREF_DISABLE_GESTURES) break;
|
||||||
int x = CallbackBridge.mouseX;
|
float x = CallbackBridge.mouseX;
|
||||||
int y = CallbackBridge.mouseY;
|
float y = CallbackBridge.mouseY;
|
||||||
if (CallbackBridge.isGrabbing() &&
|
if (CallbackBridge.isGrabbing() &&
|
||||||
Math.abs(initialX - x) < fingerStillThreshold &&
|
Math.abs(initialX - x) < fingerStillThreshold &&
|
||||||
Math.abs(initialY - y) < fingerStillThreshold) {
|
Math.abs(initialY - y) < fingerStillThreshold) {
|
||||||
|
@ -49,8 +49,8 @@ public class JavaGUILauncherActivity extends LoggableActivity implements View.On
|
|||||||
public void handleMessage(Message msg) {
|
public void handleMessage(Message msg) {
|
||||||
switch (msg.what) {
|
switch (msg.what) {
|
||||||
case MSG_LEFT_MOUSE_BUTTON_CHECK: {
|
case MSG_LEFT_MOUSE_BUTTON_CHECK: {
|
||||||
int x = CallbackBridge.mouseX;
|
float x = CallbackBridge.mouseX;
|
||||||
int y = CallbackBridge.mouseY;
|
float y = CallbackBridge.mouseY;
|
||||||
if (CallbackBridge.isGrabbing() &&
|
if (CallbackBridge.isGrabbing() &&
|
||||||
Math.abs(initialX - x) < fingerStillThreshold &&
|
Math.abs(initialX - x) < fingerStillThreshold &&
|
||||||
Math.abs(initialY - y) < fingerStillThreshold) {
|
Math.abs(initialY - y) < fingerStillThreshold) {
|
||||||
|
@ -15,7 +15,7 @@ public class CallbackBridge {
|
|||||||
|
|
||||||
public static volatile int windowWidth, windowHeight;
|
public static volatile int windowWidth, windowHeight;
|
||||||
public static volatile int physicalWidth, physicalHeight;
|
public static volatile int physicalWidth, physicalHeight;
|
||||||
public static int mouseX, mouseY;
|
public static float mouseX, mouseY;
|
||||||
public static StringBuilder DEBUG_STRING = new StringBuilder();
|
public static StringBuilder DEBUG_STRING = new StringBuilder();
|
||||||
|
|
||||||
// volatile private static boolean isGrabbing = false;
|
// volatile private static boolean isGrabbing = false;
|
||||||
@ -37,7 +37,7 @@ public class CallbackBridge {
|
|||||||
new Thread(new PusherRunnable(button,x,y)).run();
|
new Thread(new PusherRunnable(button,x,y)).run();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void putMouseEventWithCoords(int button, boolean isDown, int x, int y /* , int dz, long nanos */) {
|
public static void putMouseEventWithCoords(int button, boolean isDown, float x, float y /* , int dz, long nanos */) {
|
||||||
sendCursorPos(x, y);
|
sendCursorPos(x, y);
|
||||||
sendMouseKeycode(button, CallbackBridge.getCurrentMods(), isDown);
|
sendMouseKeycode(button, CallbackBridge.getCurrentMods(), isDown);
|
||||||
}
|
}
|
||||||
@ -49,8 +49,8 @@ public class CallbackBridge {
|
|||||||
}
|
}
|
||||||
|
|
||||||
DEBUG_STRING.append("CursorPos=").append(x).append(", ").append(y).append("\n");
|
DEBUG_STRING.append("CursorPos=").append(x).append(", ").append(y).append("\n");
|
||||||
mouseX = (int) x;
|
mouseX = x;
|
||||||
mouseY = (int) y;
|
mouseY = y;
|
||||||
nativeSendCursorPos(mouseX, mouseY);
|
nativeSendCursorPos(mouseX, mouseY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -201,7 +201,7 @@ public class CallbackBridge {
|
|||||||
private static native boolean nativeSendCharMods(char codepoint, int mods);
|
private static native boolean nativeSendCharMods(char codepoint, int mods);
|
||||||
private static native void nativeSendKey(int key, int scancode, int action, int mods);
|
private static native void nativeSendKey(int key, int scancode, int action, int mods);
|
||||||
// private static native void nativeSendCursorEnter(int entered);
|
// private static native void nativeSendCursorEnter(int entered);
|
||||||
private static native void nativeSendCursorPos(int x, int y);
|
private static native void nativeSendCursorPos(float x, float y);
|
||||||
private static native void nativeSendMouseButton(int button, int action, int mods);
|
private static native void nativeSendMouseButton(int button, int action, int mods);
|
||||||
private static native void nativeSendScroll(double xoffset, double yoffset);
|
private static native void nativeSendScroll(double xoffset, double yoffset);
|
||||||
private static native void nativeSendScreenSize(int width, int height);
|
private static native void nativeSendScreenSize(int width, int height);
|
||||||
|
@ -37,7 +37,7 @@ typedef void GLFW_invoke_MouseButton_func(void* window, int button, int action,
|
|||||||
typedef void GLFW_invoke_Scroll_func(void* window, double xoffset, double yoffset);
|
typedef void GLFW_invoke_Scroll_func(void* window, double xoffset, double yoffset);
|
||||||
typedef void GLFW_invoke_WindowSize_func(void* window, int width, int height);
|
typedef void GLFW_invoke_WindowSize_func(void* window, int width, int height);
|
||||||
|
|
||||||
static int grabCursorX, grabCursorY, lastCursorX, lastCursorY;
|
static float grabCursorX, grabCursorY, lastCursorX, lastCursorY;
|
||||||
|
|
||||||
jclass inputBridgeClass_ANDROID, inputBridgeClass_JRE;
|
jclass inputBridgeClass_ANDROID, inputBridgeClass_JRE;
|
||||||
jmethodID inputBridgeMethod_ANDROID, inputBridgeMethod_JRE;
|
jmethodID inputBridgeMethod_ANDROID, inputBridgeMethod_JRE;
|
||||||
@ -126,7 +126,7 @@ void getJavaInputBridge(jclass* clazz, jmethodID* method) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sendData(int type, int i1, int i2, int i3, int i4) {
|
void sendData(int type, float i1, float i2, int i3, int i4) {
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
LOGD("Debug: Send data, jnienv.isNull=%d\n", runtimeJNIEnvPtr_ANDROID == NULL);
|
LOGD("Debug: Send data, jnienv.isNull=%d\n", runtimeJNIEnvPtr_ANDROID == NULL);
|
||||||
#endif
|
#endif
|
||||||
@ -255,7 +255,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSendCursorEnter(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSendCursorPos(JNIEnv* env, jclass clazz, jint x, jint y) {
|
JNIEXPORT void JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSendCursorPos(JNIEnv* env, jclass clazz, jfloat x, jfloat y) {
|
||||||
if (GLFW_invoke_CursorPos && isInputReady) {
|
if (GLFW_invoke_CursorPos && isInputReady) {
|
||||||
if (!isCursorEntered) {
|
if (!isCursorEntered) {
|
||||||
if (GLFW_invoke_CursorEnter) {
|
if (GLFW_invoke_CursorEnter) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user