use std::cell::Cell;
use std::rc::Rc;
#[allow(unused_imports)]
use std::marker::PhantomData;
#[allow(unused_imports)]
use std::os::raw::c_void;
#[allow(unused_imports)]
use std::mem::transmute;
#[allow(unused_imports)]
use std::ffi::{CStr, CString};
use rute_ffi_base::*;
#[allow(unused_imports)]
use auto::*;
#[derive(Clone)]
pub struct Color<'a> {
#[doc(hidden)]
pub data: Rc<Cell<Option<*const RUBase>>>,
#[doc(hidden)]
pub all_funcs: *const RUColorAllFuncs,
#[doc(hidden)]
pub owned: bool,
#[doc(hidden)]
pub _marker: PhantomData<::std::cell::Cell<&'a ()>>,
}
impl<'a> Color<'a> {
pub fn new() -> Color<'a> {
let data = Rc::new(Cell::new(None));
let ffi_data = unsafe {
((*rute_ffi_get()).create_color)(
::std::ptr::null(),
transmute(rute_object_delete_callback as usize),
Rc::into_raw(data.clone()) as *const c_void,
)
};
data.set(Some(ffi_data.qt_data));
Color {
data,
all_funcs: ffi_data.all_funcs,
owned: true,
_marker: PhantomData,
}
}
#[allow(dead_code)]
pub(crate) fn new_from_rc(ffi_data: RUColor) -> Color<'a> {
Color {
data: unsafe { Rc::from_raw(ffi_data.host_data as *const Cell<Option<*const RUBase>>) },
all_funcs: ffi_data.all_funcs,
owned: false,
_marker: PhantomData,
}
}
#[allow(dead_code)]
pub(crate) fn new_from_owned(ffi_data: RUColor) -> Color<'a> {
Color {
data: Rc::new(Cell::new(Some(ffi_data.qt_data as *const RUBase))),
all_funcs: ffi_data.all_funcs,
owned: true,
_marker: PhantomData,
}
}
#[allow(dead_code)]
pub(crate) fn new_from_temporary(ffi_data: RUColor) -> Color<'a> {
Color {
data: Rc::new(Cell::new(Some(ffi_data.qt_data as *const RUBase))),
all_funcs: ffi_data.all_funcs,
owned: false,
_marker: PhantomData,
}
}
pub fn is_valid(&self) -> bool {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).is_valid)(obj_data);
ret_val
}
}
pub fn name(&self) -> String {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).name)(obj_data);
let ret_val = CStr::from_ptr(ret_val).to_string_lossy().into_owned();
ret_val
}
}
pub fn name_2(&self, format: NameFormat) -> String {
let enum_format_1 = format as u32;
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).name_2)(obj_data, enum_format_1);
let ret_val = CStr::from_ptr(ret_val).to_string_lossy().into_owned();
ret_val
}
}
pub fn set_named_color(&self, name: &str) -> &Self {
let str_in_name_1 = CString::new(name).unwrap();
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_named_color)(obj_data, str_in_name_1.as_ptr());
}
self
}
pub fn spec(&self) -> Spec {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).spec)(obj_data);
let ret_val = { transmute::<u32, Spec>(ret_val) };
ret_val
}
}
pub fn alpha(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).alpha)(obj_data);
ret_val
}
}
pub fn set_alpha(&self, alpha: i32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_alpha)(obj_data, alpha);
}
self
}
pub fn alpha_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).alpha_f)(obj_data);
ret_val
}
}
pub fn set_alpha_f(&self, alpha: f32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_alpha_f)(obj_data, alpha);
}
self
}
pub fn red(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).red)(obj_data);
ret_val
}
}
pub fn green(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).green)(obj_data);
ret_val
}
}
pub fn blue(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).blue)(obj_data);
ret_val
}
}
pub fn set_red(&self, red: i32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_red)(obj_data, red);
}
self
}
pub fn set_green(&self, green: i32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_green)(obj_data, green);
}
self
}
pub fn set_blue(&self, blue: i32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_blue)(obj_data, blue);
}
self
}
pub fn red_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).red_f)(obj_data);
ret_val
}
}
pub fn green_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).green_f)(obj_data);
ret_val
}
}
pub fn blue_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).blue_f)(obj_data);
ret_val
}
}
pub fn set_red_f(&self, red: f32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_red_f)(obj_data, red);
}
self
}
pub fn set_green_f(&self, green: f32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_green_f)(obj_data, green);
}
self
}
pub fn set_blue_f(&self, blue: f32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_blue_f)(obj_data, blue);
}
self
}
pub fn set_rgb(&self, r: i32, g: i32, b: i32, a: i32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_rgb)(obj_data, r, g, b, a);
}
self
}
pub fn set_rgb_f(&self, r: f32, g: f32, b: f32, a: f32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_rgb_f)(obj_data, r, g, b, a);
}
self
}
pub fn hue(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).hue)(obj_data);
ret_val
}
}
pub fn saturation(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).saturation)(obj_data);
ret_val
}
}
pub fn hsv_hue(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).hsv_hue)(obj_data);
ret_val
}
}
pub fn hsv_saturation(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).hsv_saturation)(obj_data);
ret_val
}
}
pub fn value(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).value)(obj_data);
ret_val
}
}
pub fn hue_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).hue_f)(obj_data);
ret_val
}
}
pub fn saturation_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).saturation_f)(obj_data);
ret_val
}
}
pub fn hsv_hue_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).hsv_hue_f)(obj_data);
ret_val
}
}
pub fn hsv_saturation_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).hsv_saturation_f)(obj_data);
ret_val
}
}
pub fn value_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).value_f)(obj_data);
ret_val
}
}
pub fn set_hsv(&self, h: i32, s: i32, v: i32, a: i32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_hsv)(obj_data, h, s, v, a);
}
self
}
pub fn set_hsv_f(&self, h: f32, s: f32, v: f32, a: f32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_hsv_f)(obj_data, h, s, v, a);
}
self
}
pub fn cyan(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).cyan)(obj_data);
ret_val
}
}
pub fn magenta(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).magenta)(obj_data);
ret_val
}
}
pub fn yellow(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).yellow)(obj_data);
ret_val
}
}
pub fn black(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).black)(obj_data);
ret_val
}
}
pub fn cyan_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).cyan_f)(obj_data);
ret_val
}
}
pub fn magenta_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).magenta_f)(obj_data);
ret_val
}
}
pub fn yellow_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).yellow_f)(obj_data);
ret_val
}
}
pub fn black_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).black_f)(obj_data);
ret_val
}
}
pub fn set_cmyk(&self, c: i32, m: i32, y: i32, k: i32, a: i32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_cmyk)(obj_data, c, m, y, k, a);
}
self
}
pub fn set_cmyk_f(&self, c: f32, m: f32, y: f32, k: f32, a: f32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_cmyk_f)(obj_data, c, m, y, k, a);
}
self
}
pub fn hsl_hue(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).hsl_hue)(obj_data);
ret_val
}
}
pub fn hsl_saturation(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).hsl_saturation)(obj_data);
ret_val
}
}
pub fn lightness(&self) -> i32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).lightness)(obj_data);
ret_val
}
}
pub fn hsl_hue_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).hsl_hue_f)(obj_data);
ret_val
}
}
pub fn hsl_saturation_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).hsl_saturation_f)(obj_data);
ret_val
}
}
pub fn lightness_f(&self) -> f32 {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).lightness_f)(obj_data);
ret_val
}
}
pub fn set_hsl(&self, h: i32, s: i32, l: i32, a: i32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_hsl)(obj_data, h, s, l, a);
}
self
}
pub fn set_hsl_f(&self, h: f32, s: f32, l: f32, a: f32) -> &Self {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
((*funcs).set_hsl_f)(obj_data, h, s, l, a);
}
self
}
pub fn to_rgb(&self) -> Color {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).to_rgb)(obj_data);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn to_hsv(&self) -> Color {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).to_hsv)(obj_data);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn to_cmyk(&self) -> Color {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).to_cmyk)(obj_data);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn to_hsl(&self) -> Color {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).to_hsl)(obj_data);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn convert_to(&self, color_spec: Spec) -> Color {
let enum_color_spec_1 = color_spec as u32;
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).convert_to)(obj_data, enum_color_spec_1);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn from_rgb_2(r: i32, g: i32, b: i32, a: i32) -> Color<'a> {
let (obj_data, funcs) = unsafe {
(
::std::ptr::null(),
(*((*rute_ffi_get()).get_color)(::std::ptr::null()).all_funcs).color_funcs,
)
};
unsafe {
let ret_val = ((*funcs).from_rgb_2)(obj_data, r, g, b, a);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn from_rgb_f(r: f32, g: f32, b: f32, a: f32) -> Color<'a> {
let (obj_data, funcs) = unsafe {
(
::std::ptr::null(),
(*((*rute_ffi_get()).get_color)(::std::ptr::null()).all_funcs).color_funcs,
)
};
unsafe {
let ret_val = ((*funcs).from_rgb_f)(obj_data, r, g, b, a);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn from_rgba64(r: u16, g: u16, b: u16, a: u16) -> Color<'a> {
let (obj_data, funcs) = unsafe {
(
::std::ptr::null(),
(*((*rute_ffi_get()).get_color)(::std::ptr::null()).all_funcs).color_funcs,
)
};
unsafe {
let ret_val = ((*funcs).from_rgba64)(obj_data, r, g, b, a);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn from_hsv(h: i32, s: i32, v: i32, a: i32) -> Color<'a> {
let (obj_data, funcs) = unsafe {
(
::std::ptr::null(),
(*((*rute_ffi_get()).get_color)(::std::ptr::null()).all_funcs).color_funcs,
)
};
unsafe {
let ret_val = ((*funcs).from_hsv)(obj_data, h, s, v, a);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn from_hsv_f(h: f32, s: f32, v: f32, a: f32) -> Color<'a> {
let (obj_data, funcs) = unsafe {
(
::std::ptr::null(),
(*((*rute_ffi_get()).get_color)(::std::ptr::null()).all_funcs).color_funcs,
)
};
unsafe {
let ret_val = ((*funcs).from_hsv_f)(obj_data, h, s, v, a);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn from_cmyk(c: i32, m: i32, y: i32, k: i32, a: i32) -> Color<'a> {
let (obj_data, funcs) = unsafe {
(
::std::ptr::null(),
(*((*rute_ffi_get()).get_color)(::std::ptr::null()).all_funcs).color_funcs,
)
};
unsafe {
let ret_val = ((*funcs).from_cmyk)(obj_data, c, m, y, k, a);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn from_cmyk_f(c: f32, m: f32, y: f32, k: f32, a: f32) -> Color<'a> {
let (obj_data, funcs) = unsafe {
(
::std::ptr::null(),
(*((*rute_ffi_get()).get_color)(::std::ptr::null()).all_funcs).color_funcs,
)
};
unsafe {
let ret_val = ((*funcs).from_cmyk_f)(obj_data, c, m, y, k, a);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn from_hsl(h: i32, s: i32, l: i32, a: i32) -> Color<'a> {
let (obj_data, funcs) = unsafe {
(
::std::ptr::null(),
(*((*rute_ffi_get()).get_color)(::std::ptr::null()).all_funcs).color_funcs,
)
};
unsafe {
let ret_val = ((*funcs).from_hsl)(obj_data, h, s, l, a);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn from_hsl_f(h: f32, s: f32, l: f32, a: f32) -> Color<'a> {
let (obj_data, funcs) = unsafe {
(
::std::ptr::null(),
(*((*rute_ffi_get()).get_color)(::std::ptr::null()).all_funcs).color_funcs,
)
};
unsafe {
let ret_val = ((*funcs).from_hsl_f)(obj_data, h, s, l, a);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn light(&self, f: i32) -> Color {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).light)(obj_data, f);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn lighter(&self, f: i32) -> Color {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).lighter)(obj_data, f);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn dark(&self, f: i32) -> Color {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).dark)(obj_data, f);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn darker(&self, f: i32) -> Color {
let (obj_data, funcs) = self.get_color_obj_funcs();
unsafe {
let ret_val = ((*funcs).darker)(obj_data, f);
let t = ret_val;
let ret_val;
if t.host_data != ::std::ptr::null() {
ret_val = Color::new_from_rc(t);
} else {
ret_val = Color::new_from_owned(t);
}
ret_val
}
}
pub fn is_valid_color(name: &str) -> bool {
let str_in_name_1 = CString::new(name).unwrap();
let (obj_data, funcs) = unsafe {
(
::std::ptr::null(),
(*((*rute_ffi_get()).get_color)(::std::ptr::null()).all_funcs).color_funcs,
)
};
unsafe {
let ret_val = ((*funcs).is_valid_color)(obj_data, str_in_name_1.as_ptr());
ret_val
}
}
pub fn build(&self) -> Self {
self.clone()
}
}
pub trait ColorTrait<'a> {
#[inline]
#[doc(hidden)]
fn get_color_obj_funcs(&self) -> (*const RUBase, *const RUColorFuncs);
}
impl<'a> ColorTrait<'a> for Color<'a> {
#[doc(hidden)]
fn get_color_obj_funcs(&self) -> (*const RUBase, *const RUColorFuncs) {
let obj = self.data.get().unwrap();
unsafe { (obj, (*self.all_funcs).color_funcs) }
}
}
#[repr(u32)]
pub enum Spec {
Invalid = 0,
Rgb = 1,
Hsv = 2,
Cmyk = 3,
Hsl = 4,
}
#[repr(u32)]
pub enum NameFormat {
HexRgb = 0,
HexArgb = 1,
}