libcvd-members
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libcvd-members] libcvd Makefile.in cvd/documentation.h cvd/imag...


From: Edward Rosten
Subject: [libcvd-members] libcvd Makefile.in cvd/documentation.h cvd/imag...
Date: Fri, 01 Apr 2011 17:18:21 +0000

CVSROOT:        /cvsroot/libcvd
Module name:    libcvd
Changes by:     Edward Rosten <edrosten>        11/04/01 17:18:21

Modified files:
        .              : Makefile.in 
        cvd            : documentation.h image_io.h 
        cvd/internal   : load_and_save.h 
        cvd/internal/io: bmp.h cvdimage.h fits.h jpeg.h png.h pnm_grok.h 
                         text.h tiff.h 
        pnm_src        : cvdimage.cxx fits.cc jpeg.cxx png.cc 
                         pnm_grok.cxx text.cxx tiff.cxx 

Log message:
        Convert BMP reader to new reader system. Conversion of image reading 
        now complete. BMP writer remains. 

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libcvd/Makefile.in?cvsroot=libcvd&r1=1.95&r2=1.96
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/documentation.h?cvsroot=libcvd&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/image_io.h?cvsroot=libcvd&r1=1.45&r2=1.46
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/internal/load_and_save.h?cvsroot=libcvd&r1=1.20&r2=1.21
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/internal/io/bmp.h?cvsroot=libcvd&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/internal/io/cvdimage.h?cvsroot=libcvd&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/internal/io/fits.h?cvsroot=libcvd&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/internal/io/jpeg.h?cvsroot=libcvd&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/internal/io/png.h?cvsroot=libcvd&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/internal/io/pnm_grok.h?cvsroot=libcvd&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/internal/io/text.h?cvsroot=libcvd&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/internal/io/tiff.h?cvsroot=libcvd&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/libcvd/pnm_src/cvdimage.cxx?cvsroot=libcvd&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/libcvd/pnm_src/fits.cc?cvsroot=libcvd&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/libcvd/pnm_src/jpeg.cxx?cvsroot=libcvd&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/libcvd/pnm_src/png.cc?cvsroot=libcvd&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/libcvd/pnm_src/pnm_grok.cxx?cvsroot=libcvd&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/libcvd/pnm_src/text.cxx?cvsroot=libcvd&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/libcvd/pnm_src/tiff.cxx?cvsroot=libcvd&r1=1.18&r2=1.19

Patches:
Index: Makefile.in
===================================================================
RCS file: /cvsroot/libcvd/libcvd/Makefile.in,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -b -r1.95 -r1.96
--- Makefile.in 6 Dec 2010 16:40:21 -0000       1.95
+++ Makefile.in 1 Apr 2011 17:18:20 -0000       1.96
@@ -97,6 +97,7 @@
                        cvd_src/yuv420.o                                \
                        pnm_src/pnm_grok.o                              \
                        pnm_src/bmp.o                                   \
+                       pnm_src/bmp_read.o                              \
                        pnm_src/cvdimage.o                              \
                        pnm_src/fits.o                                  \
                        pnm_src/fitswrite.o                             \

Index: cvd/documentation.h
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd/documentation.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- cvd/documentation.h 5 Aug 2009 14:59:09 -0000       1.28
+++ cvd/documentation.h 1 Apr 2011 17:18:20 -0000       1.29
@@ -97,7 +97,7 @@
 
 \section Portability
   LibCVD will compile on any reasonable unixy environment, with a reasonable
-  C++ compiler (e.g. gcc version >= 3.1) and GNU Make.  Additionally, libCVD
+  C++ compiler, with TR1 and GNU Make.  Additionally, libCVD
   supports both normal and cross compilers.  It is known to work on:
   
   -Well tested (current):
@@ -162,6 +162,8 @@
        - @c LIBDIR contains library files. libcvd static libraries (debug and 
release verions) will be copied into @c \%LIBDIR\%
        - @c BINDIR is not used for libcvd, but would be the default directory 
for DLLs
 
+libCVD requires the <a 
href="http://www.microsoft.com/downloads/en/details.aspx?FamilyId=D466226B-8DAB-445F-A7B4-448B326C48E7&displaylang=en";>Visual
 Studio feature pack for TR1</a> support.
+
 libCVD requires at least two libraries to compile:
        - pthreads-win32 at http://sourceware.org/pthreads-win32/
        - jpeg-7 at http://www.ijg.org/

Index: cvd/image_io.h
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd/image_io.h,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -b -r1.45 -r1.46
--- cvd/image_io.h      18 Nov 2010 21:47:53 -0000      1.45
+++ cvd/image_io.h      1 Apr 2011 17:18:20 -0000       1.46
@@ -248,7 +248,7 @@
            CVD::Internal::readImage<I, PNG::png_reader>(im, i);
 #endif
          else if(c == 'B')
-           BMP::readBMP(im, i);
+           CVD::Internal::readImage<I, BMP::Reader>(im, i);
          else if(c == 'S')
            CVD::Internal::readImage<I, FITS::reader>(im, i);
          else if(c == 'C')

Index: cvd/internal/load_and_save.h
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd/internal/load_and_save.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- cvd/internal/load_and_save.h        12 Nov 2010 14:07:31 -0000      1.20
+++ cvd/internal/load_and_save.h        1 Apr 2011 17:18:20 -0000       1.21
@@ -189,7 +189,14 @@
                                for(int row = 0; row < r.size().y; row++)
                                {
                                        r.get_raw_pixel_line(rowbuf.data());
-                                       Pixel::ConvertPixels<DiskPixelType, 
PixelType>::convert(rowbuf.data(), im[row], r.size().x);
+                                       PixelType* rowptr;
+
+                                       if(r.top_row_first())
+                                               rowptr = im[row];
+                                       else
+                                               rowptr = im[im.size().y - 
row-1];
+
+                                       Pixel::ConvertPixels<DiskPixelType, 
PixelType>::convert(rowbuf.data(), rowptr, r.size().x);
                                }
                        }
                };
@@ -199,7 +206,10 @@
                        static void exec(SubImage<PixelType>& im, ImageLoader& 
r)
                        {
                                for(int row = 0; row < r.size().y; row++)
+                                       if(r.top_row_first())
                                        r.get_raw_pixel_line(im[row]);
+                                       else
+                                               
r.get_raw_pixel_line(im[im.size().y - row-1]);
                        }
                };
 
@@ -208,11 +218,7 @@
                        static void exec(BasicImage<PixelType>& im, 
ImageLoader& r)
                        {
                                Image<DiskPixelType> imgbuf(r.size());
-
-                               for(int row = 0; row < r.size().y; row++)
-                               {
-                                       r.get_raw_pixel_line(imgbuf[row]);
-                               }
+                               
read_and_maybe_process<DiskPixelType,DiskPixelType, ImageLoader>::exec(imgbuf, 
r);
 
                                convert_image(imgbuf, im);
                        }

Index: cvd/internal/io/bmp.h
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd/internal/io/bmp.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- cvd/internal/io/bmp.h       12 Jun 2008 13:04:14 -0000      1.8
+++ cvd/internal/io/bmp.h       1 Apr 2011 17:18:21 -0000       1.9
@@ -34,90 +34,70 @@
 
 namespace CVD {
   namespace BMP {
-    void writeBMPHeader(unsigned int width, unsigned int height, unsigned int 
channels, std::ostream& out);
-    void readBMPHeader(unsigned int& width, unsigned int& height, unsigned 
int& channels, unsigned int& compression, std::istream& in);
-      
-    template <class T, int Channels> struct BMPReader;
+               using Internal::TypeList;
+               using Internal::Head;
 
-    template <class T> struct BMPReader<T,1> {
-      static void read(Image<T>& im, std::istream& in) {
-       Internal::simple_vector<Rgb<byte> > palette(256);
-       bool notgray = false;
-       for (int i=0; i<256; i++) {
-         byte buf[4];
-         in.read((char*)buf,4);
-         palette[i].red = buf[2];
-         palette[i].green = buf[1];
-         palette[i].blue = buf[0];
-         if (buf[0] != i || buf[0] != buf[1] || buf[1] != buf[2])
-           notgray = true;
-       }
-       size_t rowSize = im.size().x;
-       if (rowSize % 4)
-         rowSize += 4 - (rowSize%4);
-       Internal::simple_vector<byte> rowbuf(rowSize);
+               class ReadPimpl;
+               class Reader
+               {
+                       public:
+                               Reader(std::istream& i);
+                               ~Reader();
+
+                               ImageRef size();
+                               bool top_row_first();
+                               
+                               void get_raw_pixel_line(unsigned char*);
+                               void get_raw_pixel_line(Rgb<unsigned char>*);
+
+                               std::string datatype();
+                               std::string name();
+
+                               typedef TypeList<byte, 
+                                       TypeList<Rgb<byte>, 
+                                                                  Head> > 
Types;
        
-       if (notgray) {
-         std::cerr << "not gray" << std::endl;
-         Internal::simple_vector<T> cvt(256);
-         Pixel::ConvertPixels<Rgb<byte>,T>::convert(&palette[0], &cvt[0], 256);
-         for (int r=im.size().y-1; r>=0; r--) {
-          in.read((char*)&rowbuf[0], static_cast<std::streamsize>(rowSize));
-           for (int c=0; c<im.size().x; c++)
-             im[r][c] = cvt[rowbuf[c]];
-         } 
-       } else {          
-         for (int r=im.size().y-1; r>=0; r--) {
-           in.read((char*)&rowbuf[0], static_cast<std::streamsize>(rowSize));
-           Pixel::ConvertPixels<byte,T>::convert(&rowbuf[0], im[r], 
im.size().x);
-         }
-       }
-      }
+                       private:
+                               std::auto_ptr<ReadPimpl> t;
     };
-    template <class T> struct BMPReader<T,3> {
-      static void read(Image<T>& im, std::istream& in) {
-       size_t rowSize = im.size().x*3;
-       if (rowSize % 4)
-         rowSize += 4 - (rowSize%4);
-       Internal::simple_vector<byte> rowbuf(rowSize);
-       for (int r=im.size().y-1; r>=0; r--) {
-         in.read((char*)&rowbuf[0], static_cast<std::streamsize>(rowSize));
-         for (int c=0; c<im.size().x*3; c+=3) {
-           byte tmp = rowbuf[c];
-           rowbuf[c] = rowbuf[c+2];
-           rowbuf[c+2] = tmp;
-         }
-         Pixel::ConvertPixels<Rgb<byte>, T>::convert((Rgb<byte>*)&rowbuf[0], 
im[r], im.size().x);
-       }
-      }
+/*
+               class WritePimpl;
+               class Writer
+               {
+                       public:
+                               Writer(std::ostream&, ImageRef size, const 
std::string& type, const std::map<std::string, Parameter<> >& p);
+                               ~Writer();
+
+                               void write_raw_pixel_line(const byte*);
+                               void write_raw_pixel_line(const Rgb<byte>*);
+
+                               template<class Incoming> struct Outgoing
+                               {               
+                                       typedef byte type;
     };
 
-    template <class T> void readBMP(Image<T>& im, std::istream& in) {
-      unsigned int w,h,ch, comp;
-      readBMPHeader(w,h,ch,comp,in);
+                       protected:
+                               std::auto_ptr<WritePimpl> t; 
+               };
 
-      im.resize(ImageRef(w,h));
-      if (ch == 1)
-       BMPReader<T,1>::read(im, in);
-      else
-       BMPReader<T,3>::read(im,in);
-    }
+               template<class C> struct Writer::Outgoing<Rgb<C> > 
+               {
+                       typedef Rgb<byte> type;
+               };
 
-    template <class T> void readBMP(BasicImage<T>& im, std::istream& in) {
-      unsigned int w,h,ch, comp;
-      readBMPHeader(w,h,ch,comp,in);
-      if (comp || (ch != 3 && ch != 1)) 
-       throw CVD::Exceptions::Image_IO::UnsupportedImageType();
       
-      ImageRef size(w, h);
-      if(im.size() != size)
-        throw Exceptions::Image_IO::ImageSizeMismatch(size, im.size());
+               template<class C> struct Writer::Outgoing<Rgba<C> > 
+               {
+                       typedef Rgb<byte> type;
+               };
       
-      if (ch == 1)
-       BMPReader<T,1>::read(im, in);
-      else
-       BMPReader<T,3>::read(im,in);
-    }
+               template<> struct Writer::Outgoing<Rgb8> 
+               {
+                       typedef Rgb<byte> type;
+               };
+*/
+
+               void writeBMPHeader(unsigned int width, unsigned int height, 
unsigned int channels, std::ostream& out);
 
     template <class T, int Channels> struct BMPWriter;
     template <class T> struct BMPWriter<T,1> {

Index: cvd/internal/io/cvdimage.h
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd/internal/io/cvdimage.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- cvd/internal/io/cvdimage.h  21 Mar 2010 19:02:02 -0000      1.3
+++ cvd/internal/io/cvdimage.h  1 Apr 2011 17:18:21 -0000       1.4
@@ -49,6 +49,7 @@
                        ~reader();
 
                        ImageRef size();
+                       bool top_row_first();
 
                        void get_raw_pixel_line(unsigned char*);
                        void get_raw_pixel_line(bayer_bggr*);

Index: cvd/internal/io/fits.h
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd/internal/io/fits.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- cvd/internal/io/fits.h      21 Mar 2010 19:02:02 -0000      1.5
+++ cvd/internal/io/fits.h      1 Apr 2011 17:18:21 -0000       1.6
@@ -52,6 +52,7 @@
                        ~reader();
 
                        ImageRef size();
+                       bool top_row_first();
 
                        void get_raw_pixel_line(unsigned char*);
                        void get_raw_pixel_line(signed short*);

Index: cvd/internal/io/jpeg.h
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd/internal/io/jpeg.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- cvd/internal/io/jpeg.h      21 Mar 2010 19:02:02 -0000      1.8
+++ cvd/internal/io/jpeg.h      1 Apr 2011 17:18:21 -0000       1.9
@@ -48,6 +48,7 @@
                        ~reader();
 
                        ImageRef size();
+                       bool top_row_first();
 
                        void get_raw_pixel_line(unsigned char*);
                        void get_raw_pixel_line(Rgb<unsigned char>*);

Index: cvd/internal/io/png.h
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd/internal/io/png.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- cvd/internal/io/png.h       5 Nov 2010 15:09:52 -0000       1.11
+++ cvd/internal/io/png.h       1 Apr 2011 17:18:21 -0000       1.12
@@ -49,6 +49,7 @@
                ~png_reader();
 
                ImageRef size();
+               bool top_row_first();
 
                void get_raw_pixel_line(bool*);
                void get_raw_pixel_line(unsigned char*);

Index: cvd/internal/io/pnm_grok.h
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd/internal/io/pnm_grok.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- cvd/internal/io/pnm_grok.h  18 Nov 2010 21:47:53 -0000      1.11
+++ cvd/internal/io/pnm_grok.h  1 Apr 2011 17:18:21 -0000       1.12
@@ -43,6 +43,7 @@
                        ~Reader();
 
                        ImageRef size();
+                       bool top_row_first();
 
                        void get_raw_pixel_line(bool*);
                        void get_raw_pixel_line(unsigned char*);

Index: cvd/internal/io/text.h
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd/internal/io/text.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- cvd/internal/io/text.h      21 Mar 2010 19:02:03 -0000      1.2
+++ cvd/internal/io/text.h      1 Apr 2011 17:18:21 -0000       1.3
@@ -44,6 +44,7 @@
                        ~reader();
 
                        ImageRef size();
+                       bool top_row_first();
 
                        void get_raw_pixel_line(double*);
 

Index: cvd/internal/io/tiff.h
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd/internal/io/tiff.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- cvd/internal/io/tiff.h      21 Mar 2010 19:02:03 -0000      1.12
+++ cvd/internal/io/tiff.h      1 Apr 2011 17:18:21 -0000       1.13
@@ -50,6 +50,7 @@
                        ~tiff_reader();
 
                        ImageRef size();
+                       bool top_row_first();
 
                        void get_raw_pixel_line(bool*);
                        void get_raw_pixel_line(unsigned char*);

Index: pnm_src/cvdimage.cxx
===================================================================
RCS file: /cvsroot/libcvd/libcvd/pnm_src/cvdimage.cxx,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- pnm_src/cvdimage.cxx        29 Apr 2010 16:07:17 -0000      1.6
+++ pnm_src/cvdimage.cxx        1 Apr 2011 17:18:21 -0000       1.7
@@ -543,6 +543,10 @@
 {
        return "CVD";
 }
+bool reader::top_row_first()
+{
+       return true;
+}
 
 reader::~reader()
 {}

Index: pnm_src/fits.cc
===================================================================
RCS file: /cvsroot/libcvd/libcvd/pnm_src/fits.cc,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- pnm_src/fits.cc     15 Apr 2010 11:24:29 -0000      1.7
+++ pnm_src/fits.cc     1 Apr 2011 17:18:21 -0000       1.8
@@ -409,6 +409,11 @@
        return t->size();
 };
 
+bool reader::top_row_first()
+{
+       return true;
+}
+
 //Mechanically generate the pixel reading calls.
 #define GEN1(X) void reader::get_raw_pixel_line(X*d){t->get_raw_pixel_line(d);}
 #define GEN3(X) GEN1(X) GEN1(Rgb<X>) GEN1(Rgba<X>)

Index: pnm_src/jpeg.cxx
===================================================================
RCS file: /cvsroot/libcvd/libcvd/pnm_src/jpeg.cxx,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- pnm_src/jpeg.cxx    21 Mar 2010 19:02:03 -0000      1.14
+++ pnm_src/jpeg.cxx    1 Apr 2011 17:18:21 -0000       1.15
@@ -85,6 +85,10 @@
 {
        t->get_raw_pixel_line(d);
 }
+bool reader::top_row_first()
+{
+       return true;
+}
 
 string reader::datatype()
 {

Index: pnm_src/png.cc
===================================================================
RCS file: /cvsroot/libcvd/libcvd/pnm_src/png.cc,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- pnm_src/png.cc      5 Nov 2010 16:31:29 -0000       1.15
+++ pnm_src/png.cc      1 Apr 2011 17:18:21 -0000       1.16
@@ -311,6 +311,10 @@
 }
 
 
+bool png_reader::top_row_first()
+{
+       return true;
+}
 //Mechanically generate the pixel reading calls.
 #define GEN1(X) void png_reader::get_raw_pixel_line(X*d){p->read_pixels(d);}
 #define GEN3(X) GEN1(X) GEN1(Rgb<X>) GEN1(Rgba<X>)

Index: pnm_src/pnm_grok.cxx
===================================================================
RCS file: /cvsroot/libcvd/libcvd/pnm_src/pnm_grok.cxx,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- pnm_src/pnm_grok.cxx        18 Nov 2010 21:47:54 -0000      1.14
+++ pnm_src/pnm_grok.cxx        1 Apr 2011 17:18:21 -0000       1.15
@@ -502,6 +502,10 @@
                        return p->datatype();
                }
 
+               bool Reader::top_row_first()
+               {
+                       return true;
+               }
                string Reader::name()
                {
                        return "PNM";

Index: pnm_src/text.cxx
===================================================================
RCS file: /cvsroot/libcvd/libcvd/pnm_src/text.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- pnm_src/text.cxx    26 Jan 2009 15:16:42 -0000      1.1
+++ pnm_src/text.cxx    1 Apr 2011 17:18:21 -0000       1.2
@@ -135,6 +135,10 @@
        return t->datatype();
 }
 
+bool reader::top_row_first()
+{
+       return true;
+}
 string reader::name()
 {
        return "TEXT";

Index: pnm_src/tiff.cxx
===================================================================
RCS file: /cvsroot/libcvd/libcvd/pnm_src/tiff.cxx,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- pnm_src/tiff.cxx    10 Jan 2011 15:53:42 -0000      1.18
+++ pnm_src/tiff.cxx    1 Apr 2011 17:18:21 -0000       1.19
@@ -418,6 +418,10 @@
        return "TIFF";
 }
 
+bool tiff_reader::top_row_first()
+{
+       return true;
+};
 ImageRef tiff_reader::size()
 {
        return t->size();



reply via email to

[Prev in Thread] Current Thread [Next in Thread]