00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00026 #ifndef __PICINFO_TIFF_HEADER_INCLUDED__
00027 #define __PICINFO_TIFF_HEADER_INCLUDED__
00028
00029 #ifndef __PICINFO_IEXIF_FILE_HEADER_INCLUDED__
00030 #include "IExifFile.hpp"
00031 #endif
00032
00033 #ifndef __PICINFO_EXIF_ENTRY_HEADER_INCLUDED__
00034 #include "ExifEntry.hpp"
00035 #endif
00036
00037 #ifndef __PICINFO_CSTDINT_HEADER_INCLUDED__
00038 #include "cstdint.hpp"
00039 #endif
00040
00041 #include <vector>
00042
00043 namespace picinfo {
00044
00045 class CStdioFile ;
00046
00047 struct TagSpace ;
00048 extern const TagSpace exif_tspace ;
00049
00057 class CTiff : public IExifFile
00058 {
00059 private :
00061 CStdioFile *m_file ;
00062
00065 const long m_start_offset ;
00066
00068 int m_endian ;
00069
00071 std::vector<CExifEntry> m_entries ;
00072
00073 public :
00074 CTiff( CStdioFile *file ) ;
00075
00076 iterator find( uint16_t tag,
00077 const TagSpace& tspace = exif_tspace ) const ;
00078
00079 iterator begin( ) const ;
00080 iterator end( ) const ;
00081
00082 void Read( long offset, std::size_t size, void *data ) ;
00083
00084 int Endian( ) const ;
00085
00086 private :
00087 long ReadIFD( std::vector<CExifEntry>& entries, long offset ) ;
00088 } ;
00089
00090 }
00091
00092 #endif