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