// GENERATED — DO NOT EDIT

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/struct.AttrShape.html).
pub type AttrShape

///|
pub(open) trait IAttrShape {
  fn as_attr_shape(Self) -> AttrShape
}

///|
pub impl IAttrShape for AttrShape with fn as_attr_shape(self) {
  self
}

///|
#borrow(ink_rect, logical_rect)
extern "c" fn moonbit_pango_attr_shape_new(
  ink_rect : Rectangle,
  logical_rect : Rectangle,
) -> Attribute = "moonbit_pango_attr_shape_new"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/type_func.AttrShape.new.html).
pub fn AttrShape::new(
  ink_rect : Rectangle,
  logical_rect : Rectangle,
) -> Attribute {
  moonbit_pango_attr_shape_new(ink_rect, logical_rect)
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/struct.AttrShape.html).
#borrow(self_)
pub extern "c" fn AttrShape::get_attr(self_ : AttrShape) -> Attribute = "moonbit_pango_attr_shape_attr_get"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/struct.AttrShape.html).
#borrow(self_)
pub extern "c" fn AttrShape::get_ink_rect(self_ : AttrShape) -> Rectangle = "moonbit_pango_attr_shape_ink_rect_get"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/struct.AttrShape.html).
#borrow(self_)
pub extern "c" fn AttrShape::get_logical_rect(self_ : AttrShape) -> Rectangle = "moonbit_pango_attr_shape_logical_rect_get"