gstreamer_player/auto/
player_video_overlay_video_renderer.rs1use crate::{PlayerVideoRenderer, ffi};
7use glib::{
8 prelude::*,
9 signal::{SignalHandlerId, connect_raw},
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 unsafe {
143 let f: &F = &*(f as *const F);
144 f(&from_glib_borrow(this))
145 }
146 }
147 unsafe {
148 let f: Box_<F> = Box_::new(f);
149 connect_raw(
150 self.as_ptr() as *mut _,
151 c"notify::video-sink".as_ptr(),
152 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
153 notify_video_sink_trampoline::<F> as *const (),
154 )),
155 Box_::into_raw(f),
156 )
157 }
158 }
159
160 #[doc(alias = "window-handle")]
161 pub fn connect_window_handle_notify<F: Fn(&Self) + Send + Sync + 'static>(
162 &self,
163 f: F,
164 ) -> SignalHandlerId {
165 unsafe extern "C" fn notify_window_handle_trampoline<
166 F: Fn(&PlayerVideoOverlayVideoRenderer) + Send + Sync + 'static,
167 >(
168 this: *mut ffi::GstPlayerVideoOverlayVideoRenderer,
169 _param_spec: glib::ffi::gpointer,
170 f: glib::ffi::gpointer,
171 ) {
172 unsafe {
173 let f: &F = &*(f as *const F);
174 f(&from_glib_borrow(this))
175 }
176 }
177 unsafe {
178 let f: Box_<F> = Box_::new(f);
179 connect_raw(
180 self.as_ptr() as *mut _,
181 c"notify::window-handle".as_ptr(),
182 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
183 notify_window_handle_trampoline::<F> as *const (),
184 )),
185 Box_::into_raw(f),
186 )
187 }
188 }
189}
190
191unsafe impl Send for PlayerVideoOverlayVideoRenderer {}
192unsafe impl Sync for PlayerVideoOverlayVideoRenderer {}