summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2018-01-29 14:46:13 +0800
committerJonas Ådahl <jadahl@gmail.com>2018-02-23 19:33:31 +0800
commit4d5e1f690dcf42997f09c1638ea96ae7a603baef (patch)
tree5b7cd7ce9a1b7a6b1e0b8d85c92aa0a73f469e57
parentf3203f0330767652d398efb289a4f6dfbb41ddda (diff)
downloadmutter-4d5e1f690dcf42997f09c1638ea96ae7a603baef.tar.gz
screen-cast-stream: Add API to transform relative coordinates
Will be used to translate stream local coordinates to stage coordinates.
-rw-r--r--src/backends/meta-screen-cast-monitor-stream.c19
-rw-r--r--src/backends/meta-screen-cast-stream.c14
-rw-r--r--src/backends/meta-screen-cast-stream.h11
3 files changed, 44 insertions, 0 deletions
diff --git a/src/backends/meta-screen-cast-monitor-stream.c b/src/backends/meta-screen-cast-monitor-stream.c
index 853090a43..df43f977c 100644
--- a/src/backends/meta-screen-cast-monitor-stream.c
+++ b/src/backends/meta-screen-cast-monitor-stream.c
@@ -177,6 +177,24 @@ meta_screen_cast_monitor_stream_set_parameters (MetaScreenCastStream *stream,
}
static void
+meta_screen_cast_monitor_stream_transform_position (MetaScreenCastStream *stream,
+ double stream_x,
+ double stream_y,
+ double *x,
+ double *y)
+{
+ MetaScreenCastMonitorStream *monitor_stream =
+ META_SCREEN_CAST_MONITOR_STREAM (stream);
+ MetaRectangle logical_monitor_layout;
+
+ logical_monitor_layout =
+ meta_logical_monitor_get_layout (monitor_stream->logical_monitor);
+
+ *x = logical_monitor_layout.x + stream_x;
+ *y = logical_monitor_layout.y + stream_y;
+}
+
+static void
meta_screen_cast_monitor_stream_set_property (GObject *object,
guint prop_id,
const GValue *value,
@@ -247,6 +265,7 @@ meta_screen_cast_monitor_stream_class_init (MetaScreenCastMonitorStreamClass *kl
stream_class->create_src = meta_screen_cast_monitor_stream_create_src;
stream_class->set_parameters = meta_screen_cast_monitor_stream_set_parameters;
+ stream_class->transform_position = meta_screen_cast_monitor_stream_transform_position;
g_object_class_install_property (object_class,
PROP_MONITOR,
diff --git a/src/backends/meta-screen-cast-stream.c b/src/backends/meta-screen-cast-stream.c
index 1c9613585..97ee4bfcf 100644
--- a/src/backends/meta-screen-cast-stream.c
+++ b/src/backends/meta-screen-cast-stream.c
@@ -136,6 +136,20 @@ meta_screen_cast_stream_get_object_path (MetaScreenCastStream *stream)
return priv->object_path;
}
+void
+meta_screen_cast_stream_transform_position (MetaScreenCastStream *stream,
+ double stream_x,
+ double stream_y,
+ double *x,
+ double *y)
+{
+ META_SCREEN_CAST_STREAM_GET_CLASS (stream)->transform_position (stream,
+ stream_x,
+ stream_y,
+ x,
+ y);
+}
+
static void
meta_screen_cast_stream_set_property (GObject *object,
guint prop_id,
diff --git a/src/backends/meta-screen-cast-stream.h b/src/backends/meta-screen-cast-stream.h
index 36706ee7e..fd7930c4c 100644
--- a/src/backends/meta-screen-cast-stream.h
+++ b/src/backends/meta-screen-cast-stream.h
@@ -41,6 +41,11 @@ struct _MetaScreenCastStreamClass
GError **error);
void (* set_parameters) (MetaScreenCastStream *stream,
GVariantBuilder *parameters_builder);
+ void (* transform_position) (MetaScreenCastStream *stream,
+ double stream_x,
+ double stream_y,
+ double *x,
+ double *y);
};
gboolean meta_screen_cast_stream_start (MetaScreenCastStream *stream,
@@ -50,4 +55,10 @@ void meta_screen_cast_stream_close (MetaScreenCastStream *stream);
char * meta_screen_cast_stream_get_object_path (MetaScreenCastStream *stream);
+void meta_screen_cast_stream_transform_position (MetaScreenCastStream *stream,
+ double stream_x,
+ double stream_y,
+ double *x,
+ double *y);
+
#endif /* META_SCREEN_CAST_STREAM_H */