// This file is auto-generated by rute_gen. DO NOT EDIT.
use rute_ffi_base::*;

#[allow(unused_imports)]
use auto::color_ffi::RUColor;
#[allow(unused_imports)]
use auto::paint_device_ffi::*;
#[allow(unused_imports)]
use auto::paint_engine_ffi::RUPaintEngine;
#[allow(unused_imports)]
use auto::pixel_format_ffi::RUPixelFormat;
#[allow(unused_imports)]
use auto::point_ffi::RUPoint;
#[allow(unused_imports)]
use auto::rect_ffi::RURect;
#[allow(unused_imports)]
use auto::size_ffi::RUSize;
#[allow(unused_imports)]
use std::os::raw::c_void;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct RUImageFuncs {
    pub destroy: extern "C" fn(self_c: *const RUBase),
    pub swap: extern "C" fn(self_c: *const RUBase, other: *const RUBase),
    pub is_null: extern "C" fn(self_c: *const RUBase) -> bool,
    pub dev_type: extern "C" fn(self_c: *const RUBase) -> i32,
    pub detach: extern "C" fn(self_c: *const RUBase),
    pub is_detached: extern "C" fn(self_c: *const RUBase) -> bool,
    pub copy: extern "C" fn(self_c: *const RUBase, rect: *const RUBase) -> RUImage,
    pub copy_2: extern "C" fn(self_c: *const RUBase, x: i32, y: i32, w: i32, h: i32) -> RUImage,
    pub format: extern "C" fn(self_c: *const RUBase) -> u32,
    pub convert_to_format: extern "C" fn(self_c: *const RUBase, f: u32, flags: u32) -> RUImage,
    pub convert_to_format_2: extern "C" fn(self_c: *const RUBase, f: u32, flags: u32) -> RUImage,
    pub reinterpret_as_format: extern "C" fn(self_c: *const RUBase, f: u32) -> bool,
    pub width: extern "C" fn(self_c: *const RUBase) -> i32,
    pub height: extern "C" fn(self_c: *const RUBase) -> i32,
    pub size: extern "C" fn(self_c: *const RUBase) -> RUSize,
    pub rect: extern "C" fn(self_c: *const RUBase) -> RURect,
    pub depth: extern "C" fn(self_c: *const RUBase) -> i32,
    pub color_count: extern "C" fn(self_c: *const RUBase) -> i32,
    pub bit_plane_count: extern "C" fn(self_c: *const RUBase) -> i32,
    pub set_color_count: extern "C" fn(self_c: *const RUBase, arg0: i32),
    pub all_gray: extern "C" fn(self_c: *const RUBase) -> bool,
    pub is_grayscale: extern "C" fn(self_c: *const RUBase) -> bool,
    pub byte_count: extern "C" fn(self_c: *const RUBase) -> i32,
    pub bytes_per_line: extern "C" fn(self_c: *const RUBase) -> i32,
    pub valid: extern "C" fn(self_c: *const RUBase, x: i32, y: i32) -> bool,
    pub valid_2: extern "C" fn(self_c: *const RUBase, pt: *const RUBase) -> bool,
    pub pixel_index: extern "C" fn(self_c: *const RUBase, x: i32, y: i32) -> i32,
    pub pixel_index_2: extern "C" fn(self_c: *const RUBase, pt: *const RUBase) -> i32,
    pub set_pixel: extern "C" fn(self_c: *const RUBase, x: i32, y: i32, index_or_rgb: u32),
    pub set_pixel_2: extern "C" fn(self_c: *const RUBase, pt: *const RUBase, index_or_rgb: u32),
    pub pixel_color: extern "C" fn(self_c: *const RUBase, x: i32, y: i32) -> RUColor,
    pub pixel_color_2: extern "C" fn(self_c: *const RUBase, pt: *const RUBase) -> RUColor,
    pub set_pixel_color: extern "C" fn(self_c: *const RUBase, x: i32, y: i32, c: *const RUBase),
    pub set_pixel_color_2:
        extern "C" fn(self_c: *const RUBase, pt: *const RUBase, c: *const RUBase),
    pub device_pixel_ratio: extern "C" fn(self_c: *const RUBase) -> f32,
    pub set_device_pixel_ratio: extern "C" fn(self_c: *const RUBase, scale_factor: f32),
    pub fill: extern "C" fn(self_c: *const RUBase, pixel: u32),
    pub fill_2: extern "C" fn(self_c: *const RUBase, color: *const RUBase),
    pub fill_3: extern "C" fn(self_c: *const RUBase, color: u32),
    pub has_alpha_channel: extern "C" fn(self_c: *const RUBase) -> bool,
    pub set_alpha_channel: extern "C" fn(self_c: *const RUBase, alpha_channel: *const RUBase),
    pub alpha_channel: extern "C" fn(self_c: *const RUBase) -> RUImage,
    pub create_alpha_mask: extern "C" fn(self_c: *const RUBase, flags: u32) -> RUImage,
    pub create_heuristic_mask: extern "C" fn(self_c: *const RUBase, clip_tight: bool) -> RUImage,
    pub scaled: extern "C" fn(
        self_c: *const RUBase,
        w: i32,
        h: i32,
        aspect_mode: u32,
        mode: u32,
    ) -> RUImage,
    pub scaled_2: extern "C" fn(
        self_c: *const RUBase,
        s: *const RUBase,
        aspect_mode: u32,
        mode: u32,
    ) -> RUImage,
    pub scaled_to_width: extern "C" fn(self_c: *const RUBase, w: i32, mode: u32) -> RUImage,
    pub scaled_to_height: extern "C" fn(self_c: *const RUBase, h: i32, mode: u32) -> RUImage,
    pub mirrored:
        extern "C" fn(self_c: *const RUBase, horizontally: bool, vertically: bool) -> RUImage,
    pub mirrored_2:
        extern "C" fn(self_c: *const RUBase, horizontally: bool, vertically: bool) -> RUImage,
    pub rgb_swapped: extern "C" fn(self_c: *const RUBase) -> RUImage,
    pub rgb_swapped_2: extern "C" fn(self_c: *const RUBase) -> RUImage,
    pub invert_pixels: extern "C" fn(self_c: *const RUBase, arg0: u32),
    pub cache_key: extern "C" fn(self_c: *const RUBase) -> i64,
    pub paint_engine: extern "C" fn(self_c: *const RUBase) -> RUPaintEngine,
    pub dots_per_meter_x: extern "C" fn(self_c: *const RUBase) -> i32,
    pub dots_per_meter_y: extern "C" fn(self_c: *const RUBase) -> i32,
    pub set_dots_per_meter_x: extern "C" fn(self_c: *const RUBase, arg0: i32),
    pub set_dots_per_meter_y: extern "C" fn(self_c: *const RUBase, arg0: i32),
    pub offset: extern "C" fn(self_c: *const RUBase) -> RUPoint,
    pub set_offset: extern "C" fn(self_c: *const RUBase, arg0: *const RUBase),
    pub text: extern "C" fn(
        self_c: *const RUBase,
        key: *const ::std::os::raw::c_char,
    ) -> *const ::std::os::raw::c_char,
    pub set_text: extern "C" fn(
        self_c: *const RUBase,
        key: *const ::std::os::raw::c_char,
        value: *const ::std::os::raw::c_char,
    ),
    pub pixel_format: extern "C" fn(self_c: *const RUBase) -> RUPixelFormat,
    pub to_pixel_format: extern "C" fn(self_c: *const RUBase, format: u32) -> RUPixelFormat,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct RUImageAllFuncs {
    pub paint_device_funcs: *const RUPaintDeviceFuncs,
    pub image_funcs: *const RUImageFuncs,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct RUImage {
    pub qt_data: *const RUBase,
    pub host_data: *const RUBase,
    pub all_funcs: *const RUImageAllFuncs,
}
