Skip to content

Commit

Permalink
add non-in-place pixel accessors.
Browse files Browse the repository at this point in the history
  • Loading branch information
novas0x2a committed Jul 23, 2010
1 parent b04f428 commit 9a66300
Showing 1 changed file with 28 additions and 4 deletions.
32 changes: 28 additions & 4 deletions src/vw/Image/PixelAccessors.h
Expand Up @@ -62,17 +62,29 @@ namespace vw {
}
#endif

inline MemoryStridingPixelAccessor& next_col() { m_ptr += m_cstride; return *this; }
inline MemoryStridingPixelAccessor& prev_col() { m_ptr -= m_cstride; return *this; }
inline MemoryStridingPixelAccessor& next_row() { m_ptr += m_rstride; return *this; }
inline MemoryStridingPixelAccessor& prev_row() { m_ptr -= m_rstride; return *this; }
inline MemoryStridingPixelAccessor& next_col() { m_ptr += m_cstride; return *this; }
inline MemoryStridingPixelAccessor& prev_col() { m_ptr -= m_cstride; return *this; }
inline MemoryStridingPixelAccessor& next_row() { m_ptr += m_rstride; return *this; }
inline MemoryStridingPixelAccessor& prev_row() { m_ptr -= m_rstride; return *this; }
inline MemoryStridingPixelAccessor& next_plane() { m_ptr += m_pstride; return *this; }
inline MemoryStridingPixelAccessor& prev_plane() { m_ptr -= m_pstride; return *this; }
inline MemoryStridingPixelAccessor& advance( ptrdiff_t dc, ptrdiff_t dr, ptrdiff_t dp=0 ) {
m_ptr += dc*m_cstride + dr*m_rstride + dp*m_pstride;
return *this;
}

inline MemoryStridingPixelAccessor next_col_copy() const { MemoryStridingPixelAccessor tmp(*this); tmp.next_col(); return tmp; }
inline MemoryStridingPixelAccessor prev_col_copy() const { MemoryStridingPixelAccessor tmp(*this); tmp.prev_col(); return tmp; }
inline MemoryStridingPixelAccessor next_row_copy() const { MemoryStridingPixelAccessor tmp(*this); tmp.next_row(); return tmp; }
inline MemoryStridingPixelAccessor prev_row_copy() const { MemoryStridingPixelAccessor tmp(*this); tmp.prev_row(); return tmp; }
inline MemoryStridingPixelAccessor next_plane_copy() const { MemoryStridingPixelAccessor tmp(*this); tmp.next_plane(); return tmp; }
inline MemoryStridingPixelAccessor prev_plane_copy() const { MemoryStridingPixelAccessor tmp(*this); tmp.prev_plane(); return tmp; }
inline MemoryStridingPixelAccessor advance_copy ( ptrdiff_t dc, ptrdiff_t dr, ptrdiff_t dp=0 ) const {
MemoryStridingPixelAccessor tmp(*this);
tmp.advance(dc,dr,dp);
return tmp;
}

inline result_type operator*() const {
#if defined(VW_ENABLE_BOUNDS_CHECK) && (VW_ENABLE_BOUNDS_CHECK==1)
int32 delta = int32(m_ptr - m_base_ptr);
Expand Down Expand Up @@ -112,6 +124,18 @@ namespace vw {
inline ProceduralPixelAccessor& prev_plane() { --m_p; return *this; }
inline ProceduralPixelAccessor& advance( offset_type dc, offset_type dr, int32 dp=0 ) { m_c+=dc; m_r+=dr; m_p+=dp; return *this; }

inline ProceduralPixelAccessor next_col_copy() const { ProceduralPixelAccessor tmp(*this); tmp.next_col(); return tmp; }
inline ProceduralPixelAccessor prev_col_copy() const { ProceduralPixelAccessor tmp(*this); tmp.prev_col(); return tmp; }
inline ProceduralPixelAccessor next_row_copy() const { ProceduralPixelAccessor tmp(*this); tmp.next_row(); return tmp; }
inline ProceduralPixelAccessor prev_row_copy() const { ProceduralPixelAccessor tmp(*this); tmp.prev_row(); return tmp; }
inline ProceduralPixelAccessor next_plane_copy() const { ProceduralPixelAccessor tmp(*this); tmp.next_plane(); return tmp; }
inline ProceduralPixelAccessor prev_plane_copy() const { ProceduralPixelAccessor tmp(*this); tmp.prev_plane(); return tmp; }
inline ProceduralPixelAccessor advance_copy ( ptrdiff_t dc, ptrdiff_t dr, ptrdiff_t dp=0 ) const {
ProceduralPixelAccessor tmp(*this);
tmp.advance(dc,dr,dp);
return tmp;
}

inline result_type operator*() const { return m_view(m_c,m_r,m_p); }
};

Expand Down

0 comments on commit 9a66300

Please sign in to comment.