26 #include <mln/core/image/image1d.hh>
27 #include <mln/core/image/image2d.hh>
28 #include <mln/core/image/image3d.hh>
29 #include <mln/core/image/dmorph/sub_image.hh>
31 #include <mln/core/image/dmorph/image_if.hh>
32 #include <mln/fun/p2b/chess.hh>
34 #include <mln/literal/origin.hh>
36 #include <mln/value/int_s8.hh>
37 #include <mln/value/int_s16.hh>
38 #include <mln/value/int_u8.hh>
39 #include <mln/value/int_u16.hh>
41 #include <mln/value/rgb8.hh>
42 #include <mln/value/rgb16.hh>
45 #include <mln/debug/iota.hh>
47 #include <mln/data/fill.hh>
49 #include <mln/fun/p2v/iota.hh>
103 I& ima =
exact(ima_);
108 mln_piter(I)
p (ima.domain ());
110 mln_assertion (ima(
p) == v);
114 template <
typename V>
129 (std::cerr <<
"in 1d ... ").flush ();
131 typedef image1d<V> I;
133 for (V v = 0; v <
max; ++v)
134 for (
unsigned i = 1; i < col; ++i)
140 std::cerr <<
"OK" << std::endl;
142 (std::cerr <<
"in 2d ... ").flush ();
144 typedef image2d<V> I;
146 for (V v = 0; v <
max; ++v)
147 for (
unsigned i = 1; i < col; ++i)
148 for (
unsigned j = 1; j < row; ++j)
154 std::cerr <<
"OK" << std::endl;
156 (std::cerr <<
"in 3d ... ").flush ();
158 typedef image3d<V> I;
160 for (V v = 0; v <
max; ++v)
161 for (
unsigned i = 1; i < col; ++i)
162 for (
unsigned j = 1; j < row; ++j)
163 for (
unsigned k = 1; k < sli; ++k)
169 std::cerr <<
"OK" << std::endl;
172 (std::cerr <<
"in subimage 1d ... ").flush ();
174 typedef image1d<V> I;
175 typedef sub_image<I, box1d> J;
178 for (V v = 0; v <
max; ++v)
179 for (
unsigned i = 1; i < col; ++i)
186 std::cerr <<
"OK" << std::endl;
188 (std::cerr <<
"in subimage 2d ... ").flush ();
190 typedef image2d<V> I;
191 typedef sub_image<I, box2d> J;
194 for (V v = 0; v <
max; ++v)
195 for (
unsigned i = 1; i < col; ++i)
196 for (
unsigned j = 1; j < row; ++j)
203 std::cerr <<
"OK" << std::endl;
205 (std::cerr <<
"in subimage 3d ... ").flush ();
207 typedef image3d<V> I;
208 typedef sub_image<I, box3d> J;
211 for (V v = 0; v <
max; ++v)
212 for (
unsigned i = 1; i < col; ++i)
213 for (
unsigned j = 1; j < row; ++j)
214 for (
unsigned k = 1; k < sli; ++k)
221 std::cerr <<
"OK" << std::endl;
224 template <
typename V>
239 (std::cerr <<
"in 1d ... ").flush ();
243 for (
unsigned r = min; r <
max; ++r)
244 for (
unsigned g = min; g <
max; ++g)
245 for (
unsigned b = min; b <
max; ++b)
246 for (
unsigned i = 1; i < col; ++i)
249 chck (ima, V(r,g,b));
252 std::cerr <<
"OK" << std::endl;
254 (std::cerr <<
"in 2d ... ").flush ();
258 for (
unsigned r = min; r <
max; ++r)
259 for (
unsigned g = min; g <
max; ++g)
260 for (
unsigned b = min; b <
max; ++b)
261 for (
unsigned i = 1; i < col; ++i)
262 for (
unsigned j = 1; j < row; ++j)
265 chck (ima, V(r,g,b));
268 std::cerr <<
"OK" << std::endl;
270 (std::cerr <<
"in 3d ... ").flush ();
274 for (
unsigned r = min; r <
max; ++r)
275 for (
unsigned g = min; g <
max; ++g)
276 for (
unsigned b = min; b <
max; ++b)
277 for (
unsigned i = 1; i < col; ++i)
278 for (
unsigned j = 1; j < row; ++j)
279 for (
unsigned k = 1; k < sli; ++k)
282 chck (ima, V(r,g,b));
285 std::cerr <<
"OK" << std::endl;
288 (std::cerr <<
"in subimage 1d ... ").flush ();
294 for (
unsigned r = min; r <
max; ++r)
295 for (
unsigned g = min; g <
max; ++g)
296 for (
unsigned b = min; b <
max; ++b)
297 for (
unsigned i = 1; i < col; ++i)
301 chck (ima, V(r,g,b));
304 std::cerr <<
"OK" << std::endl;
306 (std::cerr <<
"in subimage 2d ... ").flush ();
312 for (
unsigned r = min; r <
max; ++r)
313 for (
unsigned g = min; g <
max; ++g)
314 for (
unsigned b = min; b <
max; ++b)
315 for (
unsigned i = 1; i < col; ++i)
316 for (
unsigned j = 1; j < row; ++j)
320 chck (ima, V(r,g,b));
323 std::cerr <<
"OK" << std::endl;
325 (std::cerr <<
"in subimage 3d ... ").flush ();
331 for (
unsigned r = min; r <
max; ++r)
332 for (
unsigned g = min; g <
max; ++g)
333 for (
unsigned b = min; b <
max; ++b)
334 for (
unsigned i = 1; i < col; ++i)
335 for (
unsigned j = 1; j < row; ++j)
336 for (
unsigned k = 1; k < sli; ++k)
340 chck (ima, V(r,g,b));
343 std::cerr <<
"OK" << std::endl;
353 std::cerr <<
"Tests data::fill:" << std::endl;
354 std::cerr <<
"on int:" << std::endl;
356 std::cerr <<
"on unsigned:" << std::endl;
358 std::cerr <<
"on int_u8:" << std::endl;
359 chk<value::int_u8>(16);
360 std::cerr <<
"on int_u16:" << std::endl;
361 chk<value::int_u16>(1000);
362 std::cerr <<
"on int_s8:" << std::endl;
363 chk<value::int_s8>(16);
364 std::cerr <<
"on int_s16:" << std::endl;
365 chk<value::int_s16>(1000);
366 std::cerr <<
"on rgb8:" << std::endl;
367 chk_rgb<value::rgb8>(140, 150);
368 std::cerr <<
"on rgb16:" << std::endl;
369 chk_rgb<value::rgb16>(60000, 60015);