Skip to main content

libglycin_rebind/auto/
frame_request.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from
3// from gir-files
4// DO NOT EDIT
5
6use std::boxed::Box as Box_;
7
8use glib::prelude::*;
9use glib::signal::{SignalHandlerId, connect_raw};
10use glib::translate::*;
11
12use crate::ffi;
13
14glib::wrapper! {
15    #[doc(alias = "GlyFrameRequest")]
16    pub struct FrameRequest(Object<ffi::GlyFrameRequest, ffi::GlyFrameRequestClass>);
17
18    match fn {
19        type_ => || ffi::gly_frame_request_get_type(),
20    }
21}
22
23impl FrameRequest {
24    #[doc(alias = "gly_frame_request_new")]
25    pub fn new() -> FrameRequest {
26        assert_initialized_main_thread!();
27        unsafe { from_glib_full(ffi::gly_frame_request_new()) }
28    }
29
30    // rustdoc-stripper-ignore-next
31    /// Creates a new builder-pattern struct instance to construct
32    /// [`FrameRequest`] objects.
33    ///
34    /// This method returns an instance of
35    /// [`FrameRequestBuilder`](crate::builders::FrameRequestBuilder) which can
36    /// be used to create [`FrameRequest`] objects.
37    pub fn builder() -> FrameRequestBuilder {
38        FrameRequestBuilder::new()
39    }
40
41    #[doc(alias = "gly_frame_request_set_loop_animation")]
42    #[doc(alias = "loop-animation")]
43    pub fn set_loop_animation(&self, loop_animation: bool) {
44        unsafe {
45            ffi::gly_frame_request_set_loop_animation(
46                self.to_glib_none().0,
47                loop_animation.into_glib(),
48            );
49        }
50    }
51
52    #[doc(alias = "gly_frame_request_set_scale")]
53    pub fn set_scale(&self, width: u32, height: u32) {
54        unsafe {
55            ffi::gly_frame_request_set_scale(self.to_glib_none().0, width, height);
56        }
57    }
58
59    #[doc(alias = "loop-animation")]
60    pub fn is_loop_animation(&self) -> bool {
61        ObjectExt::property(self, "loop-animation")
62    }
63
64    #[doc(alias = "scale-height")]
65    pub fn scale_height(&self) -> u32 {
66        ObjectExt::property(self, "scale-height")
67    }
68
69    #[doc(alias = "scale-width")]
70    pub fn scale_width(&self) -> u32 {
71        ObjectExt::property(self, "scale-width")
72    }
73
74    #[doc(alias = "loop-animation")]
75    pub fn connect_loop_animation_notify<F: Fn(&Self) + Send + Sync + 'static>(
76        &self,
77        f: F,
78    ) -> SignalHandlerId {
79        unsafe extern "C" fn notify_loop_animation_trampoline<
80            F: Fn(&FrameRequest) + Send + Sync + 'static,
81        >(
82            this: *mut ffi::GlyFrameRequest,
83            _param_spec: glib::ffi::gpointer,
84            f: glib::ffi::gpointer,
85        ) {
86            unsafe {
87                let f: &F = &*(f as *const F);
88                f(&from_glib_borrow(this))
89            }
90        }
91        unsafe {
92            let f: Box_<F> = Box_::new(f);
93            connect_raw(
94                self.as_ptr() as *mut _,
95                c"notify::loop-animation".as_ptr() as *const _,
96                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
97                    notify_loop_animation_trampoline::<F> as *const (),
98                )),
99                Box_::into_raw(f),
100            )
101        }
102    }
103
104    #[doc(alias = "scale-height")]
105    pub fn connect_scale_height_notify<F: Fn(&Self) + Send + Sync + 'static>(
106        &self,
107        f: F,
108    ) -> SignalHandlerId {
109        unsafe extern "C" fn notify_scale_height_trampoline<
110            F: Fn(&FrameRequest) + Send + Sync + 'static,
111        >(
112            this: *mut ffi::GlyFrameRequest,
113            _param_spec: glib::ffi::gpointer,
114            f: glib::ffi::gpointer,
115        ) {
116            unsafe {
117                let f: &F = &*(f as *const F);
118                f(&from_glib_borrow(this))
119            }
120        }
121        unsafe {
122            let f: Box_<F> = Box_::new(f);
123            connect_raw(
124                self.as_ptr() as *mut _,
125                c"notify::scale-height".as_ptr() as *const _,
126                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
127                    notify_scale_height_trampoline::<F> as *const (),
128                )),
129                Box_::into_raw(f),
130            )
131        }
132    }
133
134    #[doc(alias = "scale-width")]
135    pub fn connect_scale_width_notify<F: Fn(&Self) + Send + Sync + 'static>(
136        &self,
137        f: F,
138    ) -> SignalHandlerId {
139        unsafe extern "C" fn notify_scale_width_trampoline<
140            F: Fn(&FrameRequest) + Send + Sync + 'static,
141        >(
142            this: *mut ffi::GlyFrameRequest,
143            _param_spec: glib::ffi::gpointer,
144            f: glib::ffi::gpointer,
145        ) {
146            unsafe {
147                let f: &F = &*(f as *const F);
148                f(&from_glib_borrow(this))
149            }
150        }
151        unsafe {
152            let f: Box_<F> = Box_::new(f);
153            connect_raw(
154                self.as_ptr() as *mut _,
155                c"notify::scale-width".as_ptr() as *const _,
156                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
157                    notify_scale_width_trampoline::<F> as *const (),
158                )),
159                Box_::into_raw(f),
160            )
161        }
162    }
163}
164
165impl Default for FrameRequest {
166    fn default() -> Self {
167        Self::new()
168    }
169}
170
171// rustdoc-stripper-ignore-next
172/// A [builder-pattern] type to construct [`FrameRequest`] objects.
173///
174/// [builder-pattern]: https://doc.rust-lang.org/1.0.0/style/ownership/builders.html
175#[must_use = "The builder must be built to be used"]
176pub struct FrameRequestBuilder {
177    builder: glib::object::ObjectBuilder<'static, FrameRequest>,
178}
179
180impl FrameRequestBuilder {
181    fn new() -> Self {
182        Self {
183            builder: glib::object::Object::builder(),
184        }
185    }
186
187    pub fn loop_animation(self, loop_animation: bool) -> Self {
188        Self {
189            builder: self.builder.property("loop-animation", loop_animation),
190        }
191    }
192
193    // rustdoc-stripper-ignore-next
194    /// Build the [`FrameRequest`].
195    #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
196    pub fn build(self) -> FrameRequest {
197        assert_initialized_main_thread!();
198        self.builder.build()
199    }
200}
201
202unsafe impl Send for FrameRequest {}
203unsafe impl Sync for FrameRequest {}