// GENERATED — DO NOT EDIT

///|
/// [Upstream documentation](https://docs.gtk.org/gdk4/struct.RGBA.html).
pub type RGBA

///|
pub(open) trait IRGBA {
  fn as_rgba(Self) -> RGBA
  fn equal(Self, RGBA) -> Bool = _
  fn hash(Self) -> UInt = _
  fn is_clear(Self) -> Bool = _
  fn is_opaque(Self) -> Bool = _
  fn parse(Self, String) -> Bool = _
  fn to_string(Self) -> String = _
}

///|
pub impl IRGBA for RGBA with fn as_rgba(self) {
  self
}

///|
#borrow(self_, p2)
extern "c" fn moonbit_gdk_rgba_equal(self_ : RGBA, p2 : RGBA) -> Bool = "moonbit_gdk_rgba_equal"

///|
/// [Upstream documentation](https://docs.gtk.org/gdk4/method.RGBA.equal.html).
pub fn RGBA::equal(self : RGBA, p2 : RGBA) -> Bool {
  moonbit_gdk_rgba_equal(self, p2)
}

///|
/// [Upstream documentation](https://docs.gtk.org/gdk4/method.RGBA.hash.html).
#borrow(self)
pub extern "c" fn RGBA::hash(self : RGBA) -> UInt = "moonbit_gdk_rgba_hash"

///|
/// [Upstream documentation](https://docs.gtk.org/gdk4/method.RGBA.is_clear.html).
#borrow(self)
pub extern "c" fn RGBA::is_clear(self : RGBA) -> Bool = "moonbit_gdk_rgba_is_clear"

///|
/// [Upstream documentation](https://docs.gtk.org/gdk4/method.RGBA.is_opaque.html).
#borrow(self)
pub extern "c" fn RGBA::is_opaque(self : RGBA) -> Bool = "moonbit_gdk_rgba_is_opaque"

///|
#borrow(self_, spec)
extern "c" fn moonbit_gdk_rgba_parse(self_ : RGBA, spec : Bytes) -> Bool = "moonbit_gdk_rgba_parse"

///|
/// [Upstream documentation](https://docs.gtk.org/gdk4/method.RGBA.parse.html).
pub fn RGBA::parse(self : RGBA, spec : String) -> Bool {
  moonbit_gdk_rgba_parse(self, @encoding/utf8.encode(spec))
}

///|
#borrow(self_)
extern "c" fn moonbit_gdk_rgba_to_string(self_ : RGBA) -> Bytes = "moonbit_gdk_rgba_to_string"

///|
/// [Upstream documentation](https://docs.gtk.org/gdk4/method.RGBA.to_string.html).
pub fn RGBA::to_string(self : RGBA) -> String {
  @encoding/utf8.decode_lossy(moonbit_gdk_rgba_to_string(self))
}

///|
impl IRGBA with fn equal(self, p2) -> Bool {
  self.as_rgba().equal(p2)
}

///|
impl IRGBA with fn hash(self) -> UInt {
  self.as_rgba().hash()
}

///|
impl IRGBA with fn is_clear(self) -> Bool {
  self.as_rgba().is_clear()
}

///|
impl IRGBA with fn is_opaque(self) -> Bool {
  self.as_rgba().is_opaque()
}

///|
impl IRGBA with fn parse(self, spec) -> Bool {
  self.as_rgba().parse(spec)
}

///|
impl IRGBA with fn to_string(self) -> String {
  self.as_rgba().to_string()
}

///|
/// [Upstream documentation](https://docs.gtk.org/gdk4/struct.RGBA.html).
#borrow(self_)
pub extern "c" fn RGBA::get_red(self_ : RGBA) -> Float = "moonbit_gdk_rgba_red_get"

///|
/// [Upstream documentation](https://docs.gtk.org/gdk4/struct.RGBA.html).
#borrow(self_)
pub extern "c" fn RGBA::set_red(self_ : RGBA, value : Float) = "moonbit_gdk_rgba_red_set"

///|
/// [Upstream documentation](https://docs.gtk.org/gdk4/struct.RGBA.html).
#borrow(self_)
pub extern "c" fn RGBA::get_green(self_ : RGBA) -> Float = "moonbit_gdk_rgba_green_get"

///|
/// [Upstream documentation](https://docs.gtk.org/gdk4/struct.RGBA.html).
#borrow(self_)
pub extern "c" fn RGBA::set_green(self_ : RGBA, value : Float) = "moonbit_gdk_rgba_green_set"

///|
/// [Upstream documentation](https://docs.gtk.org/gdk4/struct.RGBA.html).
#borrow(self_)
pub extern "c" fn RGBA::get_blue(self_ : RGBA) -> Float = "moonbit_gdk_rgba_blue_get"

///|
/// [Upstream documentation](https://docs.gtk.org/gdk4/struct.RGBA.html).
#borrow(self_)
pub extern "c" fn RGBA::set_blue(self_ : RGBA, value : Float) = "moonbit_gdk_rgba_blue_set"

///|
/// [Upstream documentation](https://docs.gtk.org/gdk4/struct.RGBA.html).
#borrow(self_)
pub extern "c" fn RGBA::get_alpha(self_ : RGBA) -> Float = "moonbit_gdk_rgba_alpha_get"

///|
/// [Upstream documentation](https://docs.gtk.org/gdk4/struct.RGBA.html).
#borrow(self_)
pub extern "c" fn RGBA::set_alpha(self_ : RGBA, value : Float) = "moonbit_gdk_rgba_alpha_set"

///|
pub extern "c" fn RGBA::_zero() -> RGBA = "moonbit_gdk_rgba__zero"