1use glib::translate::*;
6
7glib::wrapper! {
8 pub struct Rectangle(BoxedInline<ffi::GdkRectangle>);
9
10 match fn {
11 copy => |ptr| glib::gobject_ffi::g_boxed_copy(ffi::gdk_rectangle_get_type(), ptr as *mut _) as *mut ffi::GdkRectangle,
12 free => |ptr| glib::gobject_ffi::g_boxed_free(ffi::gdk_rectangle_get_type(), ptr as *mut _),
13 type_ => || ffi::gdk_rectangle_get_type(),
14 }
15}
16
17impl Rectangle {
18 #[doc(alias = "gdk_rectangle_equal")]
19 fn equal(&self, rect2: &Rectangle) -> bool {
20 unsafe {
21 from_glib(ffi::gdk_rectangle_equal(
22 self.to_glib_none().0,
23 rect2.to_glib_none().0,
24 ))
25 }
26 }
27
28 #[doc(alias = "gdk_rectangle_intersect")]
29 pub fn intersect(&self, src2: &Rectangle) -> Option<Rectangle> {
30 unsafe {
31 let mut dest = Rectangle::uninitialized();
32 let ret = from_glib(ffi::gdk_rectangle_intersect(
33 self.to_glib_none().0,
34 src2.to_glib_none().0,
35 dest.to_glib_none_mut().0,
36 ));
37 if ret {
38 Some(dest)
39 } else {
40 None
41 }
42 }
43 }
44
45 #[doc(alias = "gdk_rectangle_union")]
46 #[must_use]
47 pub fn union(&self, src2: &Rectangle) -> Rectangle {
48 unsafe {
49 let mut dest = Rectangle::uninitialized();
50 ffi::gdk_rectangle_union(
51 self.to_glib_none().0,
52 src2.to_glib_none().0,
53 dest.to_glib_none_mut().0,
54 );
55 dest
56 }
57 }
58}
59
60impl PartialEq for Rectangle {
61 #[inline]
62 fn eq(&self, other: &Self) -> bool {
63 self.equal(other)
64 }
65}
66
67impl Eq for Rectangle {}