private static NativeInput.PointerCoords pointerCoordsToNative( PointerCoords pointerCoordsObj, float xOffset, float yOffset) { NativeInput.PointerCoords outRawPointerCoords = new NativeInput.PointerCoords(); outRawPointerCoords.clear(); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_X, pointerCoordsObj.x - xOffset); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_Y, pointerCoordsObj.y - yOffset); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_PRESSURE, pointerCoordsObj.pressure); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_SIZE, pointerCoordsObj.size); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_TOUCH_MAJOR, pointerCoordsObj.touchMajor); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_TOUCH_MINOR, pointerCoordsObj.touchMinor); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_TOOL_MAJOR, pointerCoordsObj.toolMajor); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_TOOL_MINOR, pointerCoordsObj.toolMinor); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_ORIENTATION, pointerCoordsObj.orientation); long packedAxisBits = ReflectionHelpers.getField(pointerCoordsObj, "mPackedAxisBits"); NativeBitSet64 bits = new NativeBitSet64(packedAxisBits); if (!bits.isEmpty()) { float[] valuesArray = ReflectionHelpers.getField(pointerCoordsObj, "mPackedAxisValues"); if (valuesArray != null) { int index = 0; do { int axis = bits.clearFirstMarkedBit(); outRawPointerCoords.setAxisValue(axis, valuesArray[index++]); } while (!bits.isEmpty()); } } return outRawPointerCoords; }
private static NativeInput.PointerCoords pointerCoordsToNative( PointerCoords pointerCoordsObj, float xOffset, float yOffset) { NativeInput.PointerCoords outRawPointerCoords = new NativeInput.PointerCoords(); outRawPointerCoords.clear(); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_X, pointerCoordsObj.x - xOffset); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_Y, pointerCoordsObj.y - yOffset); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_PRESSURE, pointerCoordsObj.pressure); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_SIZE, pointerCoordsObj.size); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_TOUCH_MAJOR, pointerCoordsObj.touchMajor); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_TOUCH_MINOR, pointerCoordsObj.touchMinor); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_TOOL_MAJOR, pointerCoordsObj.toolMajor); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_TOOL_MINOR, pointerCoordsObj.toolMinor); outRawPointerCoords.setAxisValue(AMOTION_EVENT_AXIS_ORIENTATION, pointerCoordsObj.orientation); long packedAxisBits = ReflectionHelpers.getField(pointerCoordsObj, "mPackedAxisBits"); NativeBitSet64 bits = new NativeBitSet64(packedAxisBits); if (!bits.isEmpty()) { float[] valuesArray = ReflectionHelpers.getField(pointerCoordsObj, "mPackedAxisValues"); if (valuesArray != null) { int index = 0; do { int axis = bits.clearFirstMarkedBit(); outRawPointerCoords.setAxisValue(axis, valuesArray[index++]); } while (!bits.isEmpty()); } } return outRawPointerCoords; }