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 { Some(dest) } else { None }
50 }
51 }
52
53 #[doc(alias = "gdk_rectangle_union")]
54 #[must_use]
55 pub fn union(&self, src2: &Rectangle) -> Rectangle {
56 unsafe {
57 let mut dest = Rectangle::uninitialized();
58 ffi::gdk_rectangle_union(
59 self.to_glib_none().0,
60 src2.to_glib_none().0,
61 dest.to_glib_none_mut().0,
62 );
63 dest
64 }
65 }
66}
67
68impl PartialEq for Rectangle {
69 #[inline]
70 fn eq(&self, other: &Self) -> bool {
71 self.equal(other)
72 }
73}
74
75impl Eq for Rectangle {}