skia-safe 0.58.0

Safe Skia Bindings for Rust
use crate::{prelude::*, scalar, MaskFilter};
use skia_bindings::{self as sb, SkMaskFilter};

pub fn new_gamma_table(gamma: scalar) -> [u8; 256] {
    construct(|t| unsafe { sb::SkTableMaskFilter_MakeGammaTable(t as *mut u8, gamma) })
}

pub fn new_clip_table(min: u8, max: u8) -> [u8; 256] {
    construct(|t| unsafe { sb::SkTableMaskFilter_MakeClipTable(t as *mut u8, min, max) })
}

impl MaskFilter {
    pub fn table(table: &[u8; 256]) -> MaskFilter {
        new(table)
    }

    pub fn gamma(gamma: scalar) -> MaskFilter {
        new_gamma(gamma)
    }

    pub fn clip(min: u8, max: u8) -> MaskFilter {
        new_clip(min, max)
    }
}

pub fn new(table: &[u8; 256]) -> MaskFilter {
    MaskFilter::from_ptr(unsafe { sb::SkTableMaskFilter_Create(table.as_ptr()) }).unwrap()
}

pub fn new_gamma(gamma: scalar) -> MaskFilter {
    MaskFilter::from_ptr(unsafe { sb::SkTableMaskFilter_CreateGamma(gamma) }).unwrap()
}

pub fn new_clip(min: u8, max: u8) -> MaskFilter {
    MaskFilter::from_ptr(unsafe { sb::SkTableMaskFilter_CreateClip(min, max) }).unwrap()
}