libcvd-members
[Top][All Lists]
Advanced

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

[libcvd-members] libcvd/cvd image.h


From: Edward Rosten
Subject: [libcvd-members] libcvd/cvd image.h
Date: Sat, 18 Nov 2006 10:12:33 +0000

CVSROOT:        /cvsroot/libcvd
Module name:    libcvd
Changes by:     Edward Rosten <edrosten>        06/11/18 10:12:33

Modified files:
        cvd            : image.h 

Log message:
        Fix breakage with subimage iterators and CVD_IMAGE_DEBUG

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/image.h?cvsroot=libcvd&r1=1.29&r2=1.30

Patches:
Index: image.h
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd/image.h,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -b -r1.29 -r1.30
--- image.h     18 Nov 2006 09:16:42 -0000      1.29
+++ image.h     18 Nov 2006 10:12:33 -0000      1.30
@@ -354,23 +354,25 @@
                /// Returns an iterator referencing the first (top-left) pixel 
in the image
                inline iterator begin()
                {
-                       return SubImageIterator<T>(data(), size().x, my_stride, 
operator[](my_size.y));
+                       return SubImageIterator<T>(data(), size().x, my_stride, 
end_ptr());
                }
                /// Returns a const iterator referencing the first (top-left) 
pixel in the image
                inline const_iterator begin() const
                {
-                       return ConstSubImageIterator<T>(data(), size().x, 
my_stride, operator[](my_size.y));
+                       return ConstSubImageIterator<T>(data(), size().x, 
my_stride, end_ptr());
                }
 
                /// Returns an iterator pointing to one past the end of the 
image
                inline iterator end()
                {
-                       return SubImageIterator<T>(operator[](my_size.y));
+                       //Operator [] would always throw here!
+                       return SubImageIterator<T>(end_ptr());
                }
                /// Returns a const iterator pointing to one past the end of 
the image
                inline const_iterator end() const
                {
-                       return ConstSubImageIterator<T>(operator[](my_size.y));
+                       //Operator [] would always throw here!
+                       return ConstSubImageIterator<T>(end_ptr());
                }
 
                /// Returns an object corresponding to end(), which should 
eliminate a test.
@@ -453,6 +455,12 @@
                ImageRef my_size; ///< The size of the image
                int my_stride;    ///< The row stride
 
+               ///Return an off-the-end pointer without ever throwing 
AccessOutsideImage
+               T* end_ptr() { return my_data+my_size.y*my_stride; }
+
+               ///Return an off-the-end pointer without ever throwing 
AccessOutsideImage
+               const T* end_ptr() const { return my_data+my_size.y*my_stride; }
+
                SubImage()
                {}
 




reply via email to

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