()
| 23 | const OUTPUT_DIR: &str = "examples/serialize/_output"; |
| 24 | |
| 25 | fn main() { |
| 26 | let original_scene = create_demo_scene(); |
| 27 | |
| 28 | // Render original prior to serialization/deserialization roundtrip |
| 29 | let pixels = render_scene_to_buffer(&original_scene); |
| 30 | let img: RgbaImage = ImageBuffer::from_raw(WIDTH, HEIGHT, pixels.to_vec()).unwrap(); |
| 31 | img.save(Path::new(OUTPUT_DIR).join("original.png")) |
| 32 | .unwrap(); |
| 33 | |
| 34 | // Serialize |
| 35 | let archive_path = Path::new(OUTPUT_DIR).join("demo_scene.anyrender.zip"); |
| 36 | let file = File::create(&archive_path).unwrap(); |
| 37 | let writer = BufWriter::new(file); |
| 38 | let config = SerializeConfig::new() |
| 39 | .with_subset_fonts(true) |
| 40 | .with_woff2_fonts(true); |
| 41 | SceneArchive::from_scene(&original_scene, &config) |
| 42 | .unwrap() |
| 43 | .serialize(writer) |
| 44 | .unwrap(); |
| 45 | |
| 46 | // Deserialize |
| 47 | let file = File::open(&archive_path).unwrap(); |
| 48 | let deserialized_scene = SceneArchive::deserialize(file).unwrap().to_scene().unwrap(); |
| 49 | |
| 50 | // Render deserialized scene to verify against original |
| 51 | let pixels = render_scene_to_buffer(&deserialized_scene); |
| 52 | let img: RgbaImage = ImageBuffer::from_raw(WIDTH, HEIGHT, pixels.to_vec()).unwrap(); |
| 53 | img.save(Path::new(OUTPUT_DIR).join("roundtrip.png")) |
| 54 | .unwrap(); |
| 55 | |
| 56 | // Assert that `original.png` and `roundtrip.png` are the same |
| 57 | let original_img = image::open(Path::new(OUTPUT_DIR).join("original.png")).unwrap(); |
| 58 | let roundtrip_img = image::open(Path::new(OUTPUT_DIR).join("roundtrip.png")).unwrap(); |
| 59 | assert_eq!(original_img.to_rgba8(), roundtrip_img.to_rgba8()); |
| 60 | } |
| 61 | |
| 62 | fn create_demo_scene() -> Scene { |
| 63 | let mut scene = Scene::new(); |
nothing calls this directly
no test coverage detected