Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

Tiff.hpp

Go to the documentation of this file.
00001 /*
00002     libglim: a C++ Free library render images using OpenGL
00003     Copyright (C) 2002 Nestal Wan
00004 
00005     This library is free software; you can redistribute it and/or
00006     modify it under the terms of the GNU General Public License
00007     as published by the Free Software Foundation; either
00008     version 2 of the License, or (at your option) any later version.
00009 
00010     This library is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013     General Public License for more details.
00014 
00015     You should have received a copy of the GNU General Public
00016     License along with this library; if not, write to the Free Software
00017     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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 } // end of namespace
00091 
00092 #endif

Generated on Fri Jan 13 23:38:12 2006 for picinfo by  doxygen 1.4.4