00001 /*!@file Raster/PfmParser.H Parse pfm image files. */ 00002 00003 // //////////////////////////////////////////////////////////////////// // 00004 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2001 by the // 00005 // University of Southern California (USC) and the iLab at USC. // 00006 // See http://iLab.usc.edu for information about this project. // 00007 // //////////////////////////////////////////////////////////////////// // 00008 // Major portions of the iLab Neuromorphic Vision Toolkit are protected // 00009 // under the U.S. patent ``Computation of Intrinsic Perceptual Saliency // 00010 // in Visual Environments, and Applications'' by Christof Koch and // 00011 // Laurent Itti, California Institute of Technology, 2001 (patent // 00012 // pending; application number 09/912,225 filed July 23, 2001; see // 00013 // http://pair.uspto.gov/cgi-bin/final/home.pl for current status). // 00014 // //////////////////////////////////////////////////////////////////// // 00015 // This file is part of the iLab Neuromorphic Vision C++ Toolkit. // 00016 // // 00017 // The iLab Neuromorphic Vision C++ Toolkit is free software; you can // 00018 // redistribute it and/or modify it under the terms of the GNU General // 00019 // Public License as published by the Free Software Foundation; either // 00020 // version 2 of the License, or (at your option) any later version. // 00021 // // 00022 // The iLab Neuromorphic Vision C++ Toolkit is distributed in the hope // 00023 // that it will be useful, but WITHOUT ANY WARRANTY; without even the // 00024 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // 00025 // PURPOSE. See the GNU General Public License for more details. // 00026 // // 00027 // You should have received a copy of the GNU General Public License // 00028 // along with the iLab Neuromorphic Vision C++ Toolkit; if not, write // 00029 // to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, // 00030 // Boston, MA 02111-1307 USA. // 00031 // //////////////////////////////////////////////////////////////////// // 00032 // 00033 // Primary maintainer for this file: Laurent Itti <itti@usc.edu> 00034 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/Raster/PfmParser.H $ 00035 // $Id: PfmParser.H 8306 2007-04-27 14:36:17Z rjpeters $ 00036 // 00037 00038 #ifndef PFMPARSER_H_DEFINED 00039 #define PFMPARSER_H_DEFINED 00040 00041 #include "Image/Dims.H" 00042 #include "Raster/RasterParser.H" 00043 #include "Util/Types.H" 00044 00045 #include <string> 00046 00047 template <class T> class Image; 00048 template <class T> class PixRGB; 00049 00050 // ###################################################################### 00051 //! This class handles reading/parsing of PFM image files. 00052 /*! PFM is an unofficial format that looks very much like PGM except 00053 that raw pixel values are floats. Caution, this is not portable 00054 across endianness. The PNM magic for this unofficial format is 00055 PF. */ 00056 class PfmParser : public RasterParser 00057 { 00058 public: 00059 //! Initialize with a PGM or PPM file (either is OK). 00060 PfmParser(const std::string& fname); 00061 00062 //! Destructor. 00063 virtual ~PfmParser(); 00064 00065 //! Get the specifications of the image without fully reading it 00066 virtual GenericFrameSpec getFrameSpec() const; 00067 00068 //! Get the comments from the image without fully reading it 00069 virtual std::string getComments() const; 00070 00071 //! Get image tags if the image supports them 00072 virtual uint getTagCount() const; 00073 00074 //! Get image tags if the image supports them 00075 virtual bool getTag(uint tag, 00076 std::string& name, 00077 std::string& value) const; 00078 00079 //! Get a GenericFrame representation from the raster file. 00080 /*! This can subsequently be converted to rgb, grayscale, 00081 floating-point, or video-yuv. */ 00082 virtual GenericFrame getFrame(); 00083 00084 private: 00085 PfmParser(const PfmParser&); 00086 PfmParser& operator=(const PfmParser&); 00087 00088 struct Rep; 00089 Rep* const rep; 00090 }; 00091 00092 // ###################################################################### 00093 /* So things look consistent in everyone's emacs... */ 00094 /* Local Variables: */ 00095 /* indent-tabs-mode: nil */ 00096 /* End: */ 00097 00098 #endif // !PFMPARSER_H_DEFINED