oden/third-party/vendor/tiny-skia/tests/integration/stroke.rs
2024-03-08 11:03:01 -08:00

134 lines
3.9 KiB
Rust

use tiny_skia::*;
#[test]
fn round_caps_and_large_scale() {
let mut paint = Paint::default();
paint.set_color_rgba8(50, 127, 150, 200);
paint.anti_alias = true;
let path = {
let mut pb = PathBuilder::new();
pb.move_to(60.0 / 16.0, 100.0 / 16.0);
pb.line_to(140.0 / 16.0, 100.0 / 16.0);
pb.finish().unwrap()
};
let mut stroke = Stroke::default();
stroke.width = 6.0;
stroke.line_cap = LineCap::Round;
let transform = Transform::from_scale(16.0, 16.0);
let mut pixmap = Pixmap::new(200, 200).unwrap();
pixmap.stroke_path(&path, &paint, &stroke, transform, None);
let expected = Pixmap::load_png("tests/images/stroke/round-caps-and-large-scale.png").unwrap();
assert_eq!(pixmap, expected);
}
#[test]
fn circle() {
let mut paint = Paint::default();
paint.set_color_rgba8(50, 127, 150, 200);
paint.anti_alias = true;
let path = PathBuilder::from_circle(100.0, 100.0, 50.0).unwrap();
let mut stroke = Stroke::default();
stroke.width = 2.0;
let mut pixmap = Pixmap::new(200, 200).unwrap();
pixmap.stroke_path(&path, &paint, &stroke, Transform::default(), None);
let expected = Pixmap::load_png("tests/images/stroke/circle.png").unwrap();
assert_eq!(pixmap, expected);
}
#[test]
fn zero_len_subpath_butt_cap() {
let mut paint = Paint::default();
paint.set_color_rgba8(50, 127, 150, 200);
paint.anti_alias = true;
let mut pb = PathBuilder::new();
pb.move_to(50.0, 50.0);
pb.line_to(50.0, 50.0);
let path = pb.finish().unwrap();
let mut stroke = Stroke::default();
stroke.width = 20.0;
stroke.line_cap = LineCap::Butt;
let mut pixmap = Pixmap::new(100, 100).unwrap();
pixmap.stroke_path(&path, &paint, &stroke, Transform::default(), None);
let expected = Pixmap::load_png("tests/images/stroke/zero-len-subpath-butt-cap.png").unwrap();
assert_eq!(pixmap, expected);
}
#[test]
fn zero_len_subpath_round_cap() {
let mut paint = Paint::default();
paint.set_color_rgba8(50, 127, 150, 200);
paint.anti_alias = true;
let mut pb = PathBuilder::new();
pb.move_to(50.0, 50.0);
pb.line_to(50.0, 50.0);
let path = pb.finish().unwrap();
let mut stroke = Stroke::default();
stroke.width = 20.0;
stroke.line_cap = LineCap::Round;
let mut pixmap = Pixmap::new(100, 100).unwrap();
pixmap.stroke_path(&path, &paint, &stroke, Transform::default(), None);
let expected = Pixmap::load_png("tests/images/stroke/zero-len-subpath-round-cap.png").unwrap();
assert_eq!(pixmap, expected);
}
#[test]
fn zero_len_subpath_square_cap() {
let mut paint = Paint::default();
paint.set_color_rgba8(50, 127, 150, 200);
paint.anti_alias = true;
let mut pb = PathBuilder::new();
pb.move_to(50.0, 50.0);
pb.line_to(50.0, 50.0);
let path = pb.finish().unwrap();
let mut stroke = Stroke::default();
stroke.width = 20.0;
stroke.line_cap = LineCap::Square;
let mut pixmap = Pixmap::new(100, 100).unwrap();
pixmap.stroke_path(&path, &paint, &stroke, Transform::default(), None);
let expected = Pixmap::load_png("tests/images/stroke/zero-len-subpath-square-cap.png").unwrap();
assert_eq!(pixmap, expected);
}
#[test]
fn round_cap_join() {
let mut paint = Paint::default();
paint.set_color_rgba8(50, 127, 150, 200);
paint.anti_alias = true;
let mut pb = PathBuilder::new();
pb.move_to(170.0, 30.0);
pb.line_to(30.553378, 99.048418);
pb.cubic_to(30.563658, 99.066835, 30.546308, 99.280724, 30.557592, 99.305282);
let path = pb.finish().unwrap();
let mut stroke = Stroke::default();
stroke.width = 30.0;
stroke.line_cap = LineCap::Round;
stroke.line_join = LineJoin::Round;
let mut pixmap = Pixmap::new(200, 200).unwrap();
pixmap.stroke_path(&path, &paint, &stroke, Transform::default(), None);
let expected = Pixmap::load_png("tests/images/stroke/round-cap-join.png").unwrap();
assert_eq!(pixmap, expected);
}