gtk: Export _display_size_to_stream_size()

Export _display_size_to_stream_size() so that GstNavigation implementors
can translate from display coordinates to stream coordinates before
pushing the events upstream to the DVD source, for example.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/974>
This commit is contained in:
Bastien Nocera 2021-05-05 14:24:31 +02:00 committed by GStreamer Marge Bot
parent 056f8ce6ca
commit 604278a194
2 changed files with 10 additions and 5 deletions

View file

@ -284,9 +284,9 @@ _fit_stream_to_allocated_size (GtkGstBaseWidget * base_widget,
}
}
static void
_display_size_to_stream_size (GtkGstBaseWidget * base_widget, gdouble x,
gdouble y, gdouble * stream_x, gdouble * stream_y)
void
gtk_gst_base_widget_display_size_to_stream_size (GtkGstBaseWidget * base_widget,
gdouble x, gdouble y, gdouble * stream_x, gdouble * stream_y)
{
gdouble stream_width, stream_height;
GtkAllocation allocation;
@ -337,7 +337,8 @@ gtk_gst_base_widget_button_event (GtkWidget * widget, GdkEventButton * event)
GDK_BUTTON_PRESS ? "mouse-button-press" : "mouse-button-release";
gdouble x, y;
_display_size_to_stream_size (base_widget, event->x, event->y, &x, &y);
gtk_gst_base_widget_display_size_to_stream_size (base_widget, event->x,
event->y, &x, &y);
gst_navigation_send_mouse_event (GST_NAVIGATION (element), key_type,
event->button, x, y);
@ -358,7 +359,8 @@ gtk_gst_base_widget_motion_event (GtkWidget * widget, GdkEventMotion * event)
if (GST_IS_NAVIGATION (element)) {
gdouble x, y;
_display_size_to_stream_size (base_widget, event->x, event->y, &x, &y);
gtk_gst_base_widget_display_size_to_stream_size (base_widget, event->x,
event->y, &x, &y);
gst_navigation_send_mouse_event (GST_NAVIGATION (element), "mouse-move",
0, x, y);

View file

@ -91,6 +91,9 @@ void gtk_gst_base_widget_finalize (GObject * object);
gboolean gtk_gst_base_widget_set_format (GtkGstBaseWidget * widget, GstVideoInfo * v_info);
void gtk_gst_base_widget_set_buffer (GtkGstBaseWidget * widget, GstBuffer * buffer);
void gtk_gst_base_widget_set_element (GtkGstBaseWidget * widget, GstElement * element);
void gtk_gst_base_widget_display_size_to_stream_size (GtkGstBaseWidget * base_widget,
gdouble x, gdouble y,
gdouble * stream_x, gdouble * stream_y);
G_END_DECLS