1#![forbid(unsafe_code)]
2pub use use_aspect_ratio;
23pub use use_aspect_ratio::*;
24pub use use_bitrate;
25pub use use_bitrate::*;
26pub use use_dimensions;
27pub use use_dimensions::*;
28pub use use_frame_rate;
29pub use use_frame_rate::*;
30pub use use_image;
31pub use use_image::aspect_ratio as image_aspect_ratio;
32pub use use_image::fit_within as fit_image_within;
33pub use use_image::is_image_mime as is_known_image_mime;
34pub use use_image::{
35 ImageAspectRatio, ImageFormat, ImageKind, ImageMetadata, ImageOrientation, ImageSize,
36 aspect_ratio_f64, cover_size, detect_image_format_from_bytes,
37 detect_image_format_from_extension, detect_image_format_from_mime, extension_from_filename,
38 image_extension, image_kind, image_mime_type, is_image_extension, is_raster_image,
39 is_vector_image, is_web_image_format, normalize_extension, orientation, scale_to_height,
40 scale_to_width, supports_animation, supports_transparency,
41};
42pub use use_media_duration;
43pub use use_media_duration::*;
44pub use use_media_timestamp;
45pub use use_media_timestamp::*;
46pub use use_media_type;
47pub use use_media_type::*;
48pub use use_resolution;
49pub use use_resolution::*;
50pub use use_svg;
51pub use use_svg::*;
52
53#[cfg(test)]
54mod tests {
55 use super::{
56 AspectRatio, Dimensions, FrameRate, ImageFormat, ImageSize, MediaKind, ResolutionClass,
57 SvgPath, build_svg_icon, classify_resolution, detect_image_format_from_extension,
58 extract_path_data, fit_image_within, parse_media_type, parse_view_box,
59 };
60
61 #[test]
62 fn facade_reexports_workspace_apis() {
63 let dimensions = Dimensions::new(1920, 1080).unwrap();
64 let aspect = AspectRatio::new(1920, 1080).unwrap();
65 let rate = FrameRate::new(24.0).unwrap();
66 let mime = parse_media_type("video/mp4").unwrap();
67 let icon = build_svg_icon(
68 parse_view_box("0 0 24 24").unwrap(),
69 &[SvgPath::new("M0 0h24v24H0z")],
70 );
71
72 assert_eq!(
73 classify_resolution(1920, 1080).unwrap(),
74 ResolutionClass::FullHd
75 );
76 assert_eq!(aspect.label(), "16:9");
77 assert_eq!(mime.kind(), MediaKind::Video);
78 assert_eq!(dimensions.area(), 2_073_600);
79 assert_eq!(detect_image_format_from_extension(".png"), ImageFormat::Png);
80 assert_eq!(
81 fit_image_within(ImageSize::new(800, 600), ImageSize::new(300, 300)),
82 ImageSize::new(300, 225)
83 );
84 assert!((rate.frame_duration_seconds() - (1.0 / 24.0)).abs() < 1.0e-12);
85 assert_eq!(extract_path_data(&icon), vec!["M0 0h24v24H0z".to_string()]);
86 }
87}