Swap position/point names
A point is a 2D vector. A position represent a point relative to the screen size.
This commit is contained in:
parent
f70359f14f
commit
879941355d
15 changed files with 109 additions and 109 deletions
|
@ -11,16 +11,16 @@ struct size {
|
||||||
Uint16 height;
|
Uint16 height;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct position {
|
struct point {
|
||||||
Uint16 x;
|
Uint16 x;
|
||||||
Uint16 y;
|
Uint16 y;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct point {
|
struct position {
|
||||||
// The video screen size may be different from the real device screen size,
|
// The video screen size may be different from the real device screen size,
|
||||||
// so store to which size the absolute position apply, to scale it accordingly.
|
// so store to which size the absolute position apply, to scale it accordingly.
|
||||||
struct size screen_size;
|
struct size screen_size;
|
||||||
struct position position;
|
struct point point;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -17,11 +17,11 @@ static inline void write32(Uint8 *buf, Uint32 value) {
|
||||||
buf[3] = value;
|
buf[3] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void write_point(Uint8 *buf, const struct point *point) {
|
static void write_position(Uint8 *buf, const struct position *position) {
|
||||||
write16(&buf[0], point->position.x);
|
write16(&buf[0], position->point.x);
|
||||||
write16(&buf[2], point->position.y);
|
write16(&buf[2], position->point.y);
|
||||||
write16(&buf[4], point->screen_size.width);
|
write16(&buf[4], position->screen_size.width);
|
||||||
write16(&buf[6], point->screen_size.height);
|
write16(&buf[6], position->screen_size.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
int control_event_serialize(const struct control_event *event, unsigned char *buf) {
|
int control_event_serialize(const struct control_event *event, unsigned char *buf) {
|
||||||
|
@ -45,10 +45,10 @@ int control_event_serialize(const struct control_event *event, unsigned char *bu
|
||||||
case CONTROL_EVENT_TYPE_MOUSE:
|
case CONTROL_EVENT_TYPE_MOUSE:
|
||||||
buf[1] = event->mouse_event.action;
|
buf[1] = event->mouse_event.action;
|
||||||
write32(&buf[2], event->mouse_event.buttons);
|
write32(&buf[2], event->mouse_event.buttons);
|
||||||
write_point(&buf[6], &event->mouse_event.point);
|
write_position(&buf[6], &event->mouse_event.position);
|
||||||
return 14;
|
return 14;
|
||||||
case CONTROL_EVENT_TYPE_SCROLL:
|
case CONTROL_EVENT_TYPE_SCROLL:
|
||||||
write_point(&buf[1], &event->scroll_event.point);
|
write_position(&buf[1], &event->scroll_event.position);
|
||||||
write32(&buf[9], (Uint32) event->scroll_event.hscroll);
|
write32(&buf[9], (Uint32) event->scroll_event.hscroll);
|
||||||
write32(&buf[13], (Uint32) event->scroll_event.vscroll);
|
write32(&buf[13], (Uint32) event->scroll_event.vscroll);
|
||||||
return 17;
|
return 17;
|
||||||
|
|
|
@ -33,10 +33,10 @@ struct control_event {
|
||||||
struct {
|
struct {
|
||||||
enum android_motionevent_action action;
|
enum android_motionevent_action action;
|
||||||
enum android_motionevent_buttons buttons;
|
enum android_motionevent_buttons buttons;
|
||||||
struct point point;
|
struct position position;
|
||||||
} mouse_event;
|
} mouse_event;
|
||||||
struct {
|
struct {
|
||||||
struct point point;
|
struct position position;
|
||||||
Sint32 hscroll;
|
Sint32 hscroll;
|
||||||
Sint32 vscroll;
|
Sint32 vscroll;
|
||||||
} scroll_event;
|
} scroll_event;
|
||||||
|
|
|
@ -144,32 +144,32 @@ SDL_bool mouse_button_from_sdl_to_android(const SDL_MouseButtonEvent *from,
|
||||||
}
|
}
|
||||||
|
|
||||||
to->mouse_event.buttons = convert_mouse_buttons(SDL_BUTTON(from->button));
|
to->mouse_event.buttons = convert_mouse_buttons(SDL_BUTTON(from->button));
|
||||||
to->mouse_event.point.screen_size = screen_size;
|
to->mouse_event.position.screen_size = screen_size;
|
||||||
to->mouse_event.point.position.x = (Uint16) from->x;
|
to->mouse_event.position.point.x = (Uint16) from->x;
|
||||||
to->mouse_event.point.position.y = (Uint16) from->y;
|
to->mouse_event.position.point.y = (Uint16) from->y;
|
||||||
|
|
||||||
return SDL_TRUE;
|
return SDL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool mouse_motion_from_sdl_to_android(const SDL_MouseMotionEvent *from,
|
SDL_bool mouse_motion_from_sdl_to_android(const SDL_MouseMotionEvent *from,
|
||||||
const struct size screen_size,
|
struct size screen_size,
|
||||||
struct control_event *to) {
|
struct control_event *to) {
|
||||||
to->type = CONTROL_EVENT_TYPE_MOUSE;
|
to->type = CONTROL_EVENT_TYPE_MOUSE;
|
||||||
to->mouse_event.action = AMOTION_EVENT_ACTION_MOVE;
|
to->mouse_event.action = AMOTION_EVENT_ACTION_MOVE;
|
||||||
to->mouse_event.buttons = convert_mouse_buttons(from->state);
|
to->mouse_event.buttons = convert_mouse_buttons(from->state);
|
||||||
to->mouse_event.point.screen_size = screen_size;
|
to->mouse_event.position.screen_size = screen_size;
|
||||||
to->mouse_event.point.position.x = from->x;
|
to->mouse_event.position.point.x = from->x;
|
||||||
to->mouse_event.point.position.y = from->y;
|
to->mouse_event.position.point.y = from->y;
|
||||||
|
|
||||||
return SDL_TRUE;
|
return SDL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool mouse_wheel_from_sdl_to_android(const SDL_MouseWheelEvent *from,
|
SDL_bool mouse_wheel_from_sdl_to_android(const SDL_MouseWheelEvent *from,
|
||||||
const struct point point,
|
struct position position,
|
||||||
struct control_event *to) {
|
struct control_event *to) {
|
||||||
to->type = CONTROL_EVENT_TYPE_SCROLL;
|
to->type = CONTROL_EVENT_TYPE_SCROLL;
|
||||||
|
|
||||||
to->scroll_event.point = point;
|
to->scroll_event.position = position;
|
||||||
|
|
||||||
int mul = from->direction == SDL_MOUSEWHEEL_NORMAL ? 1 : -1;
|
int mul = from->direction == SDL_MOUSEWHEEL_NORMAL ? 1 : -1;
|
||||||
to->scroll_event.hscroll = mul * from->x;
|
to->scroll_event.hscroll = mul * from->x;
|
||||||
|
|
|
@ -29,7 +29,7 @@ SDL_bool mouse_motion_from_sdl_to_android(const SDL_MouseMotionEvent *from,
|
||||||
|
|
||||||
// on Android, a scroll event requires the current mouse position
|
// on Android, a scroll event requires the current mouse position
|
||||||
SDL_bool mouse_wheel_from_sdl_to_android(const SDL_MouseWheelEvent *from,
|
SDL_bool mouse_wheel_from_sdl_to_android(const SDL_MouseWheelEvent *from,
|
||||||
struct point point,
|
struct position position,
|
||||||
struct control_event *to);
|
struct control_event *to);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -104,12 +104,12 @@ static inline struct size get_window_size(SDL_Window *window) {
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct position get_mouse_position() {
|
static inline struct point get_mouse_point() {
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
SDL_GetMouseState(&x, &y);
|
SDL_GetMouseState(&x, &y);
|
||||||
SDL_assert_release(x >= 0 && x < 0x10000 && y >= 0 && y < 0x10000);
|
SDL_assert_release(x >= 0 && x < 0x10000 && y >= 0 && y < 0x10000);
|
||||||
return (struct position) {
|
return (struct point) {
|
||||||
.x = (Uint16) x,
|
.x = (Uint16) x,
|
||||||
.y = (Uint16) y,
|
.y = (Uint16) y,
|
||||||
};
|
};
|
||||||
|
@ -322,9 +322,9 @@ static void handle_mouse_button(const SDL_MouseButtonEvent *event, struct size s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handle_mouse_wheel(const SDL_MouseWheelEvent *event, struct point point) {
|
static void handle_mouse_wheel(const SDL_MouseWheelEvent *event, struct position position) {
|
||||||
struct control_event control_event;
|
struct control_event control_event;
|
||||||
if (mouse_wheel_from_sdl_to_android(event, point, &control_event)) {
|
if (mouse_wheel_from_sdl_to_android(event, position, &control_event)) {
|
||||||
if (!controller_push_event(&controller, &control_event)) {
|
if (!controller_push_event(&controller, &control_event)) {
|
||||||
SDL_LogWarn(SDL_LOG_CATEGORY_APPLICATION, "Cannot send wheel button event");
|
SDL_LogWarn(SDL_LOG_CATEGORY_APPLICATION, "Cannot send wheel button event");
|
||||||
}
|
}
|
||||||
|
@ -366,11 +366,11 @@ void event_loop(void) {
|
||||||
handle_mouse_motion(&event.motion, frame_size);
|
handle_mouse_motion(&event.motion, frame_size);
|
||||||
break;
|
break;
|
||||||
case SDL_MOUSEWHEEL: {
|
case SDL_MOUSEWHEEL: {
|
||||||
struct point point = {
|
struct position position = {
|
||||||
.screen_size = frame_size,
|
.screen_size = frame_size,
|
||||||
.position = get_mouse_position(),
|
.point = get_mouse_point(),
|
||||||
};
|
};
|
||||||
handle_mouse_wheel(&event.wheel, point);
|
handle_mouse_wheel(&event.wheel, position);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SDL_MOUSEBUTTONDOWN:
|
case SDL_MOUSEBUTTONDOWN:
|
||||||
|
|
|
@ -51,8 +51,8 @@ static void test_serialize_mouse_event() {
|
||||||
.mouse_event = {
|
.mouse_event = {
|
||||||
.action = AMOTION_EVENT_ACTION_DOWN,
|
.action = AMOTION_EVENT_ACTION_DOWN,
|
||||||
.buttons = AMOTION_EVENT_BUTTON_PRIMARY,
|
.buttons = AMOTION_EVENT_BUTTON_PRIMARY,
|
||||||
.point = {
|
.position = {
|
||||||
.position = {
|
.point = {
|
||||||
.x = 260,
|
.x = 260,
|
||||||
.y = 1026,
|
.y = 1026,
|
||||||
},
|
},
|
||||||
|
@ -82,8 +82,8 @@ static void test_serialize_scroll_event() {
|
||||||
struct control_event event = {
|
struct control_event event = {
|
||||||
.type = CONTROL_EVENT_TYPE_SCROLL,
|
.type = CONTROL_EVENT_TYPE_SCROLL,
|
||||||
.scroll_event = {
|
.scroll_event = {
|
||||||
.point = {
|
.position = {
|
||||||
.position = {
|
.point = {
|
||||||
.x = 260,
|
.x = 260,
|
||||||
.y = 1026,
|
.y = 1026,
|
||||||
},
|
},
|
||||||
|
|
|
@ -27,7 +27,7 @@ SRC := com/genymobile/scrcpy/ScrCpyServer.java \
|
||||||
com/genymobile/scrcpy/EventController.java \
|
com/genymobile/scrcpy/EventController.java \
|
||||||
com/genymobile/scrcpy/Ln.java \
|
com/genymobile/scrcpy/Ln.java \
|
||||||
com/genymobile/scrcpy/Point.java \
|
com/genymobile/scrcpy/Point.java \
|
||||||
com/genymobile/scrcpy/RawPoint.java \
|
com/genymobile/scrcpy/Position.java \
|
||||||
com/genymobile/scrcpy/ScreenInfo.java \
|
com/genymobile/scrcpy/ScreenInfo.java \
|
||||||
com/genymobile/scrcpy/ScreenStreamer.java \
|
com/genymobile/scrcpy/ScreenStreamer.java \
|
||||||
com/genymobile/scrcpy/ScreenStreamerSession.java \
|
com/genymobile/scrcpy/ScreenStreamerSession.java \
|
||||||
|
|
|
@ -16,7 +16,7 @@ public class ControlEvent {
|
||||||
private int action; // KeyEvent.ACTION_* or MotionEvent.ACTION_*
|
private int action; // KeyEvent.ACTION_* or MotionEvent.ACTION_*
|
||||||
private int keycode; // KeyEvent.KEYCODE_*
|
private int keycode; // KeyEvent.KEYCODE_*
|
||||||
private int buttons; // MotionEvent.BUTTON_*
|
private int buttons; // MotionEvent.BUTTON_*
|
||||||
private Point point;
|
private Position position;
|
||||||
private int hScroll;
|
private int hScroll;
|
||||||
private int vScroll;
|
private int vScroll;
|
||||||
|
|
||||||
|
@ -39,19 +39,19 @@ public class ControlEvent {
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ControlEvent createMotionControlEvent(int action, int buttons, Point point) {
|
public static ControlEvent createMotionControlEvent(int action, int buttons, Position position) {
|
||||||
ControlEvent event = new ControlEvent();
|
ControlEvent event = new ControlEvent();
|
||||||
event.type = TYPE_MOUSE;
|
event.type = TYPE_MOUSE;
|
||||||
event.action = action;
|
event.action = action;
|
||||||
event.buttons = buttons;
|
event.buttons = buttons;
|
||||||
event.point = point;
|
event.position = position;
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ControlEvent createScrollControlEvent(Point point, int hScroll, int vScroll) {
|
public static ControlEvent createScrollControlEvent(Position position, int hScroll, int vScroll) {
|
||||||
ControlEvent event = new ControlEvent();
|
ControlEvent event = new ControlEvent();
|
||||||
event.type = TYPE_SCROLL;
|
event.type = TYPE_SCROLL;
|
||||||
event.point = point;
|
event.position = position;
|
||||||
event.hScroll = hScroll;
|
event.hScroll = hScroll;
|
||||||
event.vScroll = vScroll;
|
event.vScroll = vScroll;
|
||||||
return event;
|
return event;
|
||||||
|
@ -81,8 +81,8 @@ public class ControlEvent {
|
||||||
return buttons;
|
return buttons;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Point getPoint() {
|
public Position getPosition() {
|
||||||
return point;
|
return position;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getHScroll() {
|
public int getHScroll() {
|
||||||
|
|
|
@ -74,17 +74,17 @@ public class ControlEventReader {
|
||||||
}
|
}
|
||||||
int action = toUnsigned(buffer.get());
|
int action = toUnsigned(buffer.get());
|
||||||
int buttons = buffer.getInt();
|
int buttons = buffer.getInt();
|
||||||
Point point = readPoint(buffer);
|
Position position = readPosition(buffer);
|
||||||
return ControlEvent.createMotionControlEvent(action, buttons, point);
|
return ControlEvent.createMotionControlEvent(action, buttons, position);
|
||||||
}
|
}
|
||||||
case ControlEvent.TYPE_SCROLL: {
|
case ControlEvent.TYPE_SCROLL: {
|
||||||
if (buffer.remaining() < SCROLL_PAYLOAD_LENGTH) {
|
if (buffer.remaining() < SCROLL_PAYLOAD_LENGTH) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Point point = readPoint(buffer);
|
Position position = readPosition(buffer);
|
||||||
int hscroll = buffer.getInt();
|
int hScroll = buffer.getInt();
|
||||||
int vscroll = buffer.getInt();
|
int vScroll = buffer.getInt();
|
||||||
return ControlEvent.createScrollControlEvent(point, hscroll, vscroll);
|
return ControlEvent.createScrollControlEvent(position, hScroll, vScroll);
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
Ln.w("Unknown event type: " + type);
|
Ln.w("Unknown event type: " + type);
|
||||||
|
@ -95,12 +95,12 @@ public class ControlEventReader {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Point readPoint(ByteBuffer buffer) {
|
private static Position readPosition(ByteBuffer buffer) {
|
||||||
int x = toUnsigned(buffer.getShort());
|
int x = toUnsigned(buffer.getShort());
|
||||||
int y = toUnsigned(buffer.getShort());
|
int y = toUnsigned(buffer.getShort());
|
||||||
int screenWidth = toUnsigned(buffer.getShort());
|
int screenWidth = toUnsigned(buffer.getShort());
|
||||||
int screenHeight = toUnsigned(buffer.getShort());
|
int screenHeight = toUnsigned(buffer.getShort());
|
||||||
return new Point(x, y, screenWidth, screenHeight);
|
return new Position(x, y, screenWidth, screenHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int toUnsigned(short value) {
|
private static int toUnsigned(short value) {
|
||||||
|
|
|
@ -48,13 +48,13 @@ public class Device {
|
||||||
return screenInfo;
|
return screenInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RawPoint getPhysicalPoint(Point point) {
|
public Point getPhysicalPoint(Position position) {
|
||||||
ScreenInfo screenInfo = getScreenInfo();
|
ScreenInfo screenInfo = getScreenInfo();
|
||||||
int deviceWidth = screenInfo.getLogicalWidth();
|
int deviceWidth = screenInfo.getLogicalWidth();
|
||||||
int deviceHeight = screenInfo.getLogicalHeight();
|
int deviceHeight = screenInfo.getLogicalHeight();
|
||||||
int scaledX = point.getX() * deviceWidth / point.getScreenWidth();
|
int scaledX = position.getX() * deviceWidth / position.getScreenWidth();
|
||||||
int scaledY = point.getY() * deviceHeight / point.getScreenHeight();
|
int scaledY = position.getY() * deviceHeight / position.getScreenHeight();
|
||||||
return new RawPoint(scaledX, scaledY);
|
return new Point(scaledX, scaledY);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ScreenInfo readScreenInfo() {
|
private ScreenInfo readScreenInfo() {
|
||||||
|
|
|
@ -43,10 +43,10 @@ public class EventController {
|
||||||
coords.touchMinor = 1;
|
coords.touchMinor = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setPointerCoords(RawPoint rawPoint) {
|
private void setPointerCoords(Point point) {
|
||||||
MotionEvent.PointerCoords coords = pointerCoords[0];
|
MotionEvent.PointerCoords coords = pointerCoords[0];
|
||||||
coords.x = rawPoint.getX();
|
coords.x = point.getX();
|
||||||
coords.y = rawPoint.getY();
|
coords.y = point.getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setScroll(int hScroll, int vScroll) {
|
private void setScroll(int hScroll, int vScroll) {
|
||||||
|
@ -72,10 +72,10 @@ public class EventController {
|
||||||
injectText(controlEvent.getText());
|
injectText(controlEvent.getText());
|
||||||
break;
|
break;
|
||||||
case ControlEvent.TYPE_MOUSE:
|
case ControlEvent.TYPE_MOUSE:
|
||||||
injectMouse(controlEvent.getAction(), controlEvent.getButtons(), controlEvent.getPoint());
|
injectMouse(controlEvent.getAction(), controlEvent.getButtons(), controlEvent.getPosition());
|
||||||
break;
|
break;
|
||||||
case ControlEvent.TYPE_SCROLL:
|
case ControlEvent.TYPE_SCROLL:
|
||||||
injectScroll(controlEvent.getPoint(), controlEvent.getHScroll(), controlEvent.getVScroll());
|
injectScroll(controlEvent.getPosition(), controlEvent.getHScroll(), controlEvent.getVScroll());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -97,29 +97,29 @@ public class EventController {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean injectMouse(int action, int buttons, Point point) {
|
private boolean injectMouse(int action, int buttons, Position position) {
|
||||||
long now = SystemClock.uptimeMillis();
|
long now = SystemClock.uptimeMillis();
|
||||||
if (action == MotionEvent.ACTION_DOWN) {
|
if (action == MotionEvent.ACTION_DOWN) {
|
||||||
lastMouseDown = now;
|
lastMouseDown = now;
|
||||||
}
|
}
|
||||||
RawPoint rawPoint = Device.getInstance().getPhysicalPoint(point);
|
Point point = Device.getInstance().getPhysicalPoint(position);
|
||||||
if (rawPoint == null) {
|
if (point == null) {
|
||||||
// ignore event
|
// ignore event
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
setPointerCoords(rawPoint);
|
setPointerCoords(point);
|
||||||
MotionEvent event = MotionEvent.obtain(lastMouseDown, now, action, 1, pointerProperties, pointerCoords, 0, buttons, 1f, 1f, 0, 0, InputDevice.SOURCE_TOUCHSCREEN, 0);
|
MotionEvent event = MotionEvent.obtain(lastMouseDown, now, action, 1, pointerProperties, pointerCoords, 0, buttons, 1f, 1f, 0, 0, InputDevice.SOURCE_TOUCHSCREEN, 0);
|
||||||
return injectEvent(event);
|
return injectEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean injectScroll(Point point, int hScroll, int vScroll) {
|
private boolean injectScroll(Position position, int hScroll, int vScroll) {
|
||||||
long now = SystemClock.uptimeMillis();
|
long now = SystemClock.uptimeMillis();
|
||||||
RawPoint rawPoint = Device.getInstance().getPhysicalPoint(point);
|
Point point = Device.getInstance().getPhysicalPoint(position);
|
||||||
if (rawPoint == null) {
|
if (point == null) {
|
||||||
// ignore event
|
// ignore event
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
setPointerCoords(rawPoint);
|
setPointerCoords(point);
|
||||||
setScroll(hScroll, vScroll);
|
setScroll(hScroll, vScroll);
|
||||||
MotionEvent event = MotionEvent.obtain(lastMouseDown, now, MotionEvent.ACTION_SCROLL, 1, pointerProperties, pointerCoords, 0, 0, 1f, 1f, 0, 0, InputDevice.SOURCE_MOUSE, 0);
|
MotionEvent event = MotionEvent.obtain(lastMouseDown, now, MotionEvent.ACTION_SCROLL, 1, pointerProperties, pointerCoords, 0, 0, 1f, 1f, 0, 0, InputDevice.SOURCE_MOUSE, 0);
|
||||||
return injectEvent(event);
|
return injectEvent(event);
|
||||||
|
|
|
@ -1,17 +1,12 @@
|
||||||
package com.genymobile.scrcpy;
|
package com.genymobile.scrcpy;
|
||||||
|
|
||||||
public class Point {
|
public class Point {
|
||||||
|
|
||||||
private int x;
|
private int x;
|
||||||
private int y;
|
private int y;
|
||||||
private int screenWidth;
|
|
||||||
private int screenHeight;
|
|
||||||
|
|
||||||
public Point(int x, int y, int screenWidth, int screenHeight) {
|
public Point(int x, int y) {
|
||||||
this.x = x;
|
this.x = x;
|
||||||
this.y = y;
|
this.y = y;
|
||||||
this.screenWidth = screenWidth;
|
|
||||||
this.screenHeight = screenHeight;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getX() {
|
public int getX() {
|
||||||
|
@ -22,21 +17,11 @@ public class Point {
|
||||||
return y;
|
return y;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getScreenWidth() {
|
|
||||||
return screenWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getScreenHeight() {
|
|
||||||
return screenHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Point{" +
|
return "Point{" +
|
||||||
"x=" + x +
|
"x=" + x +
|
||||||
", y=" + y +
|
", y=" + y +
|
||||||
", screenWidth=" + screenWidth +
|
|
||||||
", screenHeight=" + screenHeight +
|
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
42
server/src/com/genymobile/scrcpy/Position.java
Normal file
42
server/src/com/genymobile/scrcpy/Position.java
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
package com.genymobile.scrcpy;
|
||||||
|
|
||||||
|
public class Position {
|
||||||
|
|
||||||
|
private int x;
|
||||||
|
private int y;
|
||||||
|
private int screenWidth;
|
||||||
|
private int screenHeight;
|
||||||
|
|
||||||
|
public Position(int x, int y, int screenWidth, int screenHeight) {
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.screenWidth = screenWidth;
|
||||||
|
this.screenHeight = screenHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getY() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getScreenWidth() {
|
||||||
|
return screenWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getScreenHeight() {
|
||||||
|
return screenHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Point{" +
|
||||||
|
"x=" + x +
|
||||||
|
", y=" + y +
|
||||||
|
", screenWidth=" + screenWidth +
|
||||||
|
", screenHeight=" + screenHeight +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,27 +0,0 @@
|
||||||
package com.genymobile.scrcpy;
|
|
||||||
|
|
||||||
public class RawPoint {
|
|
||||||
private int x;
|
|
||||||
private int y;
|
|
||||||
|
|
||||||
public RawPoint(int x, int y) {
|
|
||||||
this.x = x;
|
|
||||||
this.y = y;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getX() {
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getY() {
|
|
||||||
return y;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "RawPoint{" +
|
|
||||||
"x=" + x +
|
|
||||||
", y=" + y +
|
|
||||||
'}';
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue