summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHubert Figuière <hub@figuiere.net>2023-08-19 13:47:57 -0400
committerHubert Figuière <hub@figuiere.net>2023-08-19 23:02:59 -0400
commited85a557e6ddb68270e5059b470b1c8d748bcf71 (patch)
tree964923e35c475f32eddcee034bffdca6943f85e5
parente7d9462efb93cc7dada674d7fe5f1fb33859f827 (diff)
doc+api: cleanup visibility for API
-rw-r--r--benches/the_benchmark.rs2
-rw-r--r--src/bin/fuzz-ljpeg.rs2
-rw-r--r--src/bin/test-ljpeg.rs2
-rw-r--r--src/bitmap.rs10
-rw-r--r--src/decompress/ljpeg.rs9
-rw-r--r--src/dump.rs2
-rw-r--r--src/olympus/decompress.rs3
-rw-r--r--src/rawimage.rs2
-rw-r--r--src/render/grayscale.rs2
-rw-r--r--src/thumbnail.rs9
-rw-r--r--src/tiff.rs2
-rw-r--r--src/tiff/entry.rs8
-rw-r--r--src/tiff/exif.rs11
-rw-r--r--src/tiff/exif/tags.rs218
14 files changed, 149 insertions, 133 deletions
diff --git a/benches/the_benchmark.rs b/benches/the_benchmark.rs
index f25edca..bf7c86d 100644
--- a/benches/the_benchmark.rs
+++ b/benches/the_benchmark.rs
@@ -83,7 +83,7 @@ fn ljpeg_benchmark(c: &mut Criterion) {
let mut decompressor = LJpeg::new();
let io = std::fs::File::open("test/ljpegtest1.jpg").expect("Couldn't open");
let mut buffered = std::io::BufReader::new(io);
- let _ = decompressor.decompress(&mut buffered);
+ let _ = decompressor.discard_decompress(&mut buffered);
});
});
}
diff --git a/src/bin/fuzz-ljpeg.rs b/src/bin/fuzz-ljpeg.rs
index b7df2df..6b19318 100644
--- a/src/bin/fuzz-ljpeg.rs
+++ b/src/bin/fuzz-ljpeg.rs
@@ -9,6 +9,6 @@ fn main() {
fuzz!(|data: &[u8]| {
let mut io = std::io::Cursor::new(data);
let mut decompressor = LJpeg::new();
- let _ = decompressor.decompress(&mut io);
+ let _ = decompressor.discard_decompress(&mut io);
});
}
diff --git a/src/bin/test-ljpeg.rs b/src/bin/test-ljpeg.rs
index a22077d..4d68433 100644
--- a/src/bin/test-ljpeg.rs
+++ b/src/bin/test-ljpeg.rs
@@ -13,7 +13,7 @@ fn main() {
let io = std::fs::File::open(&args[1]);
assert!(io.is_ok());
let mut io = std::io::BufReader::new(io.unwrap());
- let _ = decompressor.decompress(&mut io).map_err(|e| {
+ let _ = decompressor.discard_decompress(&mut io).map_err(|e| {
println!("Error decoding: {}", e);
e
});
diff --git a/src/bitmap.rs b/src/bitmap.rs
index afd6bf5..ea74dae 100644
--- a/src/bitmap.rs
+++ b/src/bitmap.rs
@@ -26,7 +26,7 @@ use crate::DataType;
/// An image buffer carries the data and the dimension. It is used to
/// carry pipeline input and ouput as dimensions can change.
-pub struct ImageBuffer<T> {
+pub(crate) struct ImageBuffer<T> {
pub(crate) data: Vec<T>,
pub(crate) width: u32,
pub(crate) height: u32,
@@ -49,7 +49,7 @@ impl<T> ImageBuffer<T> {
}
/// Return the pixel RGB value at `x` and `y`.
- pub fn pixel_at(&self, x: u32, y: u32) -> Option<Vec<T>>
+ pub(crate) fn pixel_at(&self, x: u32, y: u32) -> Option<Vec<T>>
where
T: Copy,
{
@@ -64,7 +64,7 @@ impl<T> ImageBuffer<T> {
}
impl ImageBuffer<f64> {
- pub fn into_u16(self) -> ImageBuffer<u16> {
+ pub(crate) fn into_u16(self) -> ImageBuffer<u16> {
ImageBuffer::<u16>::with_data(
self.data
.iter()
@@ -79,7 +79,7 @@ impl ImageBuffer<f64> {
}
impl ImageBuffer<u16> {
- pub fn into_f64(self) -> ImageBuffer<f64> {
+ pub(crate) fn into_f64(self) -> ImageBuffer<f64> {
ImageBuffer::<f64>::with_data(
self.data
.iter()
@@ -108,6 +108,8 @@ pub trait Bitmap {
fn data8(&self) -> Option<&[u8]>;
}
+/// An `Image` is a more comprehensive `Bitmap` with 16-bits
+/// support.
pub trait Image: Bitmap {
/// Image data in 16 bits
fn data16(&self) -> Option<&[u16]>;
diff --git a/src/decompress/ljpeg.rs b/src/decompress/ljpeg.rs
index c899496..12515eb 100644
--- a/src/decompress/ljpeg.rs
+++ b/src/decompress/ljpeg.rs
@@ -237,8 +237,13 @@ impl LJpeg {
})
}
- /// Decompress the LJPEG stream into a RawImage.
- pub fn decompress(&mut self, reader: &mut dyn ReadAndSeek) -> Result<ImageBuffer<u16>> {
+ #[cfg(any(feature = "fuzzing", feature = "bench"))]
+ /// Used to fuzz or bench the decompressor that is otherwise crate only.
+ pub fn discard_decompress(&mut self, reader: &mut dyn ReadAndSeek) -> Result<()> {
+ self.decompress(reader).map(|_| ())
+ }
+
+ pub(crate) fn decompress(&mut self, reader: &mut dyn ReadAndSeek) -> Result<ImageBuffer<u16>> {
let tile = self.decompress_buffer(reader, false)?;
Ok(ImageBuffer::with_data(
tile.buf,
diff --git a/src/dump.rs b/src/dump.rs
index f495f54..8c4d876 100644
--- a/src/dump.rs
+++ b/src/dump.rs
@@ -23,7 +23,7 @@ macro_rules! dumpfile_impl {
}
/// Trait to dump a container.
-/// XXX invert the default methods
+// XXX invert the default methods
pub trait Dump {
#[cfg(feature = "dump")]
/// Print dump the container as `indent`
diff --git a/src/olympus/decompress.rs b/src/olympus/decompress.rs
index 199ba44..37f519d 100644
--- a/src/olympus/decompress.rs
+++ b/src/olympus/decompress.rs
@@ -27,7 +27,8 @@ use bitreader::BitReader;
use crate::{Error, Result};
-/// Decompress the Olympus raw data.
+#[doc(hidden)]
+/// Decompress the Olympus raw data. Not a public API.
pub fn decompress_olympus(input: &[u8], w: usize, h: usize) -> Result<Vec<u16>> {
if input.len() < 8 {
return Err(Error::Decompression(
diff --git a/src/rawimage.rs b/src/rawimage.rs
index d82a76b..cf032e6 100644
--- a/src/rawimage.rs
+++ b/src/rawimage.rs
@@ -397,7 +397,7 @@ impl RawImage {
cam_xyz * xyz_rgb
}
- pub fn colour_correct(
+ pub(crate) fn colour_correct(
&self,
mut buffer: ImageBuffer<f64>,
target: ColourSpace,
diff --git a/src/render/grayscale.rs b/src/render/grayscale.rs
index f0d5e78..d60d25b 100644
--- a/src/render/grayscale.rs
+++ b/src/render/grayscale.rs
@@ -25,7 +25,7 @@ use crate::{Error, Result};
/// Convert a grayscale buffer to RGB
///
/// It's done naively.
-pub fn to_rgb(buffer: &ImageBuffer<f64>) -> Result<ImageBuffer<f64>> {
+pub(crate) fn to_rgb(buffer: &ImageBuffer<f64>) -> Result<ImageBuffer<f64>> {
if buffer.cc != 1 {
return Err(Error::InvalidFormat);
}
diff --git a/src/thumbnail.rs b/src/thumbnail.rs
index 6b50808..dc239c9 100644
--- a/src/thumbnail.rs
+++ b/src/thumbnail.rs
@@ -99,12 +99,17 @@ impl Default for Thumbnail {
}
impl Thumbnail {
- pub fn new() -> Thumbnail {
+ pub(crate) fn new() -> Thumbnail {
Thumbnail::default()
}
/// New thumbnail with data.
- pub fn with_data(width: u32, height: u32, data_type: DataType, data: Vec<u8>) -> Thumbnail {
+ pub(crate) fn with_data(
+ width: u32,
+ height: u32,
+ data_type: DataType,
+ data: Vec<u8>,
+ ) -> Thumbnail {
Thumbnail {
width,
height,
diff --git a/src/tiff.rs b/src/tiff.rs
index 7faab8e..9fafe41 100644
--- a/src/tiff.rs
+++ b/src/tiff.rs
@@ -155,7 +155,7 @@ pub trait Ifd {
}
}
-pub type MakeToIdMap = std::collections::HashMap<&'static str, TypeId>;
+pub(crate) type MakeToIdMap = std::collections::HashMap<&'static str, TypeId>;
/// Identify a files using the Exif data
pub(crate) fn identify_with_exif(container: &Container, map: &MakeToIdMap) -> Option<TypeId> {
diff --git a/src/tiff/entry.rs b/src/tiff/entry.rs
index b9c6979..b5b2319 100644
--- a/src/tiff/entry.rs
+++ b/src/tiff/entry.rs
@@ -166,7 +166,7 @@ impl Entry {
}
/// Get the value at index.
- pub fn value_at_index<T, E>(&self, index: u32) -> Option<T>
+ pub(crate) fn value_at_index<T, E>(&self, index: u32) -> Option<T>
where
T: ExifValue,
E: ByteOrder,
@@ -256,7 +256,7 @@ impl Entry {
}
/// Get the value out of the entry, ignoring the type.
- pub fn value_untyped<T, E>(&self) -> Option<T>
+ pub(crate) fn value_untyped<T, E>(&self) -> Option<T>
where
T: ExifValue,
E: ByteOrder,
@@ -296,7 +296,7 @@ impl Entry {
}
/// Get the value out of the entry.
- pub fn value<T, E>(&self) -> Option<T>
+ pub(crate) fn value<T, E>(&self) -> Option<T>
where
T: ExifValue,
E: ByteOrder,
@@ -445,7 +445,7 @@ impl Entry {
}
/// Get the value array out of the entry, using `endian`.
- pub fn value_array<T>(&self, endian: Endian) -> Option<Vec<T>>
+ pub(crate) fn value_array<T>(&self, endian: Endian) -> Option<Vec<T>>
where
T: ExifValue,
{
diff --git a/src/tiff/exif.rs b/src/tiff/exif.rs
index 5039f99..cad3cb2 100644
--- a/src/tiff/exif.rs
+++ b/src/tiff/exif.rs
@@ -23,9 +23,9 @@
/// Exif tags constants
pub(crate) mod generated;
-pub use generated::EXIF_TAG_NAMES as TAG_NAMES;
+pub(crate) use generated::EXIF_TAG_NAMES as TAG_NAMES;
mod tags;
-pub use tags::*;
+pub(crate) use tags::*;
use std::collections::HashMap;
@@ -34,7 +34,7 @@ use num_enum::TryFromPrimitive;
use crate::utils;
-pub type TagMap = HashMap<u16, &'static str>;
+pub(crate) type TagMap = HashMap<u16, &'static str>;
/// Type a tag. See `tiff::Entry`.
#[derive(Debug, PartialEq)]
@@ -87,7 +87,7 @@ impl std::convert::From<TagType> for &'static str {
}
/// Return the size of a unit for the tag type
-pub fn tag_unit_size(tag_type: TagType) -> usize {
+pub(crate) fn tag_unit_size(tag_type: TagType) -> usize {
use TagType::*;
match tag_type {
@@ -365,9 +365,9 @@ impl ToString for SRational {
}
}
-/// Exif photometric interpretation
#[repr(u16)]
#[derive(Copy, Clone, Debug, Default)]
+/// Exif photometric interpretation
pub enum PhotometricInterpretation {
#[default]
None = 0,
@@ -398,6 +398,7 @@ impl std::convert::TryFrom<u32> for PhotometricInterpretation {
#[repr(u32)]
#[derive(Clone, Copy, Debug, PartialEq, TryFromPrimitive)]
+/// Exif light source (Illuminant)
pub enum LightsourceValue {
Unknown = 0,
Daylight = 1,
diff --git a/src/tiff/exif/tags.rs b/src/tiff/exif/tags.rs
index 40e4134..b924cbd 100644
--- a/src/tiff/exif/tags.rs
+++ b/src/tiff/exif/tags.rs
@@ -19,145 +19,147 @@
* <http://www.gnu.org/licenses/>.
*/
-pub const EXIF_TAG_INTEROPERABILITY_INDEX: u16 = 0x0001;
-pub const EXIF_TAG_INTEROPERABILITY_VERSION: u16 = 0x0002;
+// Make values public as soon as they get used.
+
+pub const _EXIF_TAG_INTEROPERABILITY_INDEX: u16 = 0x0001;
+pub const _EXIF_TAG_INTEROPERABILITY_VERSION: u16 = 0x0002;
pub const EXIF_TAG_NEW_SUBFILE_TYPE: u16 = 0x00fe;
pub const EXIF_TAG_IMAGE_WIDTH: u16 = 0x0100;
pub const EXIF_TAG_IMAGE_LENGTH: u16 = 0x0101;
pub const EXIF_TAG_BITS_PER_SAMPLE: u16 = 0x0102;
pub const EXIF_TAG_COMPRESSION: u16 = 0x0103;
pub const EXIF_TAG_PHOTOMETRIC_INTERPRETATION: u16 = 0x0106;
-pub const EXIF_TAG_FILL_ORDER: u16 = 0x010a;
+pub const _EXIF_TAG_FILL_ORDER: u16 = 0x010a;
pub const EXIF_TAG_DOCUMENT_NAME: u16 = 0x010d;
pub const EXIF_TAG_IMAGE_DESCRIPTION: u16 = 0x010e;
pub const EXIF_TAG_MAKE: u16 = 0x010f;
pub const EXIF_TAG_MODEL: u16 = 0x0110;
pub const EXIF_TAG_STRIP_OFFSETS: u16 = 0x0111;
pub const EXIF_TAG_ORIENTATION: u16 = 0x0112;
-pub const EXIF_TAG_SAMPLES_PER_PIXEL: u16 = 0x0115;
-pub const EXIF_TAG_ROWS_PER_STRIP: u16 = 0x0116;
+pub const _EXIF_TAG_SAMPLES_PER_PIXEL: u16 = 0x0115;
+pub const _EXIF_TAG_ROWS_PER_STRIP: u16 = 0x0116;
pub const EXIF_TAG_STRIP_BYTE_COUNTS: u16 = 0x0117;
-pub const EXIF_TAG_X_RESOLUTION: u16 = 0x011a;
-pub const EXIF_TAG_Y_RESOLUTION: u16 = 0x011b;
-pub const EXIF_TAG_PLANAR_CONFIGURATION: u16 = 0x011c;
-pub const EXIF_TAG_RESOLUTION_UNIT: u16 = 0x0128;
-pub const EXIF_TAG_TRANSFER_FUNCTION: u16 = 0x012d;
-pub const EXIF_TAG_SOFTWARE: u16 = 0x0131;
-pub const EXIF_TAG_DATE_TIME: u16 = 0x0132;
-pub const EXIF_TAG_ARTIST: u16 = 0x013b;
-pub const EXIF_TAG_WHITE_POINT: u16 = 0x013e;
-pub const EXIF_TAG_PRIMARY_CHROMATICITIES: u16 = 0x013f;
+pub const _EXIF_TAG_X_RESOLUTION: u16 = 0x011a;
+pub const _EXIF_TAG_Y_RESOLUTION: u16 = 0x011b;
+pub const _EXIF_TAG_PLANAR_CONFIGURATION: u16 = 0x011c;
+pub const _EXIF_TAG_RESOLUTION_UNIT: u16 = 0x0128;
+pub const _EXIF_TAG_TRANSFER_FUNCTION: u16 = 0x012d;
+pub const _EXIF_TAG_SOFTWARE: u16 = 0x0131;
+pub const _EXIF_TAG_DATE_TIME: u16 = 0x0132;
+pub const _EXIF_TAG_ARTIST: u16 = 0x013b;
+pub const _EXIF_TAG_WHITE_POINT: u16 = 0x013e;
+pub const _EXIF_TAG_PRIMARY_CHROMATICITIES: u16 = 0x013f;
pub const TIFF_TAG_TILE_WIDTH: u16 = 0x0142;
pub const TIFF_TAG_TILE_LENGTH: u16 = 0x0143;
pub const TIFF_TAG_TILE_OFFSETS: u16 = 0x0144;
pub const TIFF_TAG_TILE_BYTECOUNTS: u16 = 0x0145;
-pub const EXIF_TAG_TRANSFER_RANGE: u16 = 0x0156;
+pub const _EXIF_TAG_TRANSFER_RANGE: u16 = 0x0156;
pub const EXIF_TAG_SUB_IFDS: u16 = 0x014a;
-pub const EXIF_TAG_JPEG_PROC: u16 = 0x0200;
+pub const _EXIF_TAG_JPEG_PROC: u16 = 0x0200;
pub const EXIF_TAG_JPEG_INTERCHANGE_FORMAT: u16 = 0x0201;
pub const EXIF_TAG_JPEG_INTERCHANGE_FORMAT_LENGTH: u16 = 0x0202;
-pub const EXIF_TAG_YCBCR_COEFFICIENTS: u16 = 0x0211;
-pub const EXIF_TAG_YCBCR_SUB_SAMPLING: u16 = 0x0212;
-pub const EXIF_TAG_YCBCR_POSITIONING: u16 = 0x0213;
-pub const EXIF_TAG_REFERENCE_BLACK_WHITE: u16 = 0x0214;
-pub const EXIF_TAG_XML_PACKET: u16 = 0x02bc;
-pub const EXIF_TAG_RELATED_IMAGE_FILE_FORMAT: u16 = 0x1000;
-pub const EXIF_TAG_RELATED_IMAGE_WIDTH: u16 = 0x1001;
-pub const EXIF_TAG_RELATED_IMAGE_LENGTH: u16 = 0x1002;
-pub const EXIF_TAG_CFA_REPEAT_PATTERN_DIM: u16 = 0x828d;
+pub const _EXIF_TAG_YCBCR_COEFFICIENTS: u16 = 0x0211;
+pub const _EXIF_TAG_YCBCR_SUB_SAMPLING: u16 = 0x0212;
+pub const _EXIF_TAG_YCBCR_POSITIONING: u16 = 0x0213;
+pub const _EXIF_TAG_REFERENCE_BLACK_WHITE: u16 = 0x0214;
+pub const _EXIF_TAG_XML_PACKET: u16 = 0x02bc;
+pub const _EXIF_TAG_RELATED_IMAGE_FILE_FORMAT: u16 = 0x1000;
+pub const _EXIF_TAG_RELATED_IMAGE_WIDTH: u16 = 0x1001;
+pub const _EXIF_TAG_RELATED_IMAGE_LENGTH: u16 = 0x1002;
+pub const _EXIF_TAG_CFA_REPEAT_PATTERN_DIM: u16 = 0x828d;
pub const EXIF_TAG_CFA_PATTERN: u16 = 0x828e;
-pub const EXIF_TAG_BATTERY_LEVEL: u16 = 0x828f;
-pub const EXIF_TAG_COPYRIGHT: u16 = 0x8298;
-pub const EXIF_TAG_EXPOSURE_TIME: u16 = 0x829a;
-pub const EXIF_TAG_FNUMBER: u16 = 0x829d;
-pub const EXIF_TAG_IPTC_NAA: u16 = 0x83bb;
-pub const EXIF_TAG_IMAGE_RESOURCES: u16 = 0x8649;
+pub const _EXIF_TAG_BATTERY_LEVEL: u16 = 0x828f;
+pub const _EXIF_TAG_COPYRIGHT: u16 = 0x8298;
+pub const _EXIF_TAG_EXPOSURE_TIME: u16 = 0x829a;
+pub const _EXIF_TAG_FNUMBER: u16 = 0x829d;
+pub const _EXIF_TAG_IPTC_NAA: u16 = 0x83bb;
+pub const _EXIF_TAG_IMAGE_RESOURCES: u16 = 0x8649;
pub const EXIF_TAG_EXIF_IFD_POINTER: u16 = 0x8769;
-pub const EXIF_TAG_INTER_COLOR_PROFILE: u16 = 0x8773;
-pub const EXIF_TAG_EXPOSURE_PROGRAM: u16 = 0x8822;
-pub const EXIF_TAG_SPECTRAL_SENSITIVITY: u16 = 0x8824;
-pub const EXIF_TAG_GPS_INFO_IFD_POINTER: u16 = 0x8825;
-pub const EXIF_TAG_ISO_SPEED_RATINGS: u16 = 0x8827;
-pub const EXIF_TAG_OECF: u16 = 0x8828;
-pub const EXIF_TAG_EXIF_VERSION: u16 = 0x9000;
+pub const _EXIF_TAG_INTER_COLOR_PROFILE: u16 = 0x8773;
+pub const _EXIF_TAG_EXPOSURE_PROGRAM: u16 = 0x8822;
+pub const _EXIF_TAG_SPECTRAL_SENSITIVITY: u16 = 0x8824;
+pub const _EXIF_TAG_GPS_INFO_IFD_POINTER: u16 = 0x8825;
+pub const _EXIF_TAG_ISO_SPEED_RATINGS: u16 = 0x8827;
+pub const _EXIF_TAG_OECF: u16 = 0x8828;
+pub const _EXIF_TAG_EXIF_VERSION: u16 = 0x9000;
pub const EXIF_TAG_DATE_TIME_ORIGINAL: u16 = 0x9003;
pub const EXIF_TAG_DATE_TIME_DIGITIZED: u16 = 0x9004;
-pub const EXIF_TAG_COMPONENTS_CONFIGURATION: u16 = 0x9101;
-pub const EXIF_TAG_COMPRESSED_BITS_PER_PIXEL: u16 = 0x9102;
-pub const EXIF_TAG_SHUTTER_SPEED_VALUE: u16 = 0x9201;
-pub const EXIF_TAG_APERTURE_VALUE: u16 = 0x9202;
-pub const EXIF_TAG_BRIGHTNESS_VALUE: u16 = 0x9203;
-pub const EXIF_TAG_EXPOSURE_BIAS_VALUE: u16 = 0x9204;
-pub const EXIF_TAG_MAX_APERTURE_VALUE: u16 = 0x9205;
+pub const _EXIF_TAG_COMPONENTS_CONFIGURATION: u16 = 0x9101;
+pub const _EXIF_TAG_COMPRESSED_BITS_PER_PIXEL: u16 = 0x9102;
+pub const _EXIF_TAG_SHUTTER_SPEED_VALUE: u16 = 0x9201;
+pub const _EXIF_TAG_APERTURE_VALUE: u16 = 0x9202;
+pub const _EXIF_TAG_BRIGHTNESS_VALUE: u16 = 0x9203;
+pub const _EXIF_TAG_EXPOSURE_BIAS_VALUE: u16 = 0x9204;
+pub const _EXIF_TAG_MAX_APERTURE_VALUE: u16 = 0x9205;
pub const EXIF_TAG_SUBJECT_DISTANCE: u16 = 0x9206;
pub const EXIF_TAG_METERING_MODE: u16 = 0x9207;
-pub const EXIF_TAG_LIGHT_SOURCE: u16 = 0x9208;
+pub const _EXIF_TAG_LIGHT_SOURCE: u16 = 0x9208;
pub const EXIF_TAG_FLASH: u16 = 0x9209;
pub const EXIF_TAG_FOCAL_LENGTH: u16 = 0x920a;
-pub const EXIF_TAG_SUBJECT_AREA: u16 = 0x9214;
-pub const EXIF_TAG_TIFF_EP_STANDARD_ID: u16 = 0x9216;
+pub const _EXIF_TAG_SUBJECT_AREA: u16 = 0x9214;
+pub const _EXIF_TAG_TIFF_EP_STANDARD_ID: u16 = 0x9216;
pub const EXIF_TAG_MAKER_NOTE: u16 = 0x927c;
-pub const EXIF_TAG_USER_COMMENT: u16 = 0x9286;
-pub const EXIF_TAG_SUB_SEC_TIME: u16 = 0x9290;
-pub const EXIF_TAG_SUB_SEC_TIME_ORIGINAL: u16 = 0x9291;
-pub const EXIF_TAG_SUB_SEC_TIME_DIGITIZED: u16 = 0x9292;
-pub const EXIF_TAG_FLASH_PIX_VERSION: u16 = 0xa000;
-pub const EXIF_TAG_COLOR_SPACE: u16 = 0xa001;
+pub const _EXIF_TAG_USER_COMMENT: u16 = 0x9286;
+pub const _EXIF_TAG_SUB_SEC_TIME: u16 = 0x9290;
+pub const _EXIF_TAG_SUB_SEC_TIME_ORIGINAL: u16 = 0x9291;
+pub const _EXIF_TAG_SUB_SEC_TIME_DIGITIZED: u16 = 0x9292;
+pub const _EXIF_TAG_FLASH_PIX_VERSION: u16 = 0xa000;
+pub const _EXIF_TAG_COLOR_SPACE: u16 = 0xa001;
pub const EXIF_TAG_PIXEL_X_DIMENSION: u16 = 0xa002;
pub const EXIF_TAG_PIXEL_Y_DIMENSION: u16 = 0xa003;
-pub const EXIF_TAG_RELATED_SOUND_FILE: u16 = 0xa004;
-pub const EXIF_TAG_INTEROPERABILITY_IFD_POINTER: u16 = 0xa005;
-pub const EXIF_TAG_FLASH_ENERGY: u16 = 0xa20b;
-pub const EXIF_TAG_SPATIAL_FREQUENCY_RESPONSE: u16 = 0xa20c;
-pub const EXIF_TAG_FOCAL_PLANE_X_RESOLUTION: u16 = 0xa20e;
-pub const EXIF_TAG_FOCAL_PLANE_Y_RESOLUTION: u16 = 0xa20f;
-pub const EXIF_TAG_FOCAL_PLANE_RESOLUTION_UNIT: u16 = 0xa210;
-pub const EXIF_TAG_SUBJECT_LOCATION: u16 = 0xa214;
-pub const EXIF_TAG_EXPOSURE_INDEX: u16 = 0xa215;
-pub const EXIF_TAG_SENSING_METHOD: u16 = 0xa217;
-pub const EXIF_TAG_FILE_SOURCE: u16 = 0xa300;
-pub const EXIF_TAG_SCENE_TYPE: u16 = 0xa301;
+pub const _EXIF_TAG_RELATED_SOUND_FILE: u16 = 0xa004;
+pub const _EXIF_TAG_INTEROPERABILITY_IFD_POINTER: u16 = 0xa005;
+pub const _EXIF_TAG_FLASH_ENERGY: u16 = 0xa20b;
+pub const _EXIF_TAG_SPATIAL_FREQUENCY_RESPONSE: u16 = 0xa20c;
+pub const _EXIF_TAG_FOCAL_PLANE_X_RESOLUTION: u16 = 0xa20e;
+pub const _EXIF_TAG_FOCAL_PLANE_Y_RESOLUTION: u16 = 0xa20f;
+pub const _EXIF_TAG_FOCAL_PLANE_RESOLUTION_UNIT: u16 = 0xa210;
+pub const _EXIF_TAG_SUBJECT_LOCATION: u16 = 0xa214;
+pub const _EXIF_TAG_EXPOSURE_INDEX: u16 = 0xa215;
+pub const _EXIF_TAG_SENSING_METHOD: u16 = 0xa217;
+pub const _EXIF_TAG_FILE_SOURCE: u16 = 0xa300;
+pub const _EXIF_TAG_SCENE_TYPE: u16 = 0xa301;
pub const EXIF_TAG_NEW_CFA_PATTERN: u16 = 0xa302;
-pub const EXIF_TAG_CUSTOM_RENDERED: u16 = 0xa401;
-pub const EXIF_TAG_EXPOSURE_MODE: u16 = 0xa402;
-pub const EXIF_TAG_WHITE_BALANCE: u16 = 0xa403;
-pub const EXIF_TAG_DIGITAL_ZOOM_RATIO: u16 = 0xa404;
-pub const EXIF_TAG_FOCAL_LENGTH_IN_35MM_FILM: u16 = 0xa405;
-pub const EXIF_TAG_SCENE_CAPTURE_TYPE: u16 = 0xa406;
-pub const EXIF_TAG_GAIN_CONTROL: u16 = 0xa407;
-pub const EXIF_TAG_CONTRAST: u16 = 0xa408;
-pub const EXIF_TAG_SATURATION: u16 = 0xa409;
-pub const EXIF_TAG_SHARPNESS: u16 = 0xa40a;
-pub const EXIF_TAG_DEVICE_SETTING_DESCRIPTION: u16 = 0xa40b;
-pub const EXIF_TAG_SUBJECT_DISTANCE_RANGE: u16 = 0xa40c;
-pub const EXIF_TAG_IMAGE_UNIQUE_ID: u16 = 0xa420;
+pub const _EXIF_TAG_CUSTOM_RENDERED: u16 = 0xa401;
+pub const _EXIF_TAG_EXPOSURE_MODE: u16 = 0xa402;
+pub const _EXIF_TAG_WHITE_BALANCE: u16 = 0xa403;
+pub const _EXIF_TAG_DIGITAL_ZOOM_RATIO: u16 = 0xa404;
+pub const _EXIF_TAG_FOCAL_LENGTH_IN_35MM_FILM: u16 = 0xa405;
+pub const _EXIF_TAG_SCENE_CAPTURE_TYPE: u16 = 0xa406;
+pub const _EXIF_TAG_GAIN_CONTROL: u16 = 0xa407;
+pub const _EXIF_TAG_CONTRAST: u16 = 0xa408;
+pub const _EXIF_TAG_SATURATION: u16 = 0xa409;
+pub const _EXIF_TAG_SHARPNESS: u16 = 0xa40a;
+pub const _EXIF_TAG_DEVICE_SETTING_DESCRIPTION: u16 = 0xa40b;
+pub const _EXIF_TAG_SUBJECT_DISTANCE_RANGE: u16 = 0xa40c;
+pub const _EXIF_TAG_IMAGE_UNIQUE_ID: u16 = 0xa420;
pub const EXIF_TAG_CAMERA_OWNER_NAME: u16 = 0xa430;
pub const EXIF_TAG_BODY_SERIAL_NUMBER: u16 = 0xa431;
-pub const EXIF_TAG_BODY_LENS_MAKE: u16 = 0xa433;
-pub const EXIF_TAG_BODY_LENS_MODEL: u16 = 0xa434;
-pub const EXIF_TAG_GAMMA: u16 = 0xa500;
-pub const EXIF_TAG_PRINT_IM: u16 = 0xc4a5;
+pub const _EXIF_TAG_BODY_LENS_MAKE: u16 = 0xa433;
+pub const _EXIF_TAG_BODY_LENS_MODEL: u16 = 0xa434;
+pub const _EXIF_TAG_GAMMA: u16 = 0xa500;
+pub const _EXIF_TAG_PRINT_IM: u16 = 0xc4a5;
/* DNG tags */
pub const TIFF_TAG_DNG_VERSION: u16 = 0xc612;
pub const DNG_TAG_UNIQUE_CAMERA_MODEL: u16 = 0xc614;
pub const DNG_TAG_LINEARIZATION_TABLE: u16 = 0xc618;
pub const DNG_TAG_BLACK_LEVEL: u16 = 0xc61a;
pub const DNG_TAG_WHITE_LEVEL: u16 = 0xc61d;
-pub const DNG_TAG_DEFAULT_CROP_ORIGIN: u16 = 0xc61f;
-pub const DNG_TAG_DEFAULT_CROP_SIZE: u16 = 0xc620;
+pub const _DNG_TAG_DEFAULT_CROP_ORIGIN: u16 = 0xc61f;
+pub const _DNG_TAG_DEFAULT_CROP_SIZE: u16 = 0xc620;
pub const DNG_TAG_COLORMATRIX1: u16 = 0xc621;
pub const DNG_TAG_COLORMATRIX2: u16 = 0xc622;
-pub const DNG_TAG_CAMERA_CALIBRATION1: u16 = 0xc623;
-pub const DNG_TAG_CAMERA_CALIBRATION2: u16 = 0xc624;
-pub const DNG_TAG_REDUCTION_MATRIX1: u16 = 0xc625;
-pub const DNG_TAG_REDUCTION_MATRIX2: u16 = 0xc626;
-pub const DNG_TAG_ANALOG_BALANCE: u16 = 0xc627;
+pub const _DNG_TAG_CAMERA_CALIBRATION1: u16 = 0xc623;
+pub const _DNG_TAG_CAMERA_CALIBRATION2: u16 = 0xc624;
+pub const _DNG_TAG_REDUCTION_MATRIX1: u16 = 0xc625;
+pub const _DNG_TAG_REDUCTION_MATRIX2: u16 = 0xc626;
+pub const _DNG_TAG_ANALOG_BALANCE: u16 = 0xc627;
pub const DNG_TAG_AS_SHOT_NEUTRAL: u16 = 0xc628;
-pub const DNG_TAG_AS_SHOT_WHITE_XY: u16 = 0xc629;
-pub const DNG_TAG_DNG_PRIVATE: u16 = 0xc634;
+pub const _DNG_TAG_AS_SHOT_WHITE_XY: u16 = 0xc629;
+pub const _DNG_TAG_DNG_PRIVATE: u16 = 0xc634;
pub const DNG_TAG_CALIBRATION_ILLUMINANT1: u16 = 0xc65a;
pub const DNG_TAG_CALIBRATION_ILLUMINANT2: u16 = 0xc65b;
-pub const DNG_TAG_ORIGINAL_RAW_FILE_NAME: u16 = 0xc68b;
+pub const _DNG_TAG_ORIGINAL_RAW_FILE_NAME: u16 = 0xc68b;
pub const DNG_TAG_ACTIVE_AREA: u16 = 0xc68d;
/* ARW tags */
@@ -191,9 +193,9 @@ pub const ORF_TAG_RAW_DEVELOPMENT2: u16 = 0x2031;
/// Image processing IFD
pub const ORF_TAG_IMAGE_PROCESSING: u16 = 0x2040;
pub const ORF_TAG_IP_WHITE_BALANCE_RB: u16 = 0x0100;
-pub const ORF_TAG_IP_WHITE_BALANCE_G: u16 = 0x011f;
-pub const ORF_TAG_IP_COLOR_MATRIX: u16 = 0x200;
-pub const ORF_TAG_IP_BLACK_LEVEL: u16 = 0x0600;
+pub const _ORF_TAG_IP_WHITE_BALANCE_G: u16 = 0x011f;
+pub const _ORF_TAG_IP_COLOR_MATRIX: u16 = 0x200;
+pub const _ORF_TAG_IP_BLACK_LEVEL: u16 = 0x0600;
pub const ORF_TAG_IP_CROP_LEFT: u16 = 0x0612;
pub const ORF_TAG_IP_CROP_TOP: u16 = 0x0613;
pub const ORF_TAG_IP_CROP_WIDTH: u16 = 0x0614;
@@ -205,12 +207,12 @@ pub const ORF_TAG_RAW_INFO: u16 = 0x3000;
/* CR2 tags */
/// This tag is present in the RAW IFD for Canon CR2.
-pub const CR2_TAG_C5D8: u16 = 0xc5d8;
-pub const CR2_TAG_C5D9: u16 = 0xc5d9;
+pub const _CR2_TAG_C5D8: u16 = 0xc5d8;
+pub const _CR2_TAG_C5D9: u16 = 0xc5d9;
/// Exif tag for CR2 RAW "slices"
pub const CR2_TAG_SLICE: u16 = 0xc640;
-pub const CR2_TAG_SRAW_TYPE: u16 = 0xc6c5;
-pub const CR2_TAG_C6D6: u16 = 0xc6d6;
+pub const _CR2_TAG_SRAW_TYPE: u16 = 0xc6c5;
+pub const _CR2_TAG_C6D6: u16 = 0xc6d6;
/* RW2 tags */
pub const RW2_TAG_SENSOR_WIDTH: u16 = 0x0002;
@@ -227,20 +229,20 @@ pub const RW2_TAG_LINEARITY_LIMIT_GREEN: u16 = 0x00f;
pub const RW2_TAG_LINEARITY_LIMIT_BLUE: u16 = 0x010;
pub const RW2_TAG_RED_BALANCE: u16 = 0x011;
pub const RW2_TAG_BLUE_BALANCE: u16 = 0x012;
-pub const RW2_TAG_WB_INFO: u16 = 0x013;
+pub const _RW2_TAG_WB_INFO: u16 = 0x013;
pub const RW2_TAG_BLACK_LEVEL_RED: u16 = 0x01c;
pub const RW2_TAG_BLACK_LEVEL_GREEN: u16 = 0x01d;
pub const RW2_TAG_BLACK_LEVEL_BLUE: u16 = 0x01e;
pub const RW2_TAG_WB_RED_LEVEL: u16 = 0x024;
pub const RW2_TAG_WB_GREEN_LEVEL: u16 = 0x025;
pub const RW2_TAG_WB_BLUE_LEVEL: u16 = 0x026;
-pub const RW2_TAG_IMAGE_RAWFORMAT: u16 = 0x002d;
+pub const _RW2_TAG_IMAGE_RAWFORMAT: u16 = 0x002d;
pub const RW2_TAG_JPEG_FROM_RAW: u16 = 0x002e;
pub const RW2_TAG_RAW_OFFSET: u16 = 0x0118;
pub const RW2_TAG_CAMERA_IFD: u16 = 0x0120;
/* Pentax MakerNote tags */
-pub const MNOTE_PENTAX_PREVIEW_IMAGE_SIZE: u16 = 0x02;
+pub const _MNOTE_PENTAX_PREVIEW_IMAGE_SIZE: u16 = 0x02;
pub const MNOTE_PENTAX_PREVIEW_IMAGE_LENGTH: u16 = 0x03;
pub const MNOTE_PENTAX_PREVIEW_IMAGE_START: u16 = 0x04;
pub const MNOTE_PENTAX_MODEL_ID: u16 = 0x05;
@@ -254,8 +256,8 @@ pub const MNOTE_PENTAX_WHITE_BALANCE: u16 = 0x201;
/* Canon MakerNote tags */
/// The model ID for Canon cameras.
pub const MNOTE_CANON_MODEL_ID: u16 = 0x0010;
-pub const MNOTE_CANON_RAW_DATA_OFFSET: u16 = 0x0081;
-pub const MNOTE_CANON_RAW_DATA_LENGTH: u16 = 0x0082;
+pub const _MNOTE_CANON_RAW_DATA_OFFSET: u16 = 0x0081;
+pub const _MNOTE_CANON_RAW_DATA_LENGTH: u16 = 0x0082;
pub const MNOTE_CANON_SENSORINFO: u16 = 0x00e0;
pub const MNOTE_CANON_COLOR_DATA: u16 = 0x4001;
@@ -267,8 +269,8 @@ pub const MNOTE_NIKON_QUALITY: u16 = 0x04;
pub const MNOTE_NIKON_WB_RB_LEVELS: u16 = 0x0c;
pub const MNOTE_NIKON_PREVIEW_IFD: u16 = 0x11;
pub const MNOTE_NIKON_COLOR_BALANCE_A: u16 = 0x14;
-pub const MNOTE_NIKON_SERIAL_NUMBER: u16 = 0x1d;
-pub const MNOTE_NIKON_SHUTTER_COUNT: u16 = 0xa7;
+pub const _MNOTE_NIKON_SERIAL_NUMBER: u16 = 0x1d;
+pub const _MNOTE_NIKON_SHUTTER_COUNT: u16 = 0xa7;
pub const MNOTE_NIKON_NEFDECODETABLE2: u16 = 0x96;
pub const MNOTE_NIKON_COLOR_BALANCE: u16 = 0x97;