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
00026
00027 #ifndef _PLIB_image_h_
00028 #define _PLIB_image_h_
00029
00030 #include "matrix.h"
00031 #include "color.h"
00032
00035 namespace PLib {
00036
00047 template <class T>
00048 class MatrixImage : public Matrix<T> {
00049 public:
00050 MatrixImage(void) : Matrix<T>() {}
00051 MatrixImage(Matrix<T>& img): Matrix<T>(img) {}
00052 MatrixImage(MatrixImage<T>& img): Matrix<T>(img) {}
00053 MatrixImage(const int r, const int c): Matrix<T>(r,c) {}
00054 ~MatrixImage() {}
00055
00056 void drawLine(int i1, int j1, int i2, int j2, T color) ;
00057 void drawPoint(int i, int j, double radius, T color) ;
00058 void store(Matrix<T>&) ;
00059 };
00060
00061 }
00062
00063 typedef PLib::MatrixImage<unsigned char> Image_UBYTE ;
00064 typedef PLib::MatrixImage<char> Image_BYTE ;
00065 typedef PLib::MatrixImage<int> Image_INT ;
00066 typedef PLib::MatrixImage<double> Image_DOUBLE ;
00067 typedef PLib::MatrixImage<PLib::Color> Image_Color ;
00068
00069 #ifdef WITH_IMAGE_MAGICK
00070
00071 #include <magick/magick_config.h>
00072 #include <stdio.h>
00073 #include <magick/api.h>
00074
00075 namespace PLib{
00076
00097 template <class T>
00098 class IM_ImageT: public MatrixImage<T> {
00099 public:
00100 IM_ImageT(const std::string &filename, int save=0);
00101 IM_ImageT() ;
00102 IM_ImageT(const int r, const int c) ;
00103 ~IM_ImageT() ;
00104
00105 int read(const std::string &filename);
00106 int write(const std::string &filename);
00107
00108 IM_ImageT<T>& operator=(const Basic2DArray<T>& image){
00109 ((Basic2DArray<T>&)*this) = image;
00110 return *this;
00111 }
00112
00113
00114 protected:
00115 std::string file_name ;
00116 int autoSave ;
00117
00118 void setImage() ;
00119 void setMatrix() ;
00120 };
00121
00122 }
00123
00124 typedef PLib::IM_ImageT<unsigned char> IM_Image ;
00125 typedef PLib::IM_ImageT<PLib::Color> IM_ColorImage ;
00126
00127 #ifdef INCLUDE_TEMPLATE_SOURCE
00128 #include "image_.cpp"
00129 #endif
00130
00131 #endif // WITH_IMAGE_MAGICK
00132
00133 #ifdef INCLUDE_TEMPLATE_SOURCE
00134 #include "image.cpp"
00135 #endif
00136
00137
00138 #endif