diff options
author | Jonas Ådahl <jadahl@gmail.com> | 2019-01-23 19:09:17 +0100 |
---|---|---|
committer | Jonas Ådahl <jadahl@gmail.com> | 2019-02-26 13:39:11 +0000 |
commit | a76107a19fea1162c31665d26d7427b298527ed8 (patch) | |
tree | 835eece9624a812720988f840b0f4d115214caca /src/backends | |
parent | 6372e3e4dbe546d6b4c9c6d3e3cbbd74797faedc (diff) | |
download | mutter-a76107a19fea1162c31665d26d7427b298527ed8.tar.gz |
screen-cast-window: Add API to transform cursor state
To be used to translate absolute cursor positions to relative positions,
as well as to determine whether a cursor sprite is inside the stream or
not. It also helps calculating the scale the cursor sprite needs to be
scaled with to be in stream coordinate space.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/413
Diffstat (limited to 'src/backends')
-rw-r--r-- | src/backends/meta-screen-cast-window.c | 16 | ||||
-rw-r--r-- | src/backends/meta-screen-cast-window.h | 13 |
2 files changed, 29 insertions, 0 deletions
diff --git a/src/backends/meta-screen-cast-window.c b/src/backends/meta-screen-cast-window.c index 9878b223f..5df8a3416 100644 --- a/src/backends/meta-screen-cast-window.c +++ b/src/backends/meta-screen-cast-window.c @@ -51,6 +51,22 @@ meta_screen_cast_window_transform_relative_position (MetaScreenCastWindow *scree y_out); } +gboolean +meta_screen_cast_window_transform_cursor_position (MetaScreenCastWindow *screen_cast_window, + MetaCursorSprite *cursor_sprite, + ClutterPoint *cursor_position, + float *out_cursor_scale, + ClutterPoint *out_relative_cursor_position) +{ + MetaScreenCastWindowInterface *iface = + META_SCREEN_CAST_WINDOW_GET_IFACE (screen_cast_window); + + return iface->transform_cursor_position (screen_cast_window, + cursor_sprite, + cursor_position, + out_cursor_scale, + out_relative_cursor_position); +} void meta_screen_cast_window_capture_into (MetaScreenCastWindow *screen_cast_window, diff --git a/src/backends/meta-screen-cast-window.h b/src/backends/meta-screen-cast-window.h index ba70f9b85..447fade7b 100644 --- a/src/backends/meta-screen-cast-window.h +++ b/src/backends/meta-screen-cast-window.h @@ -24,6 +24,7 @@ #include <stdint.h> #include <glib-object.h> +#include "backends/meta-cursor.h" #include "meta/boxes.h" G_BEGIN_DECLS @@ -45,6 +46,12 @@ struct _MetaScreenCastWindowInterface double *x_out, double *y_out); + gboolean (*transform_cursor_position) (MetaScreenCastWindow *screen_cast_window, + MetaCursorSprite *cursor_sprite, + ClutterPoint *cursor_position, + float *out_cursor_scale, + ClutterPoint *out_relative_cursor_position); + void (*capture_into) (MetaScreenCastWindow *screen_cast_window, MetaRectangle *bounds, uint8_t *data); @@ -59,6 +66,12 @@ void meta_screen_cast_window_transform_relative_position (MetaScreenCastWindow * double *x_out, double *y_out); +gboolean meta_screen_cast_window_transform_cursor_position (MetaScreenCastWindow *screen_cast_window, + MetaCursorSprite *cursor_sprite, + ClutterPoint *cursor_position, + float *out_cursor_scale, + ClutterPoint *out_relative_cursor_position); + void meta_screen_cast_window_capture_into (MetaScreenCastWindow *screen_cast_window, MetaRectangle *bounds, uint8_t *data); |