00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef IMAGE_READER_HPP
00026 #define IMAGE_READER_HPP
00027
00028 #include <mapnik/image_data.hpp>
00029 #include <mapnik/config.hpp>
00030
00031 #include <stdexcept>
00032 #include <string>
00033
00034 namespace mapnik
00035 {
00036 class ImageReaderException : public std::exception
00037 {
00038 private:
00039 std::string message_;
00040 public:
00041 ImageReaderException(const std::string& message)
00042 : message_(message) {}
00043
00044 ~ImageReaderException() throw() {}
00045
00046 virtual const char* what() const throw()
00047 {
00048 return message_.c_str();
00049 }
00050 };
00051
00052 struct MAPNIK_DECL ImageReader
00053 {
00054 virtual unsigned width() const=0;
00055 virtual unsigned height() const=0;
00056 virtual void read(unsigned x,unsigned y,ImageData32& image)=0;
00057 virtual ~ImageReader() {}
00058 };
00059
00060 bool register_image_reader(const std::string& type,ImageReader* (*)(const std::string&));
00061 MAPNIK_DECL ImageReader* get_image_reader(const std::string& file,const std::string& type);
00062 MAPNIK_DECL ImageReader* get_image_reader(const std::string& file);
00063
00064 }
00065
00066 #endif //IMAGE_READER_HPP