gdk_pixbuf/auto/
pixbuf_simple_anim.rs
1use crate::{ffi, Pixbuf, PixbufAnimation};
6use glib::{
7 prelude::*,
8 signal::{connect_raw, SignalHandlerId},
9 translate::*,
10};
11use std::boxed::Box as Box_;
12
13glib::wrapper! {
14 #[doc(alias = "GdkPixbufSimpleAnim")]
28 pub struct PixbufSimpleAnim(Object<ffi::GdkPixbufSimpleAnim, ffi::GdkPixbufSimpleAnimClass>) @extends PixbufAnimation;
29
30 match fn {
31 type_ => || ffi::gdk_pixbuf_simple_anim_get_type(),
32 }
33}
34
35impl PixbufSimpleAnim {
36 #[doc(alias = "gdk_pixbuf_simple_anim_new")]
48 pub fn new(width: i32, height: i32, rate: f32) -> PixbufSimpleAnim {
49 unsafe { from_glib_full(ffi::gdk_pixbuf_simple_anim_new(width, height, rate)) }
50 }
51
52 #[doc(alias = "gdk_pixbuf_simple_anim_add_frame")]
58 pub fn add_frame(&self, pixbuf: &Pixbuf) {
59 unsafe {
60 ffi::gdk_pixbuf_simple_anim_add_frame(self.to_glib_none().0, pixbuf.to_glib_none().0);
61 }
62 }
63
64 #[doc(alias = "gdk_pixbuf_simple_anim_get_loop")]
70 #[doc(alias = "get_loop")]
71 #[doc(alias = "loop")]
72 pub fn is_loop(&self) -> bool {
73 unsafe { from_glib(ffi::gdk_pixbuf_simple_anim_get_loop(self.to_glib_none().0)) }
74 }
75
76 #[doc(alias = "gdk_pixbuf_simple_anim_set_loop")]
80 #[doc(alias = "loop")]
81 pub fn set_loop(&self, loop_: bool) {
82 unsafe {
83 ffi::gdk_pixbuf_simple_anim_set_loop(self.to_glib_none().0, loop_.into_glib());
84 }
85 }
86
87 #[doc(alias = "loop")]
88 pub fn connect_loop_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
89 unsafe extern "C" fn notify_loop_trampoline<F: Fn(&PixbufSimpleAnim) + 'static>(
90 this: *mut ffi::GdkPixbufSimpleAnim,
91 _param_spec: glib::ffi::gpointer,
92 f: glib::ffi::gpointer,
93 ) {
94 let f: &F = &*(f as *const F);
95 f(&from_glib_borrow(this))
96 }
97 unsafe {
98 let f: Box_<F> = Box_::new(f);
99 connect_raw(
100 self.as_ptr() as *mut _,
101 b"notify::loop\0".as_ptr() as *const _,
102 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
103 notify_loop_trampoline::<F> as *const (),
104 )),
105 Box_::into_raw(f),
106 )
107 }
108 }
109}