[Top][All Lists]
[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()
{}