Skip to main content

native/skia_native/src/generated_clips.rs

// Generated by mix skia.codegen. Do not edit by hand.

fn clip_rect_impl<'a>(
    canvas: &skia_safe::Canvas,
    opts: generated_opts::ClipRectOpts<'a>,
    _raw_opts: &[(Atom, Term<'a>)],
) -> NifResult<()> {
    let rect = Rect::from_xywh(opts.x, opts.y, opts.width, opts.height);
    let radius = opts.radius.unwrap_or(0.0);
    let antialias = opts.antialias.unwrap_or(true);
    let clip_op = decode_clip_op(opts.clip_op.unwrap_or(atoms::intersect()))?;
    if radius > 0.0 {
        canvas.clip_rrect(RRect::new_rect_xy(rect, radius, radius), clip_op, antialias);
    } else {
        canvas.clip_rect(rect, clip_op, antialias);
    }
    Ok(())
}
fn clip_circle_impl<'a>(
    canvas: &skia_safe::Canvas,
    opts: generated_opts::ClipCircleOpts<'a>,
    _raw_opts: &[(Atom, Term<'a>)],
) -> NifResult<()> {
    let mut builder = PathBuilder::new();
    builder.add_circle(Point::new(opts.x, opts.y), opts.radius, None);
    let path = builder.detach();
    let clip_op = decode_clip_op(opts.clip_op.unwrap_or(atoms::intersect()))?;
    canvas.clip_path(&path, clip_op, opts.antialias.unwrap_or(true));
    Ok(())
}
fn clip_path_impl<'a>(
    canvas: &skia_safe::Canvas,
    args: Vec<Term<'a>>,
    opts: generated_opts::ClipPathOpts<'a>,
    raw_opts: &[(Atom, Term<'a>)],
) -> NifResult<()> {
    let mut path = build_path(*args.first().ok_or(rustler::Error::BadArg)?)?;
    apply_fill_rule(&mut path, raw_opts)?;
    let clip_op = decode_clip_op(opts.clip_op.unwrap_or(atoms::intersect()))?;
    canvas.clip_path(&path, clip_op, opts.antialias.unwrap_or(true));
    Ok(())
}