Skip to main content

librsvg_rebind/auto/
handle.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from ../builddir/rsvg
3// from gir-files
4// DO NOT EDIT
5#![allow(deprecated)]
6
7use crate::{HandleFlags, Rectangle, ffi};
8use glib::{
9    prelude::*,
10    signal::{SignalHandlerId, connect_raw},
11    translate::*,
12};
13use std::boxed::Box as Box_;
14
15glib::wrapper! {
16    #[doc(alias = "RsvgHandle")]
17    pub struct Handle(Object<ffi::RsvgHandle, ffi::RsvgHandleClass>);
18
19    match fn {
20        type_ => || ffi::rsvg_handle_get_type(),
21    }
22}
23
24impl Handle {
25    pub const NONE: Option<&'static Handle> = None;
26
27    #[doc(alias = "rsvg_handle_new")]
28    pub fn new() -> Handle {
29        assert_initialized_main_thread!();
30        unsafe { from_glib_full(ffi::rsvg_handle_new()) }
31    }
32
33    #[doc(alias = "rsvg_handle_new_from_data")]
34    #[doc(alias = "new_from_data")]
35    pub fn from_data(data: &[u8]) -> Result<Handle, glib::Error> {
36        assert_initialized_main_thread!();
37        let data_len = data.len() as _;
38        unsafe {
39            let mut error = std::ptr::null_mut();
40            let ret = ffi::rsvg_handle_new_from_data(data.to_glib_none().0, data_len, &mut error);
41            if error.is_null() {
42                Ok(from_glib_full(ret))
43            } else {
44                Err(from_glib_full(error))
45            }
46        }
47    }
48
49    #[doc(alias = "rsvg_handle_new_from_file")]
50    #[doc(alias = "new_from_file")]
51    pub fn from_file(filename: &str) -> Result<Handle, glib::Error> {
52        assert_initialized_main_thread!();
53        unsafe {
54            let mut error = std::ptr::null_mut();
55            let ret = ffi::rsvg_handle_new_from_file(filename.to_glib_none().0, &mut error);
56            if error.is_null() {
57                Ok(from_glib_full(ret))
58            } else {
59                Err(from_glib_full(error))
60            }
61        }
62    }
63
64    #[doc(alias = "rsvg_handle_new_from_gfile_sync")]
65    #[doc(alias = "new_from_gfile_sync")]
66    pub fn from_gfile_sync(
67        file: &impl IsA<gio::File>,
68        flags: HandleFlags,
69        cancellable: Option<&impl IsA<gio::Cancellable>>,
70    ) -> Result<Handle, glib::Error> {
71        assert_initialized_main_thread!();
72        unsafe {
73            let mut error = std::ptr::null_mut();
74            let ret = ffi::rsvg_handle_new_from_gfile_sync(
75                file.as_ref().to_glib_none().0,
76                flags.into_glib(),
77                cancellable.map(|p| p.as_ref()).to_glib_none().0,
78                &mut error,
79            );
80            if error.is_null() {
81                Ok(from_glib_full(ret))
82            } else {
83                Err(from_glib_full(error))
84            }
85        }
86    }
87
88    #[doc(alias = "rsvg_handle_new_from_stream_sync")]
89    #[doc(alias = "new_from_stream_sync")]
90    pub fn from_stream_sync(
91        input_stream: &impl IsA<gio::InputStream>,
92        base_file: Option<&impl IsA<gio::File>>,
93        flags: HandleFlags,
94        cancellable: Option<&impl IsA<gio::Cancellable>>,
95    ) -> Result<Handle, glib::Error> {
96        assert_initialized_main_thread!();
97        unsafe {
98            let mut error = std::ptr::null_mut();
99            let ret = ffi::rsvg_handle_new_from_stream_sync(
100                input_stream.as_ref().to_glib_none().0,
101                base_file.map(|p| p.as_ref()).to_glib_none().0,
102                flags.into_glib(),
103                cancellable.map(|p| p.as_ref()).to_glib_none().0,
104                &mut error,
105            );
106            if error.is_null() {
107                Ok(from_glib_full(ret))
108            } else {
109                Err(from_glib_full(error))
110            }
111        }
112    }
113
114    #[doc(alias = "rsvg_handle_new_with_flags")]
115    #[doc(alias = "new_with_flags")]
116    pub fn with_flags(flags: HandleFlags) -> Handle {
117        assert_initialized_main_thread!();
118        unsafe { from_glib_full(ffi::rsvg_handle_new_with_flags(flags.into_glib())) }
119    }
120}
121
122impl Default for Handle {
123    fn default() -> Self {
124        Self::new()
125    }
126}
127
128pub trait HandleExt: IsA<Handle> + 'static {
129    #[doc(alias = "rsvg_handle_get_base_uri")]
130    #[doc(alias = "get_base_uri")]
131    #[doc(alias = "base-uri")]
132    fn base_uri(&self) -> Option<glib::GString> {
133        unsafe {
134            from_glib_none(ffi::rsvg_handle_get_base_uri(
135                self.as_ref().to_glib_none().0,
136            ))
137        }
138    }
139
140    #[doc(alias = "rsvg_handle_get_geometry_for_element")]
141    #[doc(alias = "get_geometry_for_element")]
142    fn geometry_for_element(
143        &self,
144        id: Option<&str>,
145    ) -> Result<(Rectangle, Rectangle), glib::Error> {
146        unsafe {
147            let mut out_ink_rect = Rectangle::uninitialized();
148            let mut out_logical_rect = Rectangle::uninitialized();
149            let mut error = std::ptr::null_mut();
150            let is_ok = ffi::rsvg_handle_get_geometry_for_element(
151                self.as_ref().to_glib_none().0,
152                id.to_glib_none().0,
153                out_ink_rect.to_glib_none_mut().0,
154                out_logical_rect.to_glib_none_mut().0,
155                &mut error,
156            );
157            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
158            if error.is_null() {
159                Ok((out_ink_rect, out_logical_rect))
160            } else {
161                Err(from_glib_full(error))
162            }
163        }
164    }
165
166    #[doc(alias = "rsvg_handle_get_geometry_for_layer")]
167    #[doc(alias = "get_geometry_for_layer")]
168    fn geometry_for_layer(
169        &self,
170        id: Option<&str>,
171        viewport: &Rectangle,
172    ) -> Result<(Rectangle, Rectangle), glib::Error> {
173        unsafe {
174            let mut out_ink_rect = Rectangle::uninitialized();
175            let mut out_logical_rect = Rectangle::uninitialized();
176            let mut error = std::ptr::null_mut();
177            let is_ok = ffi::rsvg_handle_get_geometry_for_layer(
178                self.as_ref().to_glib_none().0,
179                id.to_glib_none().0,
180                viewport.to_glib_none().0,
181                out_ink_rect.to_glib_none_mut().0,
182                out_logical_rect.to_glib_none_mut().0,
183                &mut error,
184            );
185            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
186            if error.is_null() {
187                Ok((out_ink_rect, out_logical_rect))
188            } else {
189                Err(from_glib_full(error))
190            }
191        }
192    }
193
194    #[doc(alias = "rsvg_handle_get_intrinsic_size_in_pixels")]
195    #[doc(alias = "get_intrinsic_size_in_pixels")]
196    fn intrinsic_size_in_pixels(&self) -> Option<(f64, f64)> {
197        unsafe {
198            let mut out_width = std::mem::MaybeUninit::uninit();
199            let mut out_height = std::mem::MaybeUninit::uninit();
200            let ret = from_glib(ffi::rsvg_handle_get_intrinsic_size_in_pixels(
201                self.as_ref().to_glib_none().0,
202                out_width.as_mut_ptr(),
203                out_height.as_mut_ptr(),
204            ));
205            if ret {
206                Some((out_width.assume_init(), out_height.assume_init()))
207            } else {
208                None
209            }
210        }
211    }
212
213    //#[cfg_attr(feature = "v2_58", deprecated = "Since 2.58")]
214    //#[allow(deprecated)]
215    //#[doc(alias = "rsvg_handle_get_pixbuf")]
216    //#[doc(alias = "get_pixbuf")]
217    //fn pixbuf(&self) -> /*Ignored*/Option<gdk_pixbuf::Pixbuf> {
218    //    unsafe { TODO: call ffi:rsvg_handle_get_pixbuf() }
219    //}
220
221    //#[cfg(feature = "v2_59")]
222    //#[cfg_attr(docsrs, doc(cfg(feature = "v2_59")))]
223    //#[doc(alias = "rsvg_handle_get_pixbuf_and_error")]
224    //#[doc(alias = "get_pixbuf_and_error")]
225    //fn pixbuf_and_error(&self) -> Result</*Ignored*/Option<gdk_pixbuf::Pixbuf>, glib::Error> {
226    //    unsafe { TODO: call ffi:rsvg_handle_get_pixbuf_and_error() }
227    //}
228
229    //#[doc(alias = "rsvg_handle_get_pixbuf_sub")]
230    //#[doc(alias = "get_pixbuf_sub")]
231    //fn pixbuf_sub(&self, id: Option<&str>) -> /*Ignored*/Option<gdk_pixbuf::Pixbuf> {
232    //    unsafe { TODO: call ffi:rsvg_handle_get_pixbuf_sub() }
233    //}
234
235    #[doc(alias = "rsvg_handle_has_sub")]
236    fn has_sub(&self, id: &str) -> bool {
237        unsafe {
238            from_glib(ffi::rsvg_handle_has_sub(
239                self.as_ref().to_glib_none().0,
240                id.to_glib_none().0,
241            ))
242        }
243    }
244
245    #[doc(alias = "rsvg_handle_internal_set_testing")]
246    fn internal_set_testing(&self, testing: bool) {
247        unsafe {
248            ffi::rsvg_handle_internal_set_testing(
249                self.as_ref().to_glib_none().0,
250                testing.into_glib(),
251            );
252        }
253    }
254
255    #[doc(alias = "rsvg_handle_read_stream_sync")]
256    fn read_stream_sync(
257        &self,
258        stream: &impl IsA<gio::InputStream>,
259        cancellable: Option<&impl IsA<gio::Cancellable>>,
260    ) -> Result<(), glib::Error> {
261        unsafe {
262            let mut error = std::ptr::null_mut();
263            let is_ok = ffi::rsvg_handle_read_stream_sync(
264                self.as_ref().to_glib_none().0,
265                stream.as_ref().to_glib_none().0,
266                cancellable.map(|p| p.as_ref()).to_glib_none().0,
267                &mut error,
268            );
269            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
270            if error.is_null() {
271                Ok(())
272            } else {
273                Err(from_glib_full(error))
274            }
275        }
276    }
277
278    #[doc(alias = "rsvg_handle_render_document")]
279    fn render_document(
280        &self,
281        cr: &cairo::Context,
282        viewport: &Rectangle,
283    ) -> Result<(), glib::Error> {
284        unsafe {
285            let mut error = std::ptr::null_mut();
286            let is_ok = ffi::rsvg_handle_render_document(
287                self.as_ref().to_glib_none().0,
288                mut_override(cr.to_glib_none().0),
289                viewport.to_glib_none().0,
290                &mut error,
291            );
292            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
293            if error.is_null() {
294                Ok(())
295            } else {
296                Err(from_glib_full(error))
297            }
298        }
299    }
300
301    #[doc(alias = "rsvg_handle_render_element")]
302    fn render_element(
303        &self,
304        cr: &cairo::Context,
305        id: Option<&str>,
306        element_viewport: &Rectangle,
307    ) -> Result<(), glib::Error> {
308        unsafe {
309            let mut error = std::ptr::null_mut();
310            let is_ok = ffi::rsvg_handle_render_element(
311                self.as_ref().to_glib_none().0,
312                mut_override(cr.to_glib_none().0),
313                id.to_glib_none().0,
314                element_viewport.to_glib_none().0,
315                &mut error,
316            );
317            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
318            if error.is_null() {
319                Ok(())
320            } else {
321                Err(from_glib_full(error))
322            }
323        }
324    }
325
326    #[doc(alias = "rsvg_handle_render_layer")]
327    fn render_layer(
328        &self,
329        cr: &cairo::Context,
330        id: Option<&str>,
331        viewport: &Rectangle,
332    ) -> Result<(), glib::Error> {
333        unsafe {
334            let mut error = std::ptr::null_mut();
335            let is_ok = ffi::rsvg_handle_render_layer(
336                self.as_ref().to_glib_none().0,
337                mut_override(cr.to_glib_none().0),
338                id.to_glib_none().0,
339                viewport.to_glib_none().0,
340                &mut error,
341            );
342            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
343            if error.is_null() {
344                Ok(())
345            } else {
346                Err(from_glib_full(error))
347            }
348        }
349    }
350
351    #[doc(alias = "rsvg_handle_set_base_gfile")]
352    fn set_base_gfile(&self, base_file: &impl IsA<gio::File>) {
353        unsafe {
354            ffi::rsvg_handle_set_base_gfile(
355                self.as_ref().to_glib_none().0,
356                base_file.as_ref().to_glib_none().0,
357            );
358        }
359    }
360
361    #[doc(alias = "rsvg_handle_set_base_uri")]
362    #[doc(alias = "base-uri")]
363    fn set_base_uri(&self, base_uri: &str) {
364        unsafe {
365            ffi::rsvg_handle_set_base_uri(
366                self.as_ref().to_glib_none().0,
367                base_uri.to_glib_none().0,
368            );
369        }
370    }
371
372    #[cfg(feature = "v2_59")]
373    #[cfg_attr(docsrs, doc(cfg(feature = "v2_59")))]
374    #[doc(alias = "rsvg_handle_set_cancellable_for_rendering")]
375    fn set_cancellable_for_rendering(&self, cancellable: Option<&impl IsA<gio::Cancellable>>) {
376        unsafe {
377            ffi::rsvg_handle_set_cancellable_for_rendering(
378                self.as_ref().to_glib_none().0,
379                cancellable.map(|p| p.as_ref()).to_glib_none().0,
380            );
381        }
382    }
383
384    #[doc(alias = "rsvg_handle_set_dpi")]
385    fn set_dpi(&self, dpi: f64) {
386        unsafe {
387            ffi::rsvg_handle_set_dpi(self.as_ref().to_glib_none().0, dpi);
388        }
389    }
390
391    #[doc(alias = "rsvg_handle_set_dpi_x_y")]
392    fn set_dpi_x_y(&self, dpi_x: f64, dpi_y: f64) {
393        unsafe {
394            ffi::rsvg_handle_set_dpi_x_y(self.as_ref().to_glib_none().0, dpi_x, dpi_y);
395        }
396    }
397
398    #[doc(alias = "rsvg_handle_set_stylesheet")]
399    fn set_stylesheet(&self, css: &[u8]) -> Result<(), glib::Error> {
400        let css_len = css.len() as _;
401        unsafe {
402            let mut error = std::ptr::null_mut();
403            let is_ok = ffi::rsvg_handle_set_stylesheet(
404                self.as_ref().to_glib_none().0,
405                css.to_glib_none().0,
406                css_len,
407                &mut error,
408            );
409            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
410            if error.is_null() {
411                Ok(())
412            } else {
413                Err(from_glib_full(error))
414            }
415        }
416    }
417
418    #[doc(alias = "dpi-x")]
419    fn dpi_x(&self) -> f64 {
420        ObjectExt::property(self.as_ref(), "dpi-x")
421    }
422
423    #[doc(alias = "dpi-x")]
424    fn set_dpi_x(&self, dpi_x: f64) {
425        ObjectExt::set_property(self.as_ref(), "dpi-x", dpi_x)
426    }
427
428    #[doc(alias = "dpi-y")]
429    fn dpi_y(&self) -> f64 {
430        ObjectExt::property(self.as_ref(), "dpi-y")
431    }
432
433    #[doc(alias = "dpi-y")]
434    fn set_dpi_y(&self, dpi_y: f64) {
435        ObjectExt::set_property(self.as_ref(), "dpi-y", dpi_y)
436    }
437
438    fn flags(&self) -> HandleFlags {
439        ObjectExt::property(self.as_ref(), "flags")
440    }
441
442    #[doc(alias = "base-uri")]
443    fn connect_base_uri_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
444        unsafe extern "C" fn notify_base_uri_trampoline<P: IsA<Handle>, F: Fn(&P) + 'static>(
445            this: *mut ffi::RsvgHandle,
446            _param_spec: glib::ffi::gpointer,
447            f: glib::ffi::gpointer,
448        ) {
449            unsafe {
450                let f: &F = &*(f as *const F);
451                f(Handle::from_glib_borrow(this).unsafe_cast_ref())
452            }
453        }
454        unsafe {
455            let f: Box_<F> = Box_::new(f);
456            connect_raw(
457                self.as_ptr() as *mut _,
458                c"notify::base-uri".as_ptr() as *const _,
459                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
460                    notify_base_uri_trampoline::<Self, F> as *const (),
461                )),
462                Box_::into_raw(f),
463            )
464        }
465    }
466
467    #[doc(alias = "dpi-x")]
468    fn connect_dpi_x_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
469        unsafe extern "C" fn notify_dpi_x_trampoline<P: IsA<Handle>, F: Fn(&P) + 'static>(
470            this: *mut ffi::RsvgHandle,
471            _param_spec: glib::ffi::gpointer,
472            f: glib::ffi::gpointer,
473        ) {
474            unsafe {
475                let f: &F = &*(f as *const F);
476                f(Handle::from_glib_borrow(this).unsafe_cast_ref())
477            }
478        }
479        unsafe {
480            let f: Box_<F> = Box_::new(f);
481            connect_raw(
482                self.as_ptr() as *mut _,
483                c"notify::dpi-x".as_ptr() as *const _,
484                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
485                    notify_dpi_x_trampoline::<Self, F> as *const (),
486                )),
487                Box_::into_raw(f),
488            )
489        }
490    }
491
492    #[doc(alias = "dpi-y")]
493    fn connect_dpi_y_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
494        unsafe extern "C" fn notify_dpi_y_trampoline<P: IsA<Handle>, F: Fn(&P) + 'static>(
495            this: *mut ffi::RsvgHandle,
496            _param_spec: glib::ffi::gpointer,
497            f: glib::ffi::gpointer,
498        ) {
499            unsafe {
500                let f: &F = &*(f as *const F);
501                f(Handle::from_glib_borrow(this).unsafe_cast_ref())
502            }
503        }
504        unsafe {
505            let f: Box_<F> = Box_::new(f);
506            connect_raw(
507                self.as_ptr() as *mut _,
508                c"notify::dpi-y".as_ptr() as *const _,
509                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
510                    notify_dpi_y_trampoline::<Self, F> as *const (),
511                )),
512                Box_::into_raw(f),
513            )
514        }
515    }
516}
517
518impl<O: IsA<Handle>> HandleExt for O {}