core/vil1/vil1_memory_image_of.txx

Go to the documentation of this file.
00001 // This is core/vil1/vil1_memory_image_of.txx
00002 #ifndef vil1_memory_image_of_txx_
00003 #define vil1_memory_image_of_txx_
00004 
00005 // Author: Andrew W. Fitzgibbon, Oxford RRG
00006 // Created: 19 Aug 96
00007 //
00008 //-----------------------------------------------------------------------------
00009 
00010 #include "vil1_memory_image_of.h"
00011 #include <vcl_cassert.h>
00012 #include <vil1/vil1_memory_image_of_format.txx>
00013 
00014 template <class T>
00015 vil1_memory_image_of<T>::vil1_memory_image_of():
00016   vil1_memory_image()
00017 {
00018 }
00019 
00020 template <class T>
00021 vil1_memory_image_of<T>::vil1_memory_image_of(vil1_memory_image_of<T> const & that):
00022   vil1_memory_image(that)
00023 {
00024 }
00025 
00026 template <class T>
00027 vil1_memory_image_of<T>::vil1_memory_image_of(vil1_image const& image):
00028   vil1_memory_image(image)
00029 {
00030   assert(image.components() == components());
00031   assert(image.bits_per_component() == bits_per_component());
00032   assert(image.component_format() == component_format());
00033   // because of asserts, format is fine
00034   //  set(image);
00035 }
00036 
00037 template <class T>
00038 vil1_memory_image_of<T>::vil1_memory_image_of(int sizex, int sizey):
00039   vil1_memory_image(1, sizex, sizey, vil1_memory_image_of_format<T>())
00040 {
00041 }
00042 
00043 // added by Brendan McCane for creating an image from already
00044 // allocated memory.
00045 template <class T>
00046 vil1_memory_image_of<T>::vil1_memory_image_of(T *buf, int sizex, int sizey):
00047   vil1_memory_image(buf, 1, sizex, sizey, vil1_memory_image_of_format<T>())
00048 {
00049 }
00050 
00051 #if 0 // this method was removed
00052 template <class T>
00053 vil1_memory_image_of<T>::vil1_memory_image_of(int sizex, int sizey, T const& value):
00054   vil1_memory_image(1, sizex, sizey, vil1_memory_image_of_format<T>())
00055 {
00056   T *p = (T*)get_buffer();
00057   T *e = p + planes() * width() * height();
00058   while (p != e)
00059     *p++ = value;
00060 }
00061 #endif
00062 
00063 template <class T>
00064 void vil1_memory_image_of<T>::set(vil1_image const& image)
00065 {
00066   resize(image.width(), image.height());
00067   image.get_section(get_buffer(), 0, 0, width(), height());
00068 }
00069 
00070 template <class T>
00071 vil1_memory_image_of<T>& vil1_memory_image_of<T>::operator=(vil1_memory_image_of<T> const &that)
00072 {
00073   vil1_memory_image::operator=(that);
00074   return *this;
00075 }
00076 
00077 template <class T>
00078 vil1_memory_image_of<T>& vil1_memory_image_of<T>::operator=(vil1_image const &that)
00079 {
00080   assert((that.bits_per_component() * that.components()+7)/8 == sizeof (T));
00081   vil1_memory_image::operator=(that);
00082   return *this;
00083 }
00084 
00085 template <class  T>
00086 void vil1_memory_image_of<T>::resize(int width, int height)
00087 {
00088   if (ptr)
00089     vil1_memory_image::resize(width, height);
00090   else
00091     *this = vil1_memory_image_of<T>(width, height);
00092 }
00093 
00094 template <class  T>
00095 void vil1_memory_image_of<T>::resize(int planes, int width, int height)
00096 {
00097   assert(ptr);
00098   vil1_memory_image::resize(planes, width, height);
00099 }
00100 
00101 template <class T>
00102 void vil1_memory_image_of<T>::fill(T const& v)
00103 {
00104   int w = width();
00105   int h = height();
00106   for (int y=0; y<h; ++y) {
00107     T* raster = (*this)[y];
00108     for (int x=0; x<w; ++x)
00109       raster[x] = v;
00110   }
00111 }
00112 
00113 #define VIL1_MEMORY_IMAGE_OF_INSTANTIATE(T) \
00114 template class vil1_memory_image_of<T >
00115 
00116 #endif // vil1_memory_image_of_txx_

Generated on Mon Mar 8 05:09:33 2010 for core/vil1 by  doxygen 1.5.1