/* automatically generated by rust-bindgen */

pub const _STDINT_H: u32 = 1;
pub const _FEATURES_H: u32 = 1;
pub const _ISOC95_SOURCE: u32 = 1;
pub const _ISOC99_SOURCE: u32 = 1;
pub const _ISOC11_SOURCE: u32 = 1;
pub const _POSIX_SOURCE: u32 = 1;
pub const _POSIX_C_SOURCE: u32 = 200809;
pub const _XOPEN_SOURCE: u32 = 700;
pub const _XOPEN_SOURCE_EXTENDED: u32 = 1;
pub const _LARGEFILE64_SOURCE: u32 = 1;
pub const _DEFAULT_SOURCE: u32 = 1;
pub const _ATFILE_SOURCE: u32 = 1;
pub const __USE_ISOC11: u32 = 1;
pub const __USE_ISOC99: u32 = 1;
pub const __USE_ISOC95: u32 = 1;
pub const __USE_ISOCXX11: u32 = 1;
pub const __USE_POSIX: u32 = 1;
pub const __USE_POSIX2: u32 = 1;
pub const __USE_POSIX199309: u32 = 1;
pub const __USE_POSIX199506: u32 = 1;
pub const __USE_XOPEN2K: u32 = 1;
pub const __USE_XOPEN2K8: u32 = 1;
pub const __USE_XOPEN: u32 = 1;
pub const __USE_XOPEN_EXTENDED: u32 = 1;
pub const __USE_UNIX98: u32 = 1;
pub const _LARGEFILE_SOURCE: u32 = 1;
pub const __USE_XOPEN2K8XSI: u32 = 1;
pub const __USE_XOPEN2KXSI: u32 = 1;
pub const __USE_LARGEFILE: u32 = 1;
pub const __USE_LARGEFILE64: u32 = 1;
pub const __USE_MISC: u32 = 1;
pub const __USE_ATFILE: u32 = 1;
pub const __USE_GNU: u32 = 1;
pub const __USE_FORTIFY_LEVEL: u32 = 0;
pub const __GLIBC_USE_DEPRECATED_GETS: u32 = 0;
pub const __GLIBC_USE_DEPRECATED_SCANF: u32 = 0;
pub const _STDC_PREDEF_H: u32 = 1;
pub const __STDC_IEC_559__: u32 = 1;
pub const __STDC_IEC_559_COMPLEX__: u32 = 1;
pub const __STDC_ISO_10646__: u32 = 201706;
pub const __GNU_LIBRARY__: u32 = 6;
pub const __GLIBC__: u32 = 2;
pub const __GLIBC_MINOR__: u32 = 29;
pub const _SYS_CDEFS_H: u32 = 1;
pub const __glibc_c99_flexarr_available: u32 = 1;
pub const __WORDSIZE: u32 = 64;
pub const __WORDSIZE_TIME64_COMPAT32: u32 = 1;
pub const __SYSCALL_WORDSIZE: u32 = 64;
pub const __HAVE_GENERIC_SELECTION: u32 = 0;
pub const __GLIBC_USE_LIB_EXT2: u32 = 1;
pub const __GLIBC_USE_IEC_60559_BFP_EXT: u32 = 1;
pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: u32 = 1;
pub const __GLIBC_USE_IEC_60559_TYPES_EXT: u32 = 1;
pub const _BITS_TYPES_H: u32 = 1;
pub const __TIMESIZE: u32 = 64;
pub const _BITS_TYPESIZES_H: u32 = 1;
pub const __OFF_T_MATCHES_OFF64_T: u32 = 1;
pub const __INO_T_MATCHES_INO64_T: u32 = 1;
pub const __RLIM_T_MATCHES_RLIM64_T: u32 = 1;
pub const __FD_SETSIZE: u32 = 1024;
pub const _BITS_TIME64_H: u32 = 1;
pub const _BITS_WCHAR_H: u32 = 1;
pub const _BITS_STDINT_INTN_H: u32 = 1;
pub const _BITS_STDINT_UINTN_H: u32 = 1;
pub const INT8_MIN: i32 = -128;
pub const INT16_MIN: i32 = -32768;
pub const INT32_MIN: i32 = -2147483648;
pub const INT8_MAX: u32 = 127;
pub const INT16_MAX: u32 = 32767;
pub const INT32_MAX: u32 = 2147483647;
pub const UINT8_MAX: u32 = 255;
pub const UINT16_MAX: u32 = 65535;
pub const UINT32_MAX: u32 = 4294967295;
pub const INT_LEAST8_MIN: i32 = -128;
pub const INT_LEAST16_MIN: i32 = -32768;
pub const INT_LEAST32_MIN: i32 = -2147483648;
pub const INT_LEAST8_MAX: u32 = 127;
pub const INT_LEAST16_MAX: u32 = 32767;
pub const INT_LEAST32_MAX: u32 = 2147483647;
pub const UINT_LEAST8_MAX: u32 = 255;
pub const UINT_LEAST16_MAX: u32 = 65535;
pub const UINT_LEAST32_MAX: u32 = 4294967295;
pub const INT_FAST8_MIN: i32 = -128;
pub const INT_FAST16_MIN: i64 = -9223372036854775808;
pub const INT_FAST32_MIN: i64 = -9223372036854775808;
pub const INT_FAST8_MAX: u32 = 127;
pub const INT_FAST16_MAX: u64 = 9223372036854775807;
pub const INT_FAST32_MAX: u64 = 9223372036854775807;
pub const UINT_FAST8_MAX: u32 = 255;
pub const UINT_FAST16_MAX: i32 = -1;
pub const UINT_FAST32_MAX: i32 = -1;
pub const INTPTR_MIN: i64 = -9223372036854775808;
pub const INTPTR_MAX: u64 = 9223372036854775807;
pub const UINTPTR_MAX: i32 = -1;
pub const PTRDIFF_MIN: i64 = -9223372036854775808;
pub const PTRDIFF_MAX: u64 = 9223372036854775807;
pub const SIG_ATOMIC_MIN: i32 = -2147483648;
pub const SIG_ATOMIC_MAX: u32 = 2147483647;
pub const SIZE_MAX: i32 = -1;
pub const WINT_MIN: u32 = 0;
pub const WINT_MAX: u32 = 4294967295;
pub const INT8_WIDTH: u32 = 8;
pub const UINT8_WIDTH: u32 = 8;
pub const INT16_WIDTH: u32 = 16;
pub const UINT16_WIDTH: u32 = 16;
pub const INT32_WIDTH: u32 = 32;
pub const UINT32_WIDTH: u32 = 32;
pub const INT64_WIDTH: u32 = 64;
pub const UINT64_WIDTH: u32 = 64;
pub const INT_LEAST8_WIDTH: u32 = 8;
pub const UINT_LEAST8_WIDTH: u32 = 8;
pub const INT_LEAST16_WIDTH: u32 = 16;
pub const UINT_LEAST16_WIDTH: u32 = 16;
pub const INT_LEAST32_WIDTH: u32 = 32;
pub const UINT_LEAST32_WIDTH: u32 = 32;
pub const INT_LEAST64_WIDTH: u32 = 64;
pub const UINT_LEAST64_WIDTH: u32 = 64;
pub const INT_FAST8_WIDTH: u32 = 8;
pub const UINT_FAST8_WIDTH: u32 = 8;
pub const INT_FAST16_WIDTH: u32 = 64;
pub const UINT_FAST16_WIDTH: u32 = 64;
pub const INT_FAST32_WIDTH: u32 = 64;
pub const UINT_FAST32_WIDTH: u32 = 64;
pub const INT_FAST64_WIDTH: u32 = 64;
pub const UINT_FAST64_WIDTH: u32 = 64;
pub const INTPTR_WIDTH: u32 = 64;
pub const UINTPTR_WIDTH: u32 = 64;
pub const INTMAX_WIDTH: u32 = 64;
pub const UINTMAX_WIDTH: u32 = 64;
pub const PTRDIFF_WIDTH: u32 = 64;
pub const SIG_ATOMIC_WIDTH: u32 = 32;
pub const SIZE_WIDTH: u32 = 64;
pub const WCHAR_WIDTH: u32 = 32;
pub const WINT_WIDTH: u32 = 32;
pub type __u_char = ::std::os::raw::c_uchar;
pub type __u_short = ::std::os::raw::c_ushort;
pub type __u_int = ::std::os::raw::c_uint;
pub type __u_long = ::std::os::raw::c_ulong;
pub type __int8_t = ::std::os::raw::c_schar;
pub type __uint8_t = ::std::os::raw::c_uchar;
pub type __int16_t = ::std::os::raw::c_short;
pub type __uint16_t = ::std::os::raw::c_ushort;
pub type __int32_t = ::std::os::raw::c_int;
pub type __uint32_t = ::std::os::raw::c_uint;
pub type __int64_t = ::std::os::raw::c_long;
pub type __uint64_t = ::std::os::raw::c_ulong;
pub type __int_least8_t = __int8_t;
pub type __uint_least8_t = __uint8_t;
pub type __int_least16_t = __int16_t;
pub type __uint_least16_t = __uint16_t;
pub type __int_least32_t = __int32_t;
pub type __uint_least32_t = __uint32_t;
pub type __int_least64_t = __int64_t;
pub type __uint_least64_t = __uint64_t;
pub type __quad_t = ::std::os::raw::c_long;
pub type __u_quad_t = ::std::os::raw::c_ulong;
pub type __intmax_t = ::std::os::raw::c_long;
pub type __uintmax_t = ::std::os::raw::c_ulong;
pub type __dev_t = ::std::os::raw::c_ulong;
pub type __uid_t = ::std::os::raw::c_uint;
pub type __gid_t = ::std::os::raw::c_uint;
pub type __ino_t = ::std::os::raw::c_ulong;
pub type __ino64_t = ::std::os::raw::c_ulong;
pub type __mode_t = ::std::os::raw::c_uint;
pub type __nlink_t = ::std::os::raw::c_ulong;
pub type __off_t = ::std::os::raw::c_long;
pub type __off64_t = ::std::os::raw::c_long;
pub type __pid_t = ::std::os::raw::c_int;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __fsid_t {
    pub __val: [::std::os::raw::c_int; 2usize],
}
#[test]
fn bindgen_test_layout___fsid_t() {
    assert_eq!(
        ::std::mem::size_of::<__fsid_t>(),
        8usize,
        concat!("Size of: ", stringify!(__fsid_t))
    );
    assert_eq!(
        ::std::mem::align_of::<__fsid_t>(),
        4usize,
        concat!("Alignment of ", stringify!(__fsid_t))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<__fsid_t>())).__val as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(__fsid_t),
            "::",
            stringify!(__val)
        )
    );
}
pub type __clock_t = ::std::os::raw::c_long;
pub type __rlim_t = ::std::os::raw::c_ulong;
pub type __rlim64_t = ::std::os::raw::c_ulong;
pub type __id_t = ::std::os::raw::c_uint;
pub type __time_t = ::std::os::raw::c_long;
pub type __useconds_t = ::std::os::raw::c_uint;
pub type __suseconds_t = ::std::os::raw::c_long;
pub type __daddr_t = ::std::os::raw::c_int;
pub type __key_t = ::std::os::raw::c_int;
pub type __clockid_t = ::std::os::raw::c_int;
pub type __timer_t = *mut ::std::os::raw::c_void;
pub type __blksize_t = ::std::os::raw::c_long;
pub type __blkcnt_t = ::std::os::raw::c_long;
pub type __blkcnt64_t = ::std::os::raw::c_long;
pub type __fsblkcnt_t = ::std::os::raw::c_ulong;
pub type __fsblkcnt64_t = ::std::os::raw::c_ulong;
pub type __fsfilcnt_t = ::std::os::raw::c_ulong;
pub type __fsfilcnt64_t = ::std::os::raw::c_ulong;
pub type __fsword_t = ::std::os::raw::c_long;
pub type __ssize_t = ::std::os::raw::c_long;
pub type __syscall_slong_t = ::std::os::raw::c_long;
pub type __syscall_ulong_t = ::std::os::raw::c_ulong;
pub type __loff_t = __off64_t;
pub type __caddr_t = *mut ::std::os::raw::c_char;
pub type __intptr_t = ::std::os::raw::c_long;
pub type __socklen_t = ::std::os::raw::c_uint;
pub type __sig_atomic_t = ::std::os::raw::c_int;
pub type int_least8_t = __int_least8_t;
pub type int_least16_t = __int_least16_t;
pub type int_least32_t = __int_least32_t;
pub type int_least64_t = __int_least64_t;
pub type uint_least8_t = __uint_least8_t;
pub type uint_least16_t = __uint_least16_t;
pub type uint_least32_t = __uint_least32_t;
pub type uint_least64_t = __uint_least64_t;
pub type int_fast8_t = ::std::os::raw::c_schar;
pub type int_fast16_t = ::std::os::raw::c_long;
pub type int_fast32_t = ::std::os::raw::c_long;
pub type int_fast64_t = ::std::os::raw::c_long;
pub type uint_fast8_t = ::std::os::raw::c_uchar;
pub type uint_fast16_t = ::std::os::raw::c_ulong;
pub type uint_fast32_t = ::std::os::raw::c_ulong;
pub type uint_fast64_t = ::std::os::raw::c_ulong;
pub type intmax_t = __intmax_t;
pub type uintmax_t = __uintmax_t;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct skiac_context {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct skiac_surface {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct skiac_canvas {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct skiac_matrix {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct skiac_paint {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct skiac_path {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct skiac_shader {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct skiac_path_effect {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct skia_matrix {
    pub a: f64,
    pub b: f64,
    pub c: f64,
    pub d: f64,
    pub e: f64,
    pub f: f64,
}
#[test]
fn bindgen_test_layout_skia_matrix() {
    assert_eq!(
        ::std::mem::size_of::<skia_matrix>(),
        48usize,
        concat!("Size of: ", stringify!(skia_matrix))
    );
    assert_eq!(
        ::std::mem::align_of::<skia_matrix>(),
        8usize,
        concat!("Alignment of ", stringify!(skia_matrix))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<skia_matrix>())).a as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(skia_matrix),
            "::",
            stringify!(a)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<skia_matrix>())).b as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(skia_matrix),
            "::",
            stringify!(b)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<skia_matrix>())).c as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(skia_matrix),
            "::",
            stringify!(c)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<skia_matrix>())).d as *const _ as usize },
        24usize,
        concat!(
            "Offset of field: ",
            stringify!(skia_matrix),
            "::",
            stringify!(d)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<skia_matrix>())).e as *const _ as usize },
        32usize,
        concat!(
            "Offset of field: ",
            stringify!(skia_matrix),
            "::",
            stringify!(e)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<skia_matrix>())).f as *const _ as usize },
        40usize,
        concat!(
            "Offset of field: ",
            stringify!(skia_matrix),
            "::",
            stringify!(f)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct skia_point {
    pub x: f32,
    pub y: f32,
}
#[test]
fn bindgen_test_layout_skia_point() {
    assert_eq!(
        ::std::mem::size_of::<skia_point>(),
        8usize,
        concat!("Size of: ", stringify!(skia_point))
    );
    assert_eq!(
        ::std::mem::align_of::<skia_point>(),
        4usize,
        concat!("Alignment of ", stringify!(skia_point))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<skia_point>())).x as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(skia_point),
            "::",
            stringify!(x)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<skia_point>())).y as *const _ as usize },
        4usize,
        concat!(
            "Offset of field: ",
            stringify!(skia_point),
            "::",
            stringify!(y)
        )
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct skiac_surface_data {
    pub ptr: *mut u8,
    pub size: u32,
}
#[test]
fn bindgen_test_layout_skiac_surface_data() {
    assert_eq!(
        ::std::mem::size_of::<skiac_surface_data>(),
        16usize,
        concat!("Size of: ", stringify!(skiac_surface_data))
    );
    assert_eq!(
        ::std::mem::align_of::<skiac_surface_data>(),
        8usize,
        concat!("Alignment of ", stringify!(skiac_surface_data))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<skiac_surface_data>())).ptr as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(skiac_surface_data),
            "::",
            stringify!(ptr)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<skiac_surface_data>())).size as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(skiac_surface_data),
            "::",
            stringify!(size)
        )
    );
}
pub const PaintStyle_Fill: PaintStyle = 0;
pub const PaintStyle_Stroke: PaintStyle = 1;
pub type PaintStyle = i32;
pub const StrokeCap_Butt: StrokeCap = 0;
pub const StrokeCap_Round: StrokeCap = 1;
pub const StrokeCap_Square: StrokeCap = 2;
pub type StrokeCap = i32;
pub const StrokeJoin_Miter: StrokeJoin = 0;
pub const StrokeJoin_Round: StrokeJoin = 1;
pub const StrokeJoin_Bevel: StrokeJoin = 2;
pub type StrokeJoin = i32;
pub const FillType_Winding: FillType = 0;
pub const FillType_EvenOdd: FillType = 1;
pub type FillType = i32;
pub const TileMode_Clamp: TileMode = 0;
pub const TileMode_Repeat: TileMode = 1;
pub const TileMode_Mirror: TileMode = 2;
pub type TileMode = i32;
pub const BlendMode_Clear: BlendMode = 0;
pub const BlendMode_SourceOver: BlendMode = 1;
pub const BlendMode_DestinationOver: BlendMode = 2;
pub const BlendMode_SourceIn: BlendMode = 3;
pub const BlendMode_DestinationIn: BlendMode = 4;
pub const BlendMode_SourceOut: BlendMode = 5;
pub const BlendMode_DestinationOut: BlendMode = 6;
pub const BlendMode_SourceAtop: BlendMode = 7;
pub const BlendMode_Xor: BlendMode = 8;
pub const BlendMode_Multiply: BlendMode = 9;
pub const BlendMode_Screen: BlendMode = 10;
pub const BlendMode_Darken: BlendMode = 11;
pub const BlendMode_Lighten: BlendMode = 12;
pub const BlendMode___Size: BlendMode = 13;
pub type BlendMode = i32;
pub const FilterQuality_None: FilterQuality = 0;
pub const FilterQuality_Low: FilterQuality = 1;
pub const FilterQuality_Medium: FilterQuality = 2;
pub const FilterQuality_High: FilterQuality = 3;
pub type FilterQuality = i32;
extern "C" {
    pub fn skiac_surface_create_rgba_premultiplied(
        width: ::std::os::raw::c_int,
        height: ::std::os::raw::c_int,
    ) -> *mut skiac_surface;
}
extern "C" {
    pub fn skiac_surface_create_rgba(
        width: ::std::os::raw::c_int,
        height: ::std::os::raw::c_int,
    ) -> *mut skiac_surface;
}
extern "C" {
    pub fn skiac_surface_destroy(c_surface: *mut skiac_surface);
}
extern "C" {
    pub fn skiac_surface_copy_rgba(
        c_surface: *mut skiac_surface,
        x: u32,
        y: u32,
        width: u32,
        height: u32,
    ) -> *mut skiac_surface;
}
extern "C" {
    pub fn skiac_surface_save(
        c_surface: *mut skiac_surface,
        path: *const ::std::os::raw::c_char,
    ) -> bool;
}
extern "C" {
    pub fn skiac_surface_get_canvas(c_surface: *mut skiac_surface) -> *mut skiac_canvas;
}
extern "C" {
    pub fn skiac_surface_get_width(c_surface: *mut skiac_surface) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn skiac_surface_get_height(c_surface: *mut skiac_surface) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn skiac_surface_read_pixels(c_surface: *mut skiac_surface, data: *mut skiac_surface_data);
}
extern "C" {
    pub fn skiac_is_surface_bgra() -> bool;
}
extern "C" {
    pub fn skiac_canvas_clear(c_canvas: *mut skiac_canvas, color: u32);
}
extern "C" {
    pub fn skiac_canvas_flush(c_canvas: *mut skiac_canvas);
}
extern "C" {
    pub fn skiac_canvas_set_matrix(c_canvas: *mut skiac_canvas, c_matrix: *mut skiac_matrix);
}
extern "C" {
    pub fn skiac_canvas_concat(c_canvas: *mut skiac_canvas, c_matrix: *mut skiac_matrix);
}
extern "C" {
    pub fn skiac_canvas_scale(c_canvas: *mut skiac_canvas, sx: f64, sy: f64);
}
extern "C" {
    pub fn skiac_canvas_translate(c_canvas: *mut skiac_canvas, dx: f64, dy: f64);
}
extern "C" {
    pub fn skiac_canvas_get_total_matrix(c_canvas: *mut skiac_canvas) -> *mut skiac_matrix;
}
extern "C" {
    pub fn skiac_canvas_draw_path(
        c_canvas: *mut skiac_canvas,
        c_path: *mut skiac_path,
        c_paint: *mut skiac_paint,
    );
}
extern "C" {
    pub fn skiac_canvas_draw_rect(
        c_canvas: *mut skiac_canvas,
        x: f64,
        y: f64,
        w: f64,
        h: f64,
        c_paint: *mut skiac_paint,
    );
}
extern "C" {
    pub fn skiac_canvas_draw_surface(
        c_canvas: *mut skiac_canvas,
        c_surface: *mut skiac_surface,
        left: f64,
        top: f64,
        alpha: u8,
        blendMode: BlendMode,
        filterQuality: FilterQuality,
    );
}
extern "C" {
    pub fn skiac_canvas_draw_surface_rect(
        c_canvas: *mut skiac_canvas,
        c_surface: *mut skiac_surface,
        x: f64,
        y: f64,
        w: f64,
        h: f64,
        filterQuality: FilterQuality,
    );
}
extern "C" {
    pub fn skiac_canvas_reset_matrix(c_canvas: *mut skiac_canvas);
}
extern "C" {
    pub fn skiac_canvas_clip_rect(c_canvas: *mut skiac_canvas, x: f64, y: f64, w: f64, h: f64);
}
extern "C" {
    pub fn skiac_canvas_save(c_canvas: *mut skiac_canvas);
}
extern "C" {
    pub fn skiac_canvas_restore(c_canvas: *mut skiac_canvas);
}
extern "C" {
    pub fn skiac_matrix_create() -> *mut skiac_matrix;
}
extern "C" {
    pub fn skiac_matrix_create_from(
        a: f64,
        b: f64,
        c: f64,
        d: f64,
        e: f64,
        f: f64,
    ) -> *mut skiac_matrix;
}
extern "C" {
    pub fn skiac_matrix_create_inverse(c_matrix: *mut skiac_matrix) -> *mut skiac_matrix;
}
extern "C" {
    pub fn skiac_matrix_get_data(c_matrix: *mut skiac_matrix) -> skia_matrix;
}
extern "C" {
    pub fn skiac_matrix_destroy(c_matrix: *mut skiac_matrix);
}
extern "C" {
    pub fn skiac_paint_create() -> *mut skiac_paint;
}
extern "C" {
    pub fn skiac_paint_destroy(c_paint: *mut skiac_paint);
}
extern "C" {
    pub fn skiac_paint_set_style(c_paint: *mut skiac_paint, style: PaintStyle);
}
extern "C" {
    pub fn skiac_paint_set_color(c_paint: *mut skiac_paint, r: u8, g: u8, b: u8, a: u8);
}
extern "C" {
    pub fn skiac_paint_set_alpha(c_paint: *mut skiac_paint, a: u8);
}
extern "C" {
    pub fn skiac_paint_set_anti_alias(c_paint: *mut skiac_paint, aa: bool);
}
extern "C" {
    pub fn skiac_paint_set_blend_mode(c_paint: *mut skiac_paint, blendMode: BlendMode);
}
extern "C" {
    pub fn skiac_paint_set_shader(c_paint: *mut skiac_paint, c_shader: *mut skiac_shader);
}
extern "C" {
    pub fn skiac_paint_set_stroke_width(c_paint: *mut skiac_paint, width: f64);
}
extern "C" {
    pub fn skiac_paint_set_stroke_cap(c_paint: *mut skiac_paint, cap: StrokeCap);
}
extern "C" {
    pub fn skiac_paint_set_stroke_join(c_paint: *mut skiac_paint, join: StrokeJoin);
}
extern "C" {
    pub fn skiac_paint_set_stroke_miter(c_paint: *mut skiac_paint, miter: f32);
}
extern "C" {
    pub fn skiac_paint_set_path_effect(
        c_paint: *mut skiac_paint,
        c_path_effect: *mut skiac_path_effect,
    );
}
extern "C" {
    pub fn skiac_path_create() -> *mut skiac_path;
}
extern "C" {
    pub fn skiac_path_destroy(c_path: *mut skiac_path);
}
extern "C" {
    pub fn skiac_path_set_fill_type(c_path: *mut skiac_path, type_: FillType);
}
extern "C" {
    pub fn skiac_path_move_to(c_path: *mut skiac_path, x: f64, y: f64);
}
extern "C" {
    pub fn skiac_path_line_to(c_path: *mut skiac_path, x: f64, y: f64);
}
extern "C" {
    pub fn skiac_path_cubic_to(
        c_path: *mut skiac_path,
        x1: f64,
        y1: f64,
        x2: f64,
        y2: f64,
        x3: f64,
        y3: f64,
    );
}
extern "C" {
    pub fn skiac_path_close(c_path: *mut skiac_path);
}
extern "C" {
    pub fn skiac_path_effect_make_dash_path(
        intervals: *const f32,
        count: ::std::os::raw::c_int,
        phase: f32,
    ) -> *mut skiac_path_effect;
}
extern "C" {
    pub fn skiac_path_effect_destroy(c_path_effect: *mut skiac_path_effect);
}
extern "C" {
    pub fn skiac_shader_make_linear_gradient(
        points: *const skia_point,
        colors: *const u32,
        positions: *const f32,
        count: ::std::os::raw::c_int,
        tile_mode: TileMode,
        flags: u32,
        c_matrix: *mut skiac_matrix,
    ) -> *mut skiac_shader;
}
extern "C" {
    pub fn skiac_shader_make_two_point_conical_gradient(
        start_point: skia_point,
        start_radius: f32,
        end_point: skia_point,
        end_radius: f32,
        colors: *const u32,
        positions: *const f32,
        count: ::std::os::raw::c_int,
        tile_mode: TileMode,
        flags: u32,
        c_matrix: *mut skiac_matrix,
    ) -> *mut skiac_shader;
}
extern "C" {
    pub fn skiac_shader_make_from_surface_image(
        c_surface: *mut skiac_surface,
        c_matrix: *mut skiac_matrix,
    ) -> *mut skiac_shader;
}
extern "C" {
    pub fn skiac_shader_destroy(c_shader: *mut skiac_shader);
}
