13 #ifndef BOOST_GIL_PIXEL_ITERATOR_HPP
14 #define BOOST_GIL_PIXEL_ITERATOR_HPP
33 namespace boost {
namespace gil {
36 template <
typename Iterator>
37 class memory_based_step_iterator;
39 template <
typename Iterator>
struct dynamic_x_step_type;
43 template <
typename It>
44 struct is_iterator_adaptor :
public mpl::false_{};
47 template <
typename It>
48 struct iterator_adaptor_get_base;
51 template <
typename It,
typename NewBaseIt>
52 struct iterator_adaptor_rebind;
55 template <
typename It>
56 struct const_iterator_type;
59 template <
typename T>
struct const_iterator_type< T*> {
typedef const T* type; };
60 template <
typename T>
struct const_iterator_type<const T*> {
typedef const T* type; };
64 template <
typename It>
65 struct iterator_is_mutable{};
68 template <
typename T>
struct iterator_is_mutable< T*> :
public mpl::true_{};
69 template <
typename T>
struct iterator_is_mutable<const T*> :
public mpl::false_{};
83 template <
typename Pixel>
84 struct dynamic_x_step_type<Pixel*> {
85 typedef memory_based_step_iterator<Pixel*> type;
89 template <
typename Pixel>
90 struct dynamic_x_step_type<const Pixel*> {
91 typedef memory_based_step_iterator<const Pixel*> type;
99 template <
typename Pixel>
struct color_space_type< Pixel*> :
public color_space_type<Pixel> {};
100 template <
typename Pixel>
struct color_space_type<const Pixel*> :
public color_space_type<Pixel> {};
102 template <
typename Pixel>
struct channel_mapping_type< Pixel*> :
public channel_mapping_type<Pixel> {};
103 template <
typename Pixel>
struct channel_mapping_type<const Pixel*> :
public channel_mapping_type<Pixel> {};
105 template <
typename Pixel>
struct is_planar< Pixel*> :
public is_planar<Pixel> {};
106 template <
typename Pixel>
struct is_planar<const Pixel*> :
public is_planar<Pixel> {};
112 template <
typename Pixel>
struct channel_type<Pixel*> :
public channel_type<Pixel> {};
113 template <
typename Pixel>
struct channel_type<const Pixel*> :
public channel_type<Pixel> {};
126 template <
typename T>
129 template <
typename P>
130 inline std::ptrdiff_t memunit_step(
const P*) {
return sizeof(P); }
132 template <
typename P>
133 inline std::ptrdiff_t memunit_distance(
const P* p1,
const P* p2) {
134 return (gil_reinterpret_cast_c<const unsigned char*>(p2)-gil_reinterpret_cast_c<const unsigned char*>(p1));
137 template <
typename P>
138 inline void memunit_advance(P* &p, std::ptrdiff_t diff) {
139 p=(P*)((
unsigned char*)(p)+diff);
142 template <
typename P>
143 inline P* memunit_advanced(
const P* p, std::ptrdiff_t diff) {
144 return (P*)((
char*)(p)+diff);
150 template <
typename P>
151 inline P& memunit_advanced_ref(P* p, std::ptrdiff_t diff) {
152 return *memunit_advanced(p,diff);
Definition: pixel_iterator.hpp:127
Concept check classes for GIL concepts.
Various utilities not specific to the image library. Some are non-standard STL extensions or generic ...
pixel class and related utilities