107 gil_function_requires<Regular<View>>();
109 using value_type =
typename View::value_type;
110 using reference =
typename View::reference;
111 using pointer =
typename View::pointer;
112 using difference_type =
typename View::difference_type;
113 using const_t =
typename View::const_t;
114 using point_t =
typename View::point_t;
115 using locator =
typename View::locator;
116 using iterator =
typename View::iterator;
117 using const_iterator =
typename View::const_iterator;
118 using reverse_iterator =
typename View::reverse_iterator;
119 using size_type =
typename View::size_type;
120 static const std::size_t N=View::num_dimensions;
122 gil_function_requires<RandomAccessNDLocatorConcept<locator>>();
123 gil_function_requires<boost_concepts::RandomAccessTraversalConcept<iterator>>();
124 gil_function_requires<boost_concepts::RandomAccessTraversalConcept<reverse_iterator>>();
126 using first_it_type =
typename View::template axis<0>::iterator;
127 using last_it_type =
typename View::template axis<N-1>::iterator;
128 gil_function_requires<boost_concepts::RandomAccessTraversalConcept<first_it_type>>();
129 gil_function_requires<boost_concepts::RandomAccessTraversalConcept<last_it_type>>();
135 gil_function_requires<PointNDConcept<point_t>>();
136 static_assert(point_t::num_dimensions == N,
"");
137 static_assert(std::is_same
139 typename std::iterator_traits<first_it_type>::difference_type,
140 typename point_t::template axis<0>::coord_t
142 static_assert(std::is_same
144 typename std::iterator_traits<last_it_type>::difference_type,
145 typename point_t::template axis<N-1>::coord_t
151 reverse_iterator rit;
152 difference_type d; detail::initialize_it(d); ignore_unused_variable_warning(d);
156 p = view.dimensions();
158 size_type sz = view.size(); ignore_unused_variable_warning(sz);
159 bool is_contiguous = view.is_1d_traversable();
160 ignore_unused_variable_warning(is_contiguous);
167 reference r1 = view[d]; ignore_unused_variable_warning(r1);
168 reference r2 = view(p); ignore_unused_variable_warning(r2);
171 first_it_type fi = view.template axis_iterator<0>(p);
172 ignore_unused_variable_warning(fi);
173 last_it_type li = view.template axis_iterator<N-1>(p);
174 ignore_unused_variable_warning(li);
176 using deref_t = PixelDereferenceAdaptorArchetype<typename View::value_type>;
177 using dtype =
typename View::template add_deref<deref_t>::type;
225 gil_function_requires<RandomAccessNDImageViewConcept<View>>();
226 static_assert(View::num_dimensions == 2,
"");
229 gil_function_requires<RandomAccess2DLocatorConcept<typename View::locator>>();
233 using transposed_t =
typename transposed_type<View>::type;
234 using x_iterator =
typename View::x_iterator;
235 using y_iterator =
typename View::y_iterator;
236 using x_coord_t =
typename View::x_coord_t;
237 using y_coord_t =
typename View::y_coord_t;
238 using xy_locator =
typename View::xy_locator;
240 x_coord_t xd = 0; ignore_unused_variable_warning(xd);
241 y_coord_t yd = 0; ignore_unused_variable_warning(yd);
244 typename View::point_t d;
246 View(xd, yd, xy_locator());
248 xy_locator lc = view.xy_at(xd, yd);
251 typename View::reference r = view(xd, yd);
252 ignore_unused_variable_warning(r);
257 xit = view.x_at(xd,yd);
258 xit = view.row_begin(xd);
259 xit = view.row_end(xd);
262 yit = view.y_at(xd,yd);
263 yit = view.col_begin(xd);
264 yit = view.col_end(xd);
317 gil_function_requires<CollectionImageViewConcept<View>>();
319 using reference =
typename View::reference;
320 using const_reference =
typename View::const_reference;
322 reference r = view.front();
323 ignore_unused_variable_warning(r);
325 const_reference cr = view.front();
326 ignore_unused_variable_warning(cr);
340 gil_function_requires<CollectionImageViewConcept<View>>();
342 using reverse_iterator =
typename View::reverse_iterator;
343 using reference =
typename View::reference;
344 using const_reference =
typename View::const_reference;
350 reference r = view.back();
351 ignore_unused_variable_warning(r);
353 const_reference cr = view.back();
354 ignore_unused_variable_warning(cr);
379 gil_function_requires<RandomAccess2DImageViewConcept<View>>();
382 gil_function_requires<PixelLocatorConcept<typename View::xy_locator>>();
384 static_assert(std::is_same<typename View::x_coord_t, typename View::y_coord_t>::value,
"");
386 using coord_t =
typename View::coord_t;
387 std::size_t num_chan = view.num_channels(); ignore_unused_variable_warning(num_chan);
400 gil_function_requires<detail::RandomAccessNDLocatorIsMutableConcept<typename View::locator>>();
402 gil_function_requires<detail::RandomAccessIteratorIsMutableConcept<typename View::iterator>>();
404 gil_function_requires<detail::RandomAccessIteratorIsMutableConcept
406 typename View::reverse_iterator
409 gil_function_requires<detail::RandomAccessIteratorIsMutableConcept
411 typename View::template axis<0>::iterator
414 gil_function_requires<detail::RandomAccessIteratorIsMutableConcept
416 typename View::template axis<View::num_dimensions - 1>::iterator
419 typename View::difference_type diff;
421 ignore_unused_variable_warning(diff);
423 typename View::point_t pt;
424 typename View::value_type v;