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 mod result;
8pub use nvtiff::*;
9pub use result::{NvTiffResult, NvTiffResultCheck};
10
11#[cfg(test)]
12mod tests {
13 use crate::{
14 nvtiffCompression, nvtiffFileInfo, nvtiffImageInfo, nvtiffPhotometricInt,
15 nvtiffPlanarConfig, nvtiffSampleFormat, nvtiffStatus_t, nvtiffStream, nvtiffStreamCreate,
16 nvtiffStreamGetFileInfo, nvtiffStreamGetImageInfo, nvtiffStreamParseFromFile,
17 };
18
19 #[test]
20 fn test_nvtiff_get_metadata_info() {
21 let mut stream = std::mem::MaybeUninit::uninit();
27 let tiff_stream: *mut *mut nvtiffStream = stream.as_mut_ptr();
28 unsafe {
29 let status_create: nvtiffStatus_t::Type = nvtiffStreamCreate(tiff_stream);
30 dbg!(status_create); assert_eq!(status_create, nvtiffStatus_t::NVTIFF_STATUS_SUCCESS);
32 }
33
34 let tiff_cstr = std::ffi::CString::new("images/bali_notiles.tif").unwrap();
36 let tiff_path: *const std::os::raw::c_char = tiff_cstr.as_ptr();
37 unsafe {
38 let status_parse: u32 = nvtiffStreamParseFromFile(tiff_path, *tiff_stream);
39 dbg!(status_parse); assert_eq!(status_parse, nvtiffStatus_t::NVTIFF_STATUS_SUCCESS);
41 }
42
43 let mut file_info = nvtiffFileInfo::default();
45 unsafe {
46 let status_fileinfo: u32 = nvtiffStreamGetFileInfo(*tiff_stream, &raw mut file_info);
47 assert_eq!(status_fileinfo, nvtiffStatus_t::NVTIFF_STATUS_SUCCESS);
48 dbg!(file_info);
49 assert_eq!(
50 file_info,
51 nvtiffFileInfo {
52 num_images: 1,
53 image_width: 725,
54 image_height: 489,
55 photometric_int: nvtiffPhotometricInt::NVTIFF_PHOTOMETRIC_RGB, planar_config: nvtiffPlanarConfig::NVTIFF_PLANARCONFIG_CONTIG, samples_per_pixel: 3,
58 bits_per_pixel: 24,
59 bits_per_sample: [8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
60 sample_format: [
61 nvtiffSampleFormat::NVTIFF_SAMPLEFORMAT_UINT, nvtiffSampleFormat::NVTIFF_SAMPLEFORMAT_UINT, nvtiffSampleFormat::NVTIFF_SAMPLEFORMAT_UINT, 0,
65 0,
66 0,
67 0,
68 0,
69 0,
70 0,
71 0,
72 0,
73 0,
74 0,
75 0,
76 0
77 ],
78 }
79 );
80 }
81
82 let mut image_info = nvtiffImageInfo::default();
84 unsafe {
85 let status_imageinfo: u32 =
86 nvtiffStreamGetImageInfo(*tiff_stream, 0, &raw mut image_info);
87 assert_eq!(status_imageinfo, nvtiffStatus_t::NVTIFF_STATUS_SUCCESS);
88 dbg!(image_info);
89 assert_eq!(image_info.image_type, 0);
90 assert_eq!(
91 image_info.compression,
92 nvtiffCompression::NVTIFF_COMPRESSION_LZW
93 );
94 }
95 }
96}