gstreamer_player/auto/
player_video_overlay_video_renderer.rs1use crate::{ffi, PlayerVideoRenderer};
7use glib::{
8    prelude::*,
9    signal::{connect_raw, SignalHandlerId},
10    translate::*,
11};
12use std::boxed::Box as Box_;
13
14glib::wrapper! {
15    #[doc(alias = "GstPlayerVideoOverlayVideoRenderer")]
31    pub struct PlayerVideoOverlayVideoRenderer(Object<ffi::GstPlayerVideoOverlayVideoRenderer, ffi::GstPlayerVideoOverlayVideoRendererClass>) @implements PlayerVideoRenderer;
32
33    match fn {
34        type_ => || ffi::gst_player_video_overlay_video_renderer_get_type(),
35    }
36}
37
38impl PlayerVideoOverlayVideoRenderer {
39    #[doc(alias = "gst_player_video_overlay_video_renderer_expose")]
42    pub fn expose(&self) {
43        unsafe {
44            ffi::gst_player_video_overlay_video_renderer_expose(self.to_glib_none().0);
45        }
46    }
47
48    #[doc(alias = "gst_player_video_overlay_video_renderer_get_render_rectangle")]
66    #[doc(alias = "get_render_rectangle")]
67    pub fn render_rectangle(&self) -> (i32, i32, i32, i32) {
68        unsafe {
69            let mut x = std::mem::MaybeUninit::uninit();
70            let mut y = std::mem::MaybeUninit::uninit();
71            let mut width = std::mem::MaybeUninit::uninit();
72            let mut height = std::mem::MaybeUninit::uninit();
73            ffi::gst_player_video_overlay_video_renderer_get_render_rectangle(
74                self.to_glib_none().0,
75                x.as_mut_ptr(),
76                y.as_mut_ptr(),
77                width.as_mut_ptr(),
78                height.as_mut_ptr(),
79            );
80            (
81                x.assume_init(),
82                y.assume_init(),
83                width.assume_init(),
84                height.assume_init(),
85            )
86        }
87    }
88
89    #[doc(alias = "gst_player_video_overlay_video_renderer_set_render_rectangle")]
108    pub fn set_render_rectangle(&self, x: i32, y: i32, width: i32, height: i32) {
109        unsafe {
110            ffi::gst_player_video_overlay_video_renderer_set_render_rectangle(
111                self.to_glib_none().0,
112                x,
113                y,
114                width,
115                height,
116            );
117        }
118    }
119
120    #[doc(alias = "video-sink")]
121    pub fn video_sink(&self) -> Option<gst::Element> {
122        ObjectExt::property(self, "video-sink")
123    }
124
125    #[doc(alias = "video-sink")]
126    pub fn set_video_sink<P: IsA<gst::Element>>(&self, video_sink: Option<&P>) {
127        ObjectExt::set_property(self, "video-sink", video_sink)
128    }
129
130    #[doc(alias = "video-sink")]
131    pub fn connect_video_sink_notify<F: Fn(&Self) + Send + Sync + 'static>(
132        &self,
133        f: F,
134    ) -> SignalHandlerId {
135        unsafe extern "C" fn notify_video_sink_trampoline<
136            F: Fn(&PlayerVideoOverlayVideoRenderer) + Send + Sync + 'static,
137        >(
138            this: *mut ffi::GstPlayerVideoOverlayVideoRenderer,
139            _param_spec: glib::ffi::gpointer,
140            f: glib::ffi::gpointer,
141        ) {
142            let f: &F = &*(f as *const F);
143            f(&from_glib_borrow(this))
144        }
145        unsafe {
146            let f: Box_<F> = Box_::new(f);
147            connect_raw(
148                self.as_ptr() as *mut _,
149                c"notify::video-sink".as_ptr() as *const _,
150                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
151                    notify_video_sink_trampoline::<F> as *const (),
152                )),
153                Box_::into_raw(f),
154            )
155        }
156    }
157
158    #[doc(alias = "window-handle")]
159    pub fn connect_window_handle_notify<F: Fn(&Self) + Send + Sync + 'static>(
160        &self,
161        f: F,
162    ) -> SignalHandlerId {
163        unsafe extern "C" fn notify_window_handle_trampoline<
164            F: Fn(&PlayerVideoOverlayVideoRenderer) + Send + Sync + 'static,
165        >(
166            this: *mut ffi::GstPlayerVideoOverlayVideoRenderer,
167            _param_spec: glib::ffi::gpointer,
168            f: glib::ffi::gpointer,
169        ) {
170            let f: &F = &*(f as *const F);
171            f(&from_glib_borrow(this))
172        }
173        unsafe {
174            let f: Box_<F> = Box_::new(f);
175            connect_raw(
176                self.as_ptr() as *mut _,
177                c"notify::window-handle".as_ptr() as *const _,
178                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
179                    notify_window_handle_trampoline::<F> as *const (),
180                )),
181                Box_::into_raw(f),
182            )
183        }
184    }
185}
186
187unsafe impl Send for PlayerVideoOverlayVideoRenderer {}
188unsafe impl Sync for PlayerVideoOverlayVideoRenderer {}