summaryrefslogtreecommitdiff
path: root/src/backends
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2019-01-23 19:09:17 +0100
committerJonas Ådahl <jadahl@gmail.com>2019-02-26 13:39:11 +0000
commita76107a19fea1162c31665d26d7427b298527ed8 (patch)
tree835eece9624a812720988f840b0f4d115214caca /src/backends
parent6372e3e4dbe546d6b4c9c6d3e3cbbd74797faedc (diff)
downloadmutter-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.c16
-rw-r--r--src/backends/meta-screen-cast-window.h13
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);