babl 0.1.2

Babl Rust bindings
Documentation
use crate::Object;

pub enum Performance {
    Exact,
    Precise,
    Fast,
    Glitch,
}

define_object!(Fish);

impl Fish {
    #[doc(alias = "babl_fish")]
    pub fn new(source: &Format, destination: &Format) -> Self {
        unsafe { Self::from_raw_full(ffi::babl_fish(source.inner(), destination.inner())) }
    }

    #[doc(alias = "babl_fast_fish")]
    pub fn with_performance(source: &Format, destination: &Format, performance: &str) -> Self {
        unsafe {
            Self::from_raw_full(ffi::babl_fast_fish(
                source.inner(),
                destination.inner(),
                performance,
            ))
        }
    }

    #[doc(alias = "babl_process")]
    pub fn process(&self, source: &Format, destination: &Format, n: u32) -> u32 {
        unsafe { ffi::babl_process(self.0, source.inner(), destination.inner(), n) }
    }

    #[doc(alias = "babl_process_rows")]
    pub fn process_rows(
        &self,
        source: &Format,
        source_stride: u32,
        dest: &Format,
        dest_stride: u32,
        n: u32,
        rows: u32,
    ) -> u32 {
        unsafe {
            ffi::babl_process_rows(
                self.0,
                source.inner(),
                source_stride,
                destination.inner(),
                dest_stride,
                n,
                rows,
            )
        }
    }
}