1#![doc = include_str!("../README.md")]
2#![allow(non_upper_case_globals)]
3#![allow(non_camel_case_types)]
4#![allow(non_snake_case)]
5
6pub mod nvtiff;
7pub use nvtiff::*;
8
9#[cfg(test)]
10mod tests {
11 use crate::{
12 nvtiffCompression, nvtiffFileInfo, nvtiffImageInfo, nvtiffPhotometricInt,
13 nvtiffPlanarConfig, nvtiffSampleFormat, nvtiffStatus_t, nvtiffStream, nvtiffStreamCreate,
14 nvtiffStreamGetFileInfo, nvtiffStreamGetImageInfo, nvtiffStreamParseFromFile,
15 };
16
17 #[test]
18 fn test_nvtiff_get_metadata_info() {
19 let mut stream = std::mem::MaybeUninit::uninit();
25 let tiff_stream: *mut *mut nvtiffStream = stream.as_mut_ptr();
26 unsafe {
27 let status_create: nvtiffStatus_t::Type = nvtiffStreamCreate(tiff_stream);
28 dbg!(status_create); assert_eq!(status_create, nvtiffStatus_t::NVTIFF_STATUS_SUCCESS);
30 }
31
32 let tiff_cstr = std::ffi::CString::new("images/bali_notiles.tif").unwrap();
34 let tiff_path: *const std::os::raw::c_char = tiff_cstr.as_ptr();
35 unsafe {
36 let status_parse: u32 = nvtiffStreamParseFromFile(tiff_path, *tiff_stream);
37 dbg!(status_parse); assert_eq!(status_parse, nvtiffStatus_t::NVTIFF_STATUS_SUCCESS);
39 }
40
41 let mut file_info = nvtiffFileInfo::default();
43 unsafe {
44 let status_fileinfo: u32 = nvtiffStreamGetFileInfo(*tiff_stream, &mut file_info);
45 assert_eq!(status_fileinfo, nvtiffStatus_t::NVTIFF_STATUS_SUCCESS);
46 dbg!(file_info);
47 assert_eq!(
48 file_info,
49 nvtiffFileInfo {
50 num_images: 1,
51 image_width: 725,
52 image_height: 489,
53 photometric_int: nvtiffPhotometricInt::NVTIFF_PHOTOMETRIC_RGB, planar_config: nvtiffPlanarConfig::NVTIFF_PLANARCONFIG_CONTIG, samples_per_pixel: 3,
56 bits_per_pixel: 24,
57 bits_per_sample: [8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
58 sample_format: [
59 nvtiffSampleFormat::NVTIFF_SAMPLEFORMAT_UINT, nvtiffSampleFormat::NVTIFF_SAMPLEFORMAT_UINT, nvtiffSampleFormat::NVTIFF_SAMPLEFORMAT_UINT, 0,
63 0,
64 0,
65 0,
66 0,
67 0,
68 0,
69 0,
70 0,
71 0,
72 0,
73 0,
74 0
75 ],
76 }
77 );
78 }
79
80 let mut image_info = nvtiffImageInfo::default();
82 unsafe {
83 let status_imageinfo: u32 = nvtiffStreamGetImageInfo(*tiff_stream, 0, &mut image_info);
84 assert_eq!(status_imageinfo, nvtiffStatus_t::NVTIFF_STATUS_SUCCESS);
85 dbg!(image_info);
86 assert_eq!(image_info.image_type, 0);
87 assert_eq!(
88 image_info.compression,
89 nvtiffCompression::NVTIFF_COMPRESSION_LZW
90 );
91 }
92 }
93}