// 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(())
}