//--------------------------------------------------
// Panoramic is an interface for the visualization of panoramas capable of
// handling wide fields of view, based on Möbius transformations.
// Copyright (C) 2015 Luis Peñaranda, Luiz Velho and Leonardo Sacht.
// 
// This program is free software: you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by the
// Free Software Foundation, either version 3 of the License, or (at your
// option) any later version.
// 
// This program is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// General Public License for more details.
// 
// You should have received a copy of the GNU General Public License along
// with this program.  If not, see <http://www.gnu.org/licenses/>.
//-------------------------------------------------- 

#ifndef IMAGE_READ_H
#define IMAGE_READ_H

#include <utility>
#include <jpeglib.h>
#include <png.h>

#ifndef _MSC_VER
extern "C" {
#include <ppm.h>
#include <pm.h>
#include <pam.h>
}
  #ifndef _MSC_VER
    #define PROGNAME "pano_interface"
  #endif
#endif

enum FileType{
    JPEG,
    PNG,
    PNM,
    UNKNOWN
};

class FileRead{
    private:
        static enum FileType get_file_type(const char*);
    protected:
        static unsigned char *read_image(const char*,int*,int*);
        static const char *image_types;
    private:
        static unsigned char *jpgRead(const char*,int*,int*);
        static unsigned char *pngRead(const char*,int*,int*);
#ifndef _MSC_VER
        static unsigned char *pnmRead(const char * const,const char*,int*,int*);
#endif
};

#endif // IMAGE_READ_H
