2003-10-10 12:47:41 +00:00
|
|
|
/* GStreamer X-based Overlay
|
|
|
|
* Copyright (C) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
|
2003-11-17 16:29:38 +00:00
|
|
|
* Copyright (C) 2003 Julien Moutte <julien@moutte.net>
|
2003-10-10 12:47:41 +00:00
|
|
|
*
|
|
|
|
* x-overlay.h: X-based overlay interface design
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Library General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Library General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Library General Public
|
|
|
|
* License along with this library; if not, write to the
|
|
|
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
|
|
* Boston, MA 02111-1307, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __GST_X_OVERLAY_H__
|
|
|
|
#define __GST_X_OVERLAY_H__
|
|
|
|
|
|
|
|
#include <gst/gst.h>
|
|
|
|
|
|
|
|
G_BEGIN_DECLS
|
2004-03-15 16:32:55 +00:00
|
|
|
|
2011-06-26 20:46:08 +00:00
|
|
|
/* FIXME 0.11: remove all CLASS bits, this is an interface */
|
|
|
|
|
2003-10-10 12:47:41 +00:00
|
|
|
#define GST_TYPE_X_OVERLAY \
|
|
|
|
(gst_x_overlay_get_type ())
|
|
|
|
#define GST_X_OVERLAY(obj) \
|
2011-06-26 20:46:08 +00:00
|
|
|
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_X_OVERLAY, GstXOverlay))
|
2003-10-10 12:47:41 +00:00
|
|
|
#define GST_X_OVERLAY_CLASS(klass) \
|
|
|
|
(G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_X_OVERLAY, GstXOverlayClass))
|
|
|
|
#define GST_IS_X_OVERLAY(obj) \
|
2011-06-26 20:46:08 +00:00
|
|
|
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_X_OVERLAY))
|
2003-10-10 12:47:41 +00:00
|
|
|
#define GST_IS_X_OVERLAY_CLASS(klass) \
|
|
|
|
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_X_OVERLAY))
|
|
|
|
#define GST_X_OVERLAY_GET_CLASS(inst) \
|
|
|
|
(G_TYPE_INSTANCE_GET_INTERFACE ((inst), GST_TYPE_X_OVERLAY, GstXOverlayClass))
|
2004-03-15 16:32:55 +00:00
|
|
|
|
2008-08-12 06:31:49 +00:00
|
|
|
/**
|
|
|
|
* GstXOverlay:
|
|
|
|
*
|
|
|
|
* Opaque #GstXOverlay data structure.
|
|
|
|
*/
|
2003-10-10 12:47:41 +00:00
|
|
|
typedef struct _GstXOverlay GstXOverlay;
|
2009-05-11 13:48:56 +00:00
|
|
|
typedef struct _GstXOverlayClass GstXOverlayClass;
|
2003-10-10 12:47:41 +00:00
|
|
|
|
2008-08-12 06:31:49 +00:00
|
|
|
/**
|
|
|
|
* GstXOverlayClass:
|
|
|
|
* @klass: parent interface type.
|
2011-05-23 20:41:56 +00:00
|
|
|
* @set_xwindow_id: (deprecated) virtual method to configure the XWindow handle
|
2008-08-12 06:31:49 +00:00
|
|
|
* @expose: virtual method to handle expose events
|
|
|
|
* @handle_events: virtual method to handle events
|
2010-03-24 09:59:42 +00:00
|
|
|
* @set_render_rectangle: virtual method to set the render rectangle (since 0.10.29)
|
2011-05-23 20:41:56 +00:00
|
|
|
* @set_window_handle: virtual method to configure the window handle
|
2008-08-12 06:31:49 +00:00
|
|
|
*
|
|
|
|
* #GstXOverlay interface
|
|
|
|
*/
|
2009-05-11 13:48:56 +00:00
|
|
|
struct _GstXOverlayClass {
|
2003-10-10 12:47:41 +00:00
|
|
|
GTypeInterface klass;
|
|
|
|
|
|
|
|
/* virtual functions */
|
2010-09-05 22:17:47 +00:00
|
|
|
#ifndef GST_DISABLE_DEPRECATED
|
2010-02-17 13:00:13 +00:00
|
|
|
void (* set_xwindow_id) (GstXOverlay *overlay,
|
|
|
|
gulong xwindow_id);
|
2010-09-05 22:17:47 +00:00
|
|
|
#else
|
2011-05-23 20:41:56 +00:00
|
|
|
#ifndef __GTK_DOC_IGNORE__
|
2010-09-05 22:17:47 +00:00
|
|
|
void (* set_xwindow_id_disabled) (GstXOverlay *overlay,
|
|
|
|
gulong xwindow_id);
|
2011-05-23 20:41:56 +00:00
|
|
|
#endif
|
2010-09-05 22:17:47 +00:00
|
|
|
#endif /* not GST_DISABLE_DEPRECATED */
|
2005-11-21 20:28:23 +00:00
|
|
|
|
2010-02-17 13:00:13 +00:00
|
|
|
void (* expose) (GstXOverlay *overlay);
|
2011-05-23 20:41:56 +00:00
|
|
|
|
2010-02-17 13:00:13 +00:00
|
|
|
void (* handle_events) (GstXOverlay *overlay,
|
2011-05-23 20:41:56 +00:00
|
|
|
gboolean handle_events);
|
2005-11-21 20:28:23 +00:00
|
|
|
|
2010-02-17 13:00:13 +00:00
|
|
|
void (* set_render_rectangle) (GstXOverlay *overlay,
|
2010-03-24 09:59:42 +00:00
|
|
|
gint x, gint y,
|
|
|
|
gint width, gint height);
|
|
|
|
|
2010-09-05 22:17:47 +00:00
|
|
|
void (* set_window_handle) (GstXOverlay *overlay,
|
|
|
|
guintptr handle);
|
2010-02-17 13:00:13 +00:00
|
|
|
/*< private >*/
|
2010-09-05 22:17:47 +00:00
|
|
|
gpointer _gst_reserved[GST_PADDING - 3];
|
2009-05-11 13:48:56 +00:00
|
|
|
};
|
2003-10-10 12:47:41 +00:00
|
|
|
|
2005-12-06 19:42:02 +00:00
|
|
|
GType gst_x_overlay_get_type (void);
|
2003-10-10 12:47:41 +00:00
|
|
|
|
|
|
|
/* virtual class function wrappers */
|
2010-09-05 22:17:47 +00:00
|
|
|
#ifndef GST_DISABLE_DEPRECATED
|
2011-05-23 20:41:56 +00:00
|
|
|
void gst_x_overlay_set_xwindow_id (GstXOverlay *overlay,
|
2010-02-17 13:00:13 +00:00
|
|
|
gulong xwindow_id);
|
2010-09-05 22:17:47 +00:00
|
|
|
#endif
|
2005-11-21 20:28:23 +00:00
|
|
|
|
2010-02-17 13:00:13 +00:00
|
|
|
gboolean gst_x_overlay_set_render_rectangle (GstXOverlay *overlay,
|
2010-03-24 09:59:42 +00:00
|
|
|
gint x, gint y,
|
|
|
|
gint width, gint height);
|
2010-02-17 13:00:13 +00:00
|
|
|
|
|
|
|
void gst_x_overlay_expose (GstXOverlay *overlay);
|
|
|
|
|
|
|
|
void gst_x_overlay_handle_events (GstXOverlay *overlay,
|
|
|
|
gboolean handle_events);
|
2005-11-21 20:28:23 +00:00
|
|
|
|
2011-05-23 20:41:56 +00:00
|
|
|
void gst_x_overlay_set_window_handle (GstXOverlay *overlay,
|
2010-09-05 22:17:47 +00:00
|
|
|
guintptr handle);
|
Add a method to the XOverlay interface to allow disabling of event handling in x[v]imagesink elements. This will let ...
Original commit message from CVS:
2007-01-04 Julien MOUTTE <julien@moutte.net>
* gst-libs/gst/interfaces/xoverlay.c:
(gst_x_overlay_handle_events):
* gst-libs/gst/interfaces/xoverlay.h:
* sys/ximage/ximagesink.c: (gst_ximagesink_xwindow_new),
(gst_ximagesink_set_xwindow_id),
(gst_ximagesink_set_event_handling),
(gst_ximagesink_xoverlay_init), (gst_ximagesink_set_property),
(gst_ximagesink_get_property), (gst_ximagesink_init),
(gst_ximagesink_class_init):
* sys/ximage/ximagesink.h:
* sys/xvimage/xvimagesink.c: (gst_xvimagesink_xwindow_new),
(gst_xvimagesink_set_xwindow_id),
(gst_xvimagesink_set_event_handling),
(gst_xvimagesink_xoverlay_init), (gst_xvimagesink_set_property),
(gst_xvimagesink_get_property), (gst_xvimagesink_init),
(gst_xvimagesink_class_init):
* sys/xvimage/xvimagesink.h:
* tests/icles/stress-xoverlay.c: (toggle_events),
(create_window):
Add a method to the XOverlay interface to allow disabling of
event handling in x[v]imagesink elements. This will let X events
propagate to parent windows which can be usefull in some cases.
Be carefull that the application is then responsible of pushing
navigation events and expose events to the video sink.
Fixes: #387138.
2007-01-04 11:30:53 +00:00
|
|
|
|
2005-11-21 20:28:23 +00:00
|
|
|
/* public methods to dispatch bus messages */
|
2010-09-05 22:17:47 +00:00
|
|
|
#ifndef GST_DISABLE_DEPRECATED
|
2005-11-21 20:28:23 +00:00
|
|
|
void gst_x_overlay_got_xwindow_id (GstXOverlay *overlay, gulong xwindow_id);
|
2010-09-05 22:17:47 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
void gst_x_overlay_got_window_handle (GstXOverlay *overlay,
|
|
|
|
guintptr handle);
|
2003-11-17 16:29:38 +00:00
|
|
|
|
2005-11-21 20:28:23 +00:00
|
|
|
void gst_x_overlay_prepare_xwindow_id (GstXOverlay *overlay);
|
2003-10-10 12:47:41 +00:00
|
|
|
|
|
|
|
G_END_DECLS
|
2004-03-15 16:32:55 +00:00
|
|
|
|
2003-10-10 12:47:41 +00:00
|
|
|
#endif /* __GST_X_OVERLAY_H__ */
|