pub struct ExifReader { /* private fields */ }
Expand description
Stateful EXIF reader for processing JPEG-embedded EXIF data ExifTool: lib/Image/ExifTool/Exif.pm ProcessExif function architecture
Implementations§
Source§impl ExifReader
impl ExifReader
Sourcepub fn process_binary_data_with_dependencies(
&mut self,
data: &[u8],
offset: usize,
size: usize,
table: &BinaryDataTable,
) -> Result<()>
pub fn process_binary_data_with_dependencies( &mut self, data: &[u8], offset: usize, size: usize, table: &BinaryDataTable, ) -> Result<()>
Process binary data with variable-length formats and DataMember dependencies ExifTool: ProcessBinaryData with two-phase processing for DataMember tags Reference: third-party/exiftool/lib/Image/ExifTool.pm:9750+ ProcessBinaryData function Milestone 12: Variable ProcessBinaryData implementation
Source§impl ExifReader
impl ExifReader
Source§impl ExifReader
impl ExifReader
Sourcepub fn select_processor(&self, dir_name: &str, tag_id: Option<u16>) -> String
pub fn select_processor(&self, dir_name: &str, tag_id: Option<u16>) -> String
Select appropriate processor for a directory ExifTool: $$subdir{ProcessProc} || $$tagTablePtr{PROCESS_PROC} || &ProcessExif Phase 5: Simplified to return processor name string
Sourcepub fn configure_processor_dispatch(&mut self, dispatch: ProcessorDispatch)
pub fn configure_processor_dispatch(&mut self, dispatch: ProcessorDispatch)
Configure processor dispatch for specific table/tag combinations ExifTool: Runtime processor configuration
Sourcepub fn add_subdirectory_override(&mut self, tag_id: u16, processor: String)
pub fn add_subdirectory_override(&mut self, tag_id: u16, processor: String)
Add SubDirectory processor override ExifTool: SubDirectory ProcessProc configuration Phase 5: Simplified to use processor name strings
Source§impl ExifReader
impl ExifReader
Sourcepub fn store_tag_with_precedence(
&mut self,
tag_id: u16,
value: TagValue,
source_info: TagSourceInfo,
)
pub fn store_tag_with_precedence( &mut self, tag_id: u16, value: TagValue, source_info: TagSourceInfo, )
Store tag with conflict resolution and proper namespace handling ExifTool behavior: Main EXIF tags take precedence over MakerNote tags with same ID
Source§impl ExifReader
impl ExifReader
Sourcepub fn set_file_type(&mut self, file_type: String)
pub fn set_file_type(&mut self, file_type: String)
Set the original file type from detection
Sourcepub fn get_overridden_file_type(&self) -> Option<String>
pub fn get_overridden_file_type(&self) -> Option<String>
Get the overridden file type if any
Sourcepub fn parse_exif_data(&mut self, exif_data: &[u8]) -> Result<()>
pub fn parse_exif_data(&mut self, exif_data: &[u8]) -> Result<()>
Parse EXIF data from JPEG APP1 segment after “Exif\0\0” ExifTool: lib/Image/ExifTool/Exif.pm:6172 ProcessExif entry point
Build composite tags from extracted tags Milestone 11.5: Multi-pass dependency resolution for composite-on-composite dependencies ExifTool: lib/Image/ExifTool.pm BuildCompositeTags function This is now a thin facade that delegates to the composite_tags module
Sourcepub fn get_tag_by_id(&self, tag_id: u16) -> Option<&TagValue>
pub fn get_tag_by_id(&self, tag_id: u16) -> Option<&TagValue>
Get extracted tag by ID
Get all extracted tags with their names (conversions already applied during extraction) Returns tags with group prefixes (e.g., “EXIF:Make”, “GPS:GPSLatitude”, “Composite:ImageSize”) matching ExifTool’s -G mode behavior Milestone 8f: Now includes composite tags with “Composite:” prefix
Sourcepub fn get_all_tag_entries(&mut self) -> Vec<TagEntry>
pub fn get_all_tag_entries(&mut self) -> Vec<TagEntry>
Get all tags as TagEntry objects with both value and print representations This is the new API that returns both ValueConv and PrintConv results Milestone 8b: TagEntry API implementation
Sourcepub fn get_warnings(&self) -> &[String]
pub fn get_warnings(&self) -> &[String]
Get parsing warnings
Sourcepub fn get_header(&self) -> Option<&TiffHeader>
pub fn get_header(&self) -> Option<&TiffHeader>
Get TIFF header information
Sourcepub fn get_current_path(&self) -> String
pub fn get_current_path(&self) -> String
Get current directory path for debugging ExifTool: $$self{PATH} shows directory hierarchy
Sourcepub fn get_processing_stats(&self) -> HashMap<String, usize>
pub fn get_processing_stats(&self) -> HashMap<String, usize>
Get processing statistics for –show-missing functionality
Sourcepub fn get_processor_dispatch(&self) -> &ProcessorDispatch
pub fn get_processor_dispatch(&self) -> &ProcessorDispatch
Get current processor dispatch configuration
Sourcepub fn set_test_data(&mut self, data: Vec<u8>)
pub fn set_test_data(&mut self, data: Vec<u8>)
Test helper: Set test data (public for integration tests)
Sourcepub fn set_test_header(&mut self, header: TiffHeader)
pub fn set_test_header(&mut self, header: TiffHeader)
Test helper: Set TIFF header (public for integration tests)
Test helper: Get extracted tags (public for integration tests)
Sourcepub fn get_tag_sources(&self) -> &HashMap<u16, TagSourceInfo>
pub fn get_tag_sources(&self) -> &HashMap<u16, TagSourceInfo>
Test helper: Get tag sources (public for integration tests)
Sourcepub fn get_data_len(&self) -> usize
pub fn get_data_len(&self) -> usize
Test helper: Get data length (public for integration tests)