00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00026 #ifndef _IMAGEIO_H_
00027 #define _IMAGEIO_H_
00028
00029 #include <exception>
00030 #include <string>
00031 #include "Image.h"
00032
00033 class std::istream;
00034 class std::ostream;
00035
00036 namespace halftoner
00037 {
00038
00039
00040
00041
00042
00046 class ImageFormatError : public std::runtime_error
00047 {
00048 public:
00053 ImageFormatError(const std::string& message) : std::runtime_error(message) {}
00054 };
00055
00056
00057
00058
00059
00060
00064 class IOError : public std::runtime_error
00065 {
00066 public:
00071 IOError(const std::string& message): runtime_error(message) {}
00072 };
00073
00074
00075
00076
00077
00078
00084 class ImageIO
00085 {
00086 private:
00089
00092 ImageIO() throw();
00093
00097 ImageIO(const ImageIO&) throw();
00098
00102 ImageIO operator=(const ImageIO&) throw();
00104
00105 public:
00107 ~ImageIO() throw();
00108
00111
00120 static Image* loadPGM(std::istream& is) throw(ImageFormatError, IOError);
00121
00130 static void savePBMraw(const Image& image, std::ostream& os) throw(IOError);
00131
00139 static void savePBMascii(const Image& image, std::ostream& os) throw(IOError);
00141 };
00142
00143 }
00144
00145 #endif