PfmParser.H

Go to the documentation of this file.
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
Generated on Sun May 8 08:41:16 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3