Olena-patches
Threads by month
- ----- 2025 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- 9625 discussions
* milena/doc/tutorial/Makefile.am,
* milena/Makefile.am: Add files to make dist.
* milena/mln/essential/routine.hh,
* milena/mln/core/image/all.hh,
* milena/mln/draw/essential.hh: fix headers.
* milena/tests/unit_test/mln_core_def_low_quant_nbits.cc,
* milena/tests/unit_test/mln_core_internal_neighb_niter_impl.cc,
* milena/tests/unit_test/mln_fun_p2b_big_chess.cc,
* milena/tests/unit_test/mln_fun_p2p_mirror.cc: new unit_tests.
---
milena/ChangeLog | 16 +
milena/Makefile.am | 1018 ++++++++++++++++++++
milena/doc/tutorial/Makefile.am | 147 +++
milena/mln/core/image/all.hh | 9 +-
milena/mln/draw/essential.hh | 10 +-
milena/mln/essential/routine.hh | 1 -
.../unit_test/mln_core_def_low_quant_nbits.cc | 8 +
.../mln_core_internal_neighb_niter_impl.cc | 8 +
milena/tests/unit_test/mln_fun_p2b_big_chess.cc | 8 +
milena/tests/unit_test/mln_fun_p2p_mirror.cc | 8 +
10 files changed, 1218 insertions(+), 15 deletions(-)
create mode 100644 milena/tests/unit_test/mln_core_def_low_quant_nbits.cc
create mode 100644 milena/tests/unit_test/mln_core_internal_neighb_niter_impl.cc
create mode 100644 milena/tests/unit_test/mln_fun_p2b_big_chess.cc
create mode 100644 milena/tests/unit_test/mln_fun_p2p_mirror.cc
diff --git a/milena/ChangeLog b/milena/ChangeLog
index b32ac8e..b9dc577 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,3 +1,19 @@
+2008-12-08 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix compilation issues.
+
+ * milena/doc/tutorial/Makefile.am,
+ * milena/Makefile.am: Add files to make dist.
+
+ * milena/mln/essential/routine.hh,
+ * milena/mln/core/image/all.hh,
+ * milena/mln/draw/essential.hh: fix headers.
+
+ * milena/tests/unit_test/mln_core_def_low_quant_nbits.cc,
+ * milena/tests/unit_test/mln_core_internal_neighb_niter_impl.cc,
+ * milena/tests/unit_test/mln_fun_p2b_big_chess.cc,
+ * milena/tests/unit_test/mln_fun_p2p_mirror.cc: new unit_tests.
+
2008-12-06 Guillaume Lazzara <z(a)lrde.epita.fr>
Update unit tests.
diff --git a/milena/Makefile.am b/milena/Makefile.am
index fa1d994..77a2633 100644
--- a/milena/Makefile.am
+++ b/milena/Makefile.am
@@ -12,3 +12,1021 @@ SUBDIRS = \
doc:
$(MAKE) -C doc doc
+nobase_include_HEADERS = \
+mln/histo/all.hh \
+mln/histo/data.hh \
+mln/histo/compute.hh \
+mln/histo/compute.spe.hh \
+mln/histo/essential.hh \
+mln/geom/pmin_pmax.hh \
+mln/geom/max_row.hh \
+mln/geom/chamfer.hh \
+mln/geom/min_row.hh \
+mln/geom/seeds2tiling.hh \
+mln/geom/size1d.hh \
+mln/geom/all.hh \
+mln/geom/size2d.hh \
+mln/geom/max_ind.hh \
+mln/geom/max_col.hh \
+mln/geom/size3d.hh \
+mln/geom/ninds.hh \
+mln/geom/nslis.hh \
+mln/geom/delta.hh \
+mln/geom/resize.hh \
+mln/geom/nsites.hh \
+mln/geom/min_col.hh \
+mln/geom/complex_geometry.hh \
+mln/geom/ncols.hh \
+mln/geom/nrows.hh \
+mln/geom/min_ind.hh \
+mln/geom/bbox.hh \
+mln/geom/seeds2tiling_roundness.hh \
+mln/geom/min_sli.hh \
+mln/geom/essential.hh \
+mln/geom/max_sli.hh \
+mln/draw/box.hh \
+mln/draw/all.hh \
+mln/draw/plot.hh \
+mln/draw/line.hh \
+mln/draw/essential.hh \
+mln/pw/image.hh \
+mln/pw/all.hh \
+mln/pw/value.hh \
+mln/pw/cst.hh \
+mln/pw/var.hh \
+mln/pw/essential.hh \
+mln/literal/zero.hh \
+mln/literal/ops.hh \
+mln/literal/origin.hh \
+mln/literal/grays.hh \
+mln/literal/all.hh \
+mln/literal/colors.hh \
+mln/literal/black.hh \
+mln/literal/one.hh \
+mln/literal/white.hh \
+mln/literal/essential.hh \
+mln/registration/get_rtransf.hh \
+mln/registration/internal/rms.hh \
+mln/registration/get_rot.hh \
+mln/registration/all.hh \
+mln/registration/multiscale.hh \
+mln/registration/registration.hh \
+mln/registration/essential.hh \
+mln/registration/icp.hh \
+mln/util/graph.hh \
+mln/util/max.hh \
+mln/util/lazy_set.hh \
+mln/util/set.hh \
+mln/util/tree_to_image.hh \
+mln/util/lemmings.hh \
+mln/util/greater_point.hh \
+mln/util/internal/graph_iter_base.hh \
+mln/util/internal/boost_graph_access.hh \
+mln/util/internal/boost_graph_structure.hh \
+mln/util/internal/graph_iter.hh \
+mln/util/internal/graph_nbh_iter.hh \
+mln/util/internal/vertex_impl.hh \
+mln/util/internal/edge_impl.hh \
+mln/util/internal/graph_base.hh \
+mln/util/internal/boost_graph.hh \
+mln/util/internal/graph_nbh_iter_base.hh \
+mln/util/internal/boost_graph_property.hh \
+mln/util/ord_pair.hh \
+mln/util/edge.hh \
+mln/util/all.hh \
+mln/util/dindex.hh \
+mln/util/tracked_ptr.hh \
+mln/util/ignore.hh \
+mln/util/greater_psite.hh \
+mln/util/timer.hh \
+mln/util/yes.hh \
+mln/util/line_graph.hh \
+mln/util/ord.hh \
+mln/util/tree_fast_to_image.hh \
+mln/util/tree.hh \
+mln/util/index.hh \
+mln/util/multi_site.hh \
+mln/util/branch_iter.hh \
+mln/util/branch_iter_ind.hh \
+mln/util/tree_to_fast.hh \
+mln/util/array.hh \
+mln/util/vertex.hh \
+mln/util/pix.hh \
+mln/util/tree_fast.hh \
+mln/util/site_pair.hh \
+mln/util/nil.hh \
+mln/util/eat.hh \
+mln/util/essential.hh \
+mln/tag/init.hh \
+mln/tag/skeleton.hh \
+mln/tag/all.hh \
+mln/tag/essential.hh \
+mln/trace/entering.hh \
+mln/trace/all.hh \
+mln/trace/warning.hh \
+mln/trace/exiting.hh \
+mln/trace/resume.hh \
+mln/trace/quiet.hh \
+mln/trace/stop.hh \
+mln/trace/essential.hh \
+mln/make/graph.hh \
+mln/make/double_neighb2d.hh \
+mln/make/dpoint2d_h.hh \
+mln/make/w_window.hh \
+mln/make/image.hh \
+mln/make/vec.hh \
+mln/make/all.hh \
+mln/make/dual_neighb.hh \
+mln/make/w_window3d.hh \
+mln/make/mat.hh \
+mln/make/win_chamfer.hh \
+mln/make/w_window2d_int.hh \
+mln/make/box1d.hh \
+mln/make/voronoi.hh \
+mln/make/box2d.hh \
+mln/make/w_window2d.hh \
+mln/make/box3d.hh \
+mln/make/relabelfun.hh \
+mln/make/pixel.hh \
+mln/make/pix.hh \
+mln/make/box2d_h.hh \
+mln/make/w_window1d.hh \
+mln/make/image2d.hh \
+mln/make/w_window_directional.hh \
+mln/make/w_window3d_int.hh \
+mln/make/essential.hh \
+mln/make/w_window1d_int.hh \
+mln/make/point2d_h.hh \
+mln/display/all.hh \
+mln/display/essential.hh \
+mln/extension/adjust.hh \
+mln/extension/duplicate.hh \
+mln/extension/adjust_duplicate.hh \
+mln/extension/all.hh \
+mln/extension/adjust_fill.hh \
+mln/extension/fill.hh \
+mln/extension/essential.hh \
+mln/fun/p2b/chess.hh \
+mln/fun/p2b/all.hh \
+mln/fun/p2b/has.hh \
+mln/fun/p2b/big_chess.hh \
+mln/fun/p2b/essential.hh \
+mln/fun/p2p/mirror.hh \
+mln/fun/x2p/closest_point.hh \
+mln/fun/x2p/all.hh \
+mln/fun/x2p/essential.hh \
+mln/fun/ops.hh \
+mln/fun/c.hh \
+mln/fun/vv2v/max.hh \
+mln/fun/vv2v/lor.hh \
+mln/fun/vv2v/land_not.hh \
+mln/fun/vv2v/vec.hh \
+mln/fun/vv2v/all.hh \
+mln/fun/vv2v/macros.hh \
+mln/fun/vv2v/lxor.hh \
+mln/fun/vv2v/diff_abs.hh \
+mln/fun/vv2v/land.hh \
+mln/fun/vv2v/min.hh \
+mln/fun/vv2v/essential.hh \
+mln/fun/internal/array_base.hh \
+mln/fun/internal/x2x_linear_impl.hh \
+mln/fun/internal/selector.hh \
+mln/fun/p2v/ternary.hh \
+mln/fun/p2v/iota.hh \
+mln/fun/p2v/elifs.hh \
+mln/fun/p2v/all.hh \
+mln/fun/p2v/essential.hh \
+mln/fun/all.hh \
+mln/fun/v2b/lnot.hh \
+mln/fun/v2b/all.hh \
+mln/fun/v2b/threshold.hh \
+mln/fun/v2b/essential.hh \
+mln/fun/v2v/norm.hh \
+mln/fun/v2v/linear.hh \
+mln/fun/v2v/id.hh \
+mln/fun/v2v/saturate.hh \
+mln/fun/v2v/inc.hh \
+mln/fun/v2v/all.hh \
+mln/fun/v2v/dec.hh \
+mln/fun/v2v/abs.hh \
+mln/fun/v2v/cast.hh \
+mln/fun/v2v/rgb_to_hsi.hh \
+mln/fun/v2v/enc.hh \
+mln/fun/v2v/convert.hh \
+mln/fun/v2v/essential.hh \
+mln/fun/cast.hh \
+mln/fun/i2v/all.hh \
+mln/fun/i2v/array.hh \
+mln/fun/i2v/all_to.hh \
+mln/fun/i2v/essential.hh \
+mln/fun/l2l/relabel.hh \
+mln/fun/l2l/all.hh \
+mln/fun/l2l/essential.hh \
+mln/fun/x2x/composed.hh \
+mln/fun/x2x/all.hh \
+mln/fun/x2x/translation.hh \
+mln/fun/x2x/rotation.hh \
+mln/fun/x2x/essential.hh \
+mln/fun/x2v/linear.hh \
+mln/fun/x2v/bilinear.hh \
+mln/fun/x2v/all.hh \
+mln/fun/x2v/l1_norm.hh \
+mln/fun/x2v/nneighbor.hh \
+mln/fun/x2v/essential.hh \
+mln/fun/essential.hh \
+mln/all.hh \
+mln/convert/to_p_set.hh \
+mln/convert/to.hh \
+mln/convert/to_upper_window.hh \
+mln/convert/to_image.hh \
+mln/convert/to_fun.hh \
+mln/convert/all.hh \
+mln/convert/to_window.hh \
+mln/convert/from_to.hh \
+mln/convert/to_std_set.hh \
+mln/convert/impl/from_value_to_value.hh \
+mln/convert/impl/all.hh \
+mln/convert/impl/from_image_to_site_set.hh \
+mln/convert/to_dpoint.hh \
+mln/convert/to_p_array.hh \
+mln/convert/from_to.hxx \
+mln/convert/to_rgb.hh \
+mln/convert/essential.hh \
+mln/value/label.hh.bak \
+mln/value/float01_f.hh \
+mln/value/float01_16.hh \
+mln/value/lut_vec.hh \
+mln/value/glf.hh \
+mln/value/other.hh \
+mln/value/graylevel_f.hh \
+mln/value/aliases.hh \
+mln/value/label_16.hh \
+mln/value/ops.hh \
+mln/value/set.hh \
+mln/value/int_u_sat.hh \
+mln/value/float01_8.hh \
+mln/value/int_u8.hh \
+mln/value/equiv.hh \
+mln/value/internal/integer.hh \
+mln/value/internal/gray_f.hh \
+mln/value/internal/all.hh \
+mln/value/internal/value_like.hh \
+mln/value/internal/iterable_set.hh \
+mln/value/internal/encoding.hh \
+mln/value/internal/convert.hh \
+mln/value/internal/gray_.hh \
+mln/value/internal/essential.hh \
+mln/value/proxy.hh \
+mln/value/viter.hh \
+mln/value/graylevel.hh \
+mln/value/all.hh \
+mln/value/super_value.hh \
+mln/value/builtin/symbolics.hh \
+mln/value/builtin/ops.hh \
+mln/value/builtin/all.hh \
+mln/value/builtin/promotions.hh \
+mln/value/builtin/integers.hh \
+mln/value/builtin/floatings.hh \
+mln/value/builtin/essential.hh \
+mln/value/sign.hh \
+mln/value/hsi.hh \
+mln/value/interval.hh \
+mln/value/gl16.hh \
+mln/value/scalar.hh \
+mln/value/float01.hh \
+mln/value/cast.hh \
+mln/value/int_u.hh \
+mln/value/int_s8.hh \
+mln/value/int_s16.hh \
+mln/value/int_u16.hh \
+mln/value/label.hh \
+mln/value/rgb.hh \
+mln/value/stack.hh \
+mln/value/concept/integer.hh \
+mln/value/concept/structured.hh \
+mln/value/concept/built_in.hh \
+mln/value/concept/all.hh \
+mln/value/concept/scalar.hh \
+mln/value/concept/data.hh \
+mln/value/concept/floating.hh \
+mln/value/concept/symbolic.hh \
+mln/value/concept/vectorial.hh \
+mln/value/concept/essential.hh \
+mln/value/int_s.hh \
+mln/value/rgb8.hh \
+mln/value/int_s32.hh \
+mln/value/float01_.hh \
+mln/value/rgb16.hh \
+mln/value/int_u32.hh \
+mln/value/gl8.hh \
+mln/value/label_8.hh \
+mln/value/essential.hh \
+mln/accu/tuple.hh \
+mln/accu/min_h.hh \
+mln/accu/max.hh \
+mln/accu/lor.hh \
+mln/accu/rank.hh \
+mln/accu/transform_stop.hh \
+mln/accu/maj_h.hh \
+mln/accu/min_max.hh \
+mln/accu/internal/base.hh \
+mln/accu/transform_snake.hh \
+mln/accu/rank_high_quant.hh \
+mln/accu/count.hh \
+mln/accu/median_h.hh \
+mln/accu/all.hh \
+mln/accu/land_basic.hh \
+mln/accu/p.hh \
+mln/accu/transform.hh \
+mln/accu/median_alt.hh \
+mln/accu/volume.hh \
+mln/accu/sum.hh \
+mln/accu/height.hh \
+mln/accu/land.hh \
+mln/accu/take.hh \
+mln/accu/histo.hh \
+mln/accu/pair.hh \
+mln/accu/count_adjacent_vertices.hh \
+mln/accu/convolve.hh \
+mln/accu/v.hh \
+mln/accu/rank_bool.hh \
+mln/accu/min.hh \
+mln/accu/transform_directional.hh \
+mln/accu/compute.hh \
+mln/accu/mean.hh \
+mln/accu/lor_basic.hh \
+mln/accu/transform_diagonal.hh \
+mln/accu/nil.hh \
+mln/accu/bbox.hh \
+mln/accu/center.hh \
+mln/accu/line.hh \
+mln/accu/essential.hh \
+mln/accu/max_h.hh \
+mln/level/compare.hh \
+mln/level/memset_.hh \
+mln/level/transform_inplace.hh \
+mln/level/paste.spe.hh \
+mln/level/assign.spe.hh \
+mln/level/replace.hh \
+mln/level/memcpy_.hh \
+mln/level/apply.hh \
+mln/level/approx/all.hh \
+mln/level/approx/essential.hh \
+mln/level/approx/median.hh \
+mln/level/saturate.hh \
+mln/level/all.hh \
+mln/level/paste.hh \
+mln/level/fast_median.hh \
+mln/level/abs.hh \
+mln/level/fill_with_image.hh \
+mln/level/transform.hh \
+mln/level/fill_with_image.spe.hh \
+mln/level/fill_with_value.hh \
+mln/level/stretch.hh \
+mln/level/was.median.hh \
+mln/level/transform.spe.hh \
+mln/level/compute.hh \
+mln/level/fill_with_value.spe.hh \
+mln/level/convert.hh \
+mln/level/to_enc.hh \
+mln/level/apply.spe.hh \
+mln/level/naive/all.hh \
+mln/level/naive/essential.hh \
+mln/level/naive/median.hh \
+mln/level/sort_psites.hh \
+mln/level/update.hh \
+mln/level/fill.hh \
+mln/level/essential.hh \
+mln/level/assign.hh \
+mln/level/median.hh \
+mln/math/jacobi.hh \
+mln/math/max.hh \
+mln/math/sqr.hh \
+mln/math/all.hh \
+mln/math/sign.hh \
+mln/math/abs.hh \
+mln/math/diff_abs.hh \
+mln/math/round.hh \
+mln/math/min.hh \
+mln/math/sqrt.hh \
+mln/math/essential.hh \
+mln/math/round_sat.hh \
+mln/binarization/includes.hh \
+mln/binarization/all.hh \
+mln/binarization/binarization.hh \
+mln/binarization/threshold.hh \
+mln/binarization/essential.hh \
+mln/trait/site_set/props.hh \
+mln/trait/site_set/print.hh \
+mln/trait/promote.hh \
+mln/trait/solve_binary.hh \
+mln/trait/value_.hh \
+mln/trait/all.hh \
+mln/trait/value/all.hh \
+mln/trait/value/nature.hh \
+mln/trait/value/quant.hh \
+mln/trait/value/kind.hh \
+mln/trait/value/print.hh \
+mln/trait/value/essential.hh \
+mln/trait/images.hh \
+mln/trait/window/props.hh \
+mln/trait/window/print.hh \
+mln/trait/ch_value.hh \
+mln/trait/solve.hh \
+mln/trait/solve_unary.hh \
+mln/trait/op/postdec.hh \
+mln/trait/op/mod.hh \
+mln/trait/op/lor.hh \
+mln/trait/op/neq.hh \
+mln/trait/op/plus.hh \
+mln/trait/op/xor.hh \
+mln/trait/op/all.hh \
+mln/trait/op/geq.hh \
+mln/trait/op/uminus.hh \
+mln/trait/op/not.hh \
+mln/trait/op/times.hh \
+mln/trait/op/less.hh \
+mln/trait/op/decl.hh \
+mln/trait/op/ord.hh \
+mln/trait/op/and.hh \
+mln/trait/op/or.hh \
+mln/trait/op/predec.hh \
+mln/trait/op/minus.hh \
+mln/trait/op/div.hh \
+mln/trait/op/leq.hh \
+mln/trait/op/preinc.hh \
+mln/trait/op/greater.hh \
+mln/trait/op/postinc.hh \
+mln/trait/op/uplus.hh \
+mln/trait/op/essential.hh \
+mln/trait/op/eq.hh \
+mln/trait/concrete.hh \
+mln/trait/windows.hh \
+mln/trait/site_sets.hh \
+mln/trait/image_from_grid.hh \
+mln/trait/undef.hh \
+mln/trait/image/props.hh \
+mln/trait/image/print.hh \
+mln/trait/neighborhood.hh \
+mln/trait/essential.hh \
+mln/canvas/labeling.hh \
+mln/canvas/browsing/hyper_directional.hh \
+mln/canvas/browsing/snake_generic.hh \
+mln/canvas/browsing/backdiagonal2d.hh \
+mln/canvas/browsing/snake_vert.hh \
+mln/canvas/browsing/snake_fwd.hh \
+mln/canvas/browsing/all.hh \
+mln/canvas/browsing/diagonal2d.hh \
+mln/canvas/browsing/fwd.hh \
+mln/canvas/browsing/dir_struct_elt_incr_update.hh \
+mln/canvas/browsing/directional.hh \
+mln/canvas/browsing/essential.hh \
+mln/canvas/chamfer.hh \
+mln/canvas/distance_geodesic.hh \
+mln/canvas/all.hh \
+mln/canvas/distance_front.hh \
+mln/canvas/morpho/all.hh \
+mln/canvas/morpho/algebraic_union_find.hh \
+mln/canvas/morpho/essential.hh \
+mln/canvas/essential.hh \
+mln/metal/is_const.hh \
+mln/metal/none.hh \
+mln/metal/equal.hh \
+mln/metal/unptr.hh \
+mln/metal/not_equal.hh \
+mln/metal/is_ref.hh \
+mln/metal/ret.hh \
+mln/metal/unqualif.hh \
+mln/metal/is_not.hh \
+mln/metal/vec.hh \
+mln/metal/is.hh \
+mln/metal/bool.hh \
+mln/metal/all.hh \
+mln/metal/math/pow.hh \
+mln/metal/math/max.hh \
+mln/metal/math/all.hh \
+mln/metal/math/root.hh \
+mln/metal/math/sqrt.hh \
+mln/metal/mat.hh \
+mln/metal/is_not_const.hh \
+mln/metal/fix_return.hh \
+mln/metal/ands.hh \
+mln/metal/const.hh \
+mln/metal/is_unqualif.hh \
+mln/metal/unconst.hh \
+mln/metal/bexpr.hh \
+mln/metal/array2d.hh \
+mln/metal/is_not_a.hh \
+mln/metal/is_a.hh \
+mln/metal/array1d.hh \
+mln/metal/if.hh \
+mln/metal/unref.hh \
+mln/metal/array.hh \
+mln/metal/ref.hh \
+mln/metal/same_point.hh \
+mln/metal/int.hh \
+mln/metal/abort.hh \
+mln/metal/same_coord.hh \
+mln/metal/templated_by.hh \
+mln/metal/has_neighborhood.hh \
+mln/metal/goes_to.hh \
+mln/metal/is_not_ref.hh \
+mln/metal/converts_to.hh \
+mln/metal/essential.hh \
+mln/metal/array3d.hh \
+mln/algebra/vec.hh \
+mln/algebra/all.hh \
+mln/algebra/h_vec.hh \
+mln/algebra/mat.hh \
+mln/algebra/h_mat.hh \
+mln/algebra/quat.hh \
+mln/algebra/essential.hh \
+mln/linear/convolve_2x1d.hh \
+mln/linear/all.hh \
+mln/linear/ch_convolve.hh \
+mln/linear/gaussian.hh \
+mln/linear/convolve.hh \
+mln/linear/sobel_2d.hh \
+mln/linear/local/convolve.hh \
+mln/linear/lap.hh \
+mln/linear/convolve_directional.hh \
+mln/linear/log.hh \
+mln/linear/essential.hh \
+mln/morpho/thinning.hh \
+mln/morpho/meyer_wst.hh \
+mln/morpho/opening.hh \
+mln/morpho/includes.hh \
+mln/morpho/elementary/opening.hh \
+mln/morpho/elementary/gradient_internal.hh \
+mln/morpho/elementary/dilation.hh \
+mln/morpho/elementary/laplacian.hh \
+mln/morpho/elementary/all.hh \
+mln/morpho/elementary/gradient_external.hh \
+mln/morpho/elementary/like_ero_fun.hh \
+mln/morpho/elementary/gradient.hh \
+mln/morpho/elementary/like_ero_set.hh \
+mln/morpho/elementary/closing.hh \
+mln/morpho/elementary/top_hat.hh \
+mln/morpho/elementary/erosion.hh \
+mln/morpho/elementary/essential.hh \
+mln/morpho/thin_fit.hh \
+mln/morpho/skeleton_constrained.hh \
+mln/morpho/complementation.hh \
+mln/morpho/line_gradient.hh \
+mln/morpho/hit_or_miss.hh \
+mln/morpho/closing_height.hh \
+mln/morpho/plus.hh \
+mln/morpho/general.hh \
+mln/morpho/internal/elementary.hh \
+mln/morpho/contrast.hh \
+mln/morpho/opening_area.hh \
+mln/morpho/opening_height.hh \
+mln/morpho/thickening.hh \
+mln/morpho/dilation.hh \
+mln/morpho/laplacian.hh \
+mln/morpho/all.hh \
+mln/morpho/opening_attribute.hh \
+mln/morpho/opening_volume.hh \
+mln/morpho/closing_area_on_vertices.hh \
+mln/morpho/closing_volume.hh \
+mln/morpho/minus.hh \
+mln/morpho/gradient.hh \
+mln/morpho/tree/max.hh \
+mln/morpho/tree/compute_parent.hh \
+mln/morpho/tree/all.hh \
+mln/morpho/tree/utils.hh \
+mln/morpho/tree/data.hh \
+mln/morpho/tree/compute_attribute_image.hh \
+mln/morpho/opening_area_on_vertices.hh \
+mln/morpho/general.spe.hh \
+mln/morpho/min.hh \
+mln/morpho/closing.hh \
+mln/morpho/top_hat.hh \
+mln/morpho/erosion.hh \
+mln/morpho/Rd.hh \
+mln/morpho/closing_area.hh \
+mln/morpho/thick_miss.hh \
+mln/morpho/closing_attribute.hh \
+mln/morpho/rank_filter.hh \
+mln/morpho/essential.hh \
+mln/topo/n_face_iter.hh \
+mln/topo/face_iter.hh \
+mln/topo/is_simple_2d.hh \
+mln/topo/centered_iter_adapter.hh \
+mln/topo/internal/complex_set_iterator_base.hh \
+mln/topo/internal/complex_iterator_base.hh \
+mln/topo/internal/complex_relative_iterator_base.hh \
+mln/topo/internal/complex_relative_iterator_sequence.hh \
+mln/topo/algebraic_n_face.hh \
+mln/topo/attic/faces_iter.hh \
+mln/topo/adj_lower_dim_connected_n_face_iter.hh \
+mln/topo/n_face.hh \
+mln/topo/adj_lower_higher_face_iter.hh \
+mln/topo/all.hh \
+mln/topo/face_data.hh \
+mln/topo/static_n_face_iter.hh \
+mln/topo/face.hh \
+mln/topo/adj_m_face_iter.hh \
+mln/topo/complex.hh \
+mln/topo/adj_higher_face_iter.hh \
+mln/topo/adj_lower_face_iter.hh \
+mln/topo/complex_iterators.hh \
+mln/topo/center_only_iter.hh \
+mln/topo/adj_higher_dim_connected_n_face_iter.hh \
+mln/topo/algebraic_face.hh \
+mln/topo/n_faces_set.hh \
+mln/topo/essential.hh \
+mln/essential/1d.hh \
+mln/essential/routine.hh \
+mln/essential/3d.hh \
+mln/essential/2d.hh \
+mln/win/inter.hh \
+mln/win/backdiag2d.hh \
+mln/win/segment1d.hh \
+mln/win/cuboid3d.hh \
+mln/win/vline2d.hh \
+mln/win/octagon2d.hh \
+mln/win/all.hh \
+mln/win/multiple_size.hh \
+mln/win/cube3d.hh \
+mln/win/shift.hh \
+mln/win/sym.hh \
+mln/win/diff.hh \
+mln/win/multiple.hh \
+mln/win/diag2d.hh \
+mln/win/disk2d.hh \
+mln/win/rectangle2d.hh \
+mln/win/hline2d.hh \
+mln/win/line.hh \
+mln/win/essential.hh \
+mln/core/clock_neighb.hh \
+mln/core/pixter2d.hh \
+mln/core/def/low_quant_nbits.hh \
+mln/core/def/all.hh \
+mln/core/def/coordf.hh \
+mln/core/def/coord.hh \
+mln/core/def/essential.hh \
+mln/core/site_set/box.hh \
+mln/core/site_set/p_vertices.hh \
+mln/core/site_set/p_vaccess.hh \
+mln/core/site_set/p_if_piter.hh \
+mln/core/site_set/p_run_piter.hh \
+mln/core/site_set/p_key.hh \
+mln/core/site_set/p_double.hh \
+mln/core/site_set/p_complex_piter.hh \
+mln/core/site_set/p_complex.hh \
+mln/core/site_set/p_image.hh \
+mln/core/site_set/attic/p_complex_faces_piter.hh \
+mln/core/site_set/attic/p_faces_piter.hh \
+mln/core/site_set/p_priority.hh \
+mln/core/site_set/p_set_of.hh \
+mln/core/site_set/all.hh \
+mln/core/site_set/p_edges.hh \
+mln/core/site_set/box_piter.hh \
+mln/core/site_set/p_faces.hh \
+mln/core/site_set/p_set.hh \
+mln/core/site_set/p_queue.hh \
+mln/core/site_set/p_if.hh \
+mln/core/site_set/p_mutable_array_of.hh \
+mln/core/site_set/p_edges_psite.hh \
+mln/core/site_set/complex_psite.hh \
+mln/core/site_set/p_run.hh \
+mln/core/site_set/p_n_faces_piter.hh \
+mln/core/site_set/p_centered.hh \
+mln/core/site_set/p_bgraph.hh \
+mln/core/site_set/p_bgraph_piter.hh \
+mln/core/site_set/p_array.hh \
+mln/core/site_set/p_vertices_psite.hh \
+mln/core/site_set/status.txt \
+mln/core/site_set/p_line2d.hh \
+mln/core/site_set/p_queue_fast.hh \
+mln/core/site_set/p_graph_piter.hh \
+mln/core/site_set/essential.hh \
+mln/core/dpsites_piter.hh \
+mln/core/w_window.hh \
+mln/core/grids.hh \
+mln/core/dpoints_pixter.hh \
+mln/core/internal/graph_psite_base.hh \
+mln/core/internal/run_image.hh \
+mln/core/internal/pixel_impl.hh \
+mln/core/internal/site_set_base.hh \
+mln/core/internal/image_value_morpher.hh \
+mln/core/internal/site_iterator_base.hh \
+mln/core/internal/complex_neighborhood_base.hh \
+mln/core/internal/site_relative_iterator_base.hh \
+mln/core/internal/site_set_impl.hh \
+mln/core/internal/exact.hh \
+mln/core/internal/p_complex_piter_base.hh \
+mln/core/internal/neighb_niter_impl.hh \
+mln/core/internal/pixel_iterator_base.hh \
+mln/core/internal/classical_window_base.hh \
+mln/core/internal/data.hh \
+mln/core/internal/force_exact.hh \
+mln/core/internal/image_base.hh \
+mln/core/internal/check/image_fastest.hh \
+mln/core/internal/check/image_all.hh \
+mln/core/internal/fixme.hh \
+mln/core/internal/morpher_lvalue.hh \
+mln/core/internal/image_domain_morpher.hh \
+mln/core/internal/image_primary.hh \
+mln/core/internal/set_of.hh \
+mln/core/internal/complex_window_p_base.hh \
+mln/core/internal/graph_window_base.hh \
+mln/core/internal/piter_adaptor.hh \
+mln/core/internal/weighted_window_base.hh \
+mln/core/internal/neighborhood_base.hh \
+mln/core/internal/image_morpher.hh \
+mln/core/internal/coord_impl.hh \
+mln/core/internal/geom_bbox.hh \
+mln/core/internal/image_identity.hh \
+mln/core/internal/pseudo_site_base.hh \
+mln/core/internal/window_base.hh \
+mln/core/internal/box_impl.hh \
+mln/core/internal/site_set_iterator_base.hh \
+mln/core/contract.hh \
+mln/core/all.hh \
+mln/core/point.hh \
+mln/core/neighb.hh \
+mln/core/routine/initialize.hh \
+mln/core/routine/primary.hh \
+mln/core/routine/init.hh \
+mln/core/routine/ops.hh \
+mln/core/routine/all.hh \
+mln/core/routine/clone.hh \
+mln/core/routine/exact.hh \
+mln/core/routine/extend.hh \
+mln/core/routine/essential.hh \
+mln/core/trait/op_mult.hh \
+mln/core/trait/all.hh \
+mln/core/trait/pixter.hh \
+mln/core/trait/qlf_value.hh \
+mln/core/trait/essential.hh \
+mln/core/pixter1d.hh \
+mln/core/category.hh \
+mln/core/macros.hh \
+mln/core/box_runstart_piter.hh \
+mln/core/tags.hh \
+mln/core/dpoint.hh \
+mln/core/alias/dpoint2d_h.hh \
+mln/core/alias/p_run2d.hh \
+mln/core/alias/point3d.hh \
+mln/core/alias/neighb3d.hh \
+mln/core/alias/window3d.hh \
+mln/core/alias/neighb2d.hh \
+mln/core/alias/complex_image.hh \
+mln/core/alias/w_window1d_float.hh \
+mln/core/alias/neighb1d.hh \
+mln/core/alias/w_window2d_float.hh \
+mln/core/alias/w_window2d_int.hh \
+mln/core/alias/box1d.hh \
+mln/core/alias/box2d.hh \
+mln/core/alias/window1d.hh \
+mln/core/alias/point1d.hh \
+mln/core/alias/box3d.hh \
+mln/core/alias/dpoint3d.hh \
+mln/core/alias/complex_geometry.hh \
+mln/core/alias/w_window3d_float.hh \
+mln/core/alias/box2d_h.hh \
+mln/core/alias/point2d.hh \
+mln/core/alias/window2d.hh \
+mln/core/alias/p_runs2d.hh \
+mln/core/alias/point3df.hh \
+mln/core/alias/dpoint1d.hh \
+mln/core/alias/w_window3d_int.hh \
+mln/core/alias/dpoint2d.hh \
+mln/core/alias/w_window1d_int.hh \
+mln/core/alias/point2d_h.hh \
+mln/core/window.hh \
+mln/core/concept/site_proxy.hh \
+mln/core/concept/point_site.hh \
+mln/core/concept/box.hh \
+mln/core/concept/generalized_pixel.hh \
+mln/core/concept/graph.hh \
+mln/core/concept/iterator.hh \
+mln/core/concept/doc/point_site.hh \
+mln/core/concept/doc/box.hh \
+mln/core/concept/doc/generalized_pixel.hh \
+mln/core/concept/doc/iterator.hh \
+mln/core/concept/doc/image_fastest.hh \
+mln/core/concept/doc/image.hh \
+mln/core/concept/doc/value_set.hh \
+mln/core/concept/doc/weighted_window.hh \
+mln/core/concept/doc/pixel_iterator.hh \
+mln/core/concept/doc/value_iterator.hh \
+mln/core/concept/doc/dpoint.hh \
+mln/core/concept/doc/window.hh \
+mln/core/concept/doc/accumulator.hh \
+mln/core/concept/doc/site_set.hh \
+mln/core/concept/doc/object.hh \
+mln/core/concept/doc/neighborhood.hh \
+mln/core/concept/doc/point_iterator.hh \
+mln/core/concept/pseudo_site.hh \
+mln/core/concept/image.hh \
+mln/core/concept/value_set.hh \
+mln/core/concept/proxy.hh \
+mln/core/concept/site.hh \
+mln/core/concept/weighted_window.hh \
+mln/core/concept/gpoint.hh \
+mln/core/concept/site_iterator.hh \
+mln/core/concept/point.hh \
+mln/core/concept/literal.hh \
+mln/core/concept/pixel_iterator.hh \
+mln/core/concept/README \
+mln/core/concept/value_iterator.hh \
+mln/core/concept/meta_accumulator.hh \
+mln/core/concept/gdpoint.hh \
+mln/core/concept/regular_grid.hh \
+mln/core/concept/mesh.hh \
+mln/core/concept/dpoint.hh \
+mln/core/concept/function.hh \
+mln/core/concept/window.hh \
+mln/core/concept/value.hh \
+mln/core/concept/accumulator.hh \
+mln/core/concept/site_set.hh \
+mln/core/concept/proxy.hxx \
+mln/core/concept/object.hh \
+mln/core/concept/delta_point_site.hh \
+mln/core/concept/status.txt \
+mln/core/concept/neighborhood.hh \
+mln/core/concept/browsing.hh \
+mln/core/pixel.hh \
+mln/core/clock_neighb2d.hh \
+mln/core/pixter3d.hh \
+mln/core/image/obased_rle_encode.hh \
+mln/core/image/plain.hh \
+mln/core/image/graph_image.hh \
+mln/core/image/image3d.hh \
+mln/core/image/decorated_image.hh \
+mln/core/image/extension_ima.hh \
+mln/core/image/flat_image.hh \
+mln/core/image/complex_neighborhood_piter.hh \
+mln/core/image/tr_mesh.hh \
+mln/core/image/graph_elt_window.hh \
+mln/core/image/obased_rle_image.hh \
+mln/core/image/mono_obased_rle_image.hh \
+mln/core/image/interpolated.hh \
+mln/core/image/lazy_image.hh \
+mln/core/image/t_image.hh \
+mln/core/image/hexa_piter.hh \
+mln/core/image/value_enc_image.hh \
+mln/core/image/sub_image_if.hh \
+mln/core/image/all.hh \
+mln/core/image/mono_rle_image.hh \
+mln/core/image/complex_image.hh \
+mln/core/image/cast_image.hh \
+mln/core/image/rle_encode.hh \
+mln/core/image/complex_window_piter.hh \
+mln/core/image/tr_image.hh \
+mln/core/image/sub_image.hh \
+mln/core/image/rle_image.hh \
+mln/core/image/line_graph_elt_window.hh \
+mln/core/image/mono_rle_encode.hh \
+mln/core/image/bgraph_psite.hh \
+mln/core/image/sparse_image.hh \
+mln/core/image/bgraph_image.hh \
+mln/core/image/complex_neighborhoods.hh \
+mln/core/image/graph_window_piter.hh \
+mln/core/image/sparse_encode.hh \
+mln/core/image/safe.hh \
+mln/core/image/extension_fun.hh \
+mln/core/image/image1d.hh \
+mln/core/image/extension_val.hh \
+mln/core/image/image_if.hh \
+mln/core/image/hexa.hh \
+mln/core/image/extended.hh \
+mln/core/image/image2d_h.hh \
+mln/core/image/image2d.hh \
+mln/core/image/ch_piter.hh \
+mln/core/image/complex_windows.hh \
+mln/core/image/fi_adaptor.hh \
+mln/core/image/mono_obased_rle_encode.hh \
+mln/core/image/status.txt \
+mln/core/image/line_graph_image.hh \
+mln/core/image/value_encode.hh \
+mln/core/image/essential.hh \
+mln/core/a_point_of.hh \
+mln/core/var.hh \
+mln/core/essential.hh \
+mln/core/faces_psite.hh \
+mln/labeling/blobs.hh \
+mln/labeling/background.hh \
+mln/labeling/relabel.hh \
+mln/labeling/level.spe.hh \
+mln/labeling/all.hh \
+mln/labeling/level.hh \
+mln/labeling/flat_zones.hh \
+mln/labeling/foreground.hh \
+mln/labeling/regional_maxima.hh \
+mln/labeling/compute.hh \
+mln/labeling/regional_minima.hh \
+mln/labeling/essential.hh \
+mln/test/predicate.hh \
+mln/test/all.hh \
+mln/test/positive.hh \
+mln/test/essential.hh \
+mln/transform/distance_geodesic.hh \
+mln/transform/internal/all.hh \
+mln/transform/internal/distance_functor.hh \
+mln/transform/internal/influence_zone_functor.hh \
+mln/transform/all.hh \
+mln/transform/influence_zone_front.hh \
+mln/transform/distance_front.hh \
+mln/transform/influence_zone_geodesic.hh \
+mln/transform/essential.hh \
+mln/arith/includes.hh \
+mln/arith/min.spe.hh \
+mln/arith/plus.hh \
+mln/arith/revert.spe.hh \
+mln/arith/times.spe.hh \
+mln/arith/all.hh \
+mln/arith/times.hh \
+mln/arith/diff_abs.hh \
+mln/arith/minus.hh \
+mln/arith/min.hh \
+mln/arith/revert.hh \
+mln/arith/essential.hh \
+mln/io/pgm/load.hh \
+mln/io/pgm/all.hh \
+mln/io/pgm/save.hh \
+mln/io/ppm/load.hh \
+mln/io/ppm/all.hh \
+mln/io/ppm/save.hh \
+mln/io/pfm/load.hh \
+mln/io/pfm/all.hh \
+mln/io/pfm/save.hh \
+mln/io/all.hh \
+mln/io/pbm/load.hh \
+mln/io/pbm/all.hh \
+mln/io/pbm/save.hh \
+mln/io/pnm/max_component.hh \
+mln/io/pnm/load.hh \
+mln/io/pnm/load_header.hh \
+mln/io/pnm/all.hh \
+mln/io/pnm/macros.hh \
+mln/io/pnm/save.hh \
+mln/io/pnm/save_header.hh \
+mln/io/txt/all.hh \
+mln/io/txt/save.hh \
+mln/io/abort.hh \
+mln/io/fits/load.hh \
+mln/io/fits/all.hh \
+mln/io/off/load.hh \
+mln/io/off/all.hh \
+mln/io/off/save.hh \
+mln/io/essential.hh \
+mln/logical/includes.hh \
+mln/logical/and_not.hh \
+mln/logical/xor.hh \
+mln/logical/all.hh \
+mln/logical/not.hh \
+mln/logical/not.spe.hh \
+mln/logical/and.hh \
+mln/logical/or.hh \
+mln/logical/essential.hh \
+mln/norm/all.hh \
+mln/norm/l1.hh \
+mln/norm/l2.hh \
+mln/norm/linfty.hh \
+mln/norm/essential.hh \
+mln/debug/iota.hh \
+mln/debug/all.hh \
+mln/debug/println_with_border.hh \
+mln/debug/println.spe.hh \
+mln/debug/colorize.hh \
+mln/debug/draw_graph.hh \
+mln/debug/put_word.hh \
+mln/debug/println_with_border.spe.hh \
+mln/debug/format.hh \
+mln/debug/println.hh \
+mln/debug/iota.spe.hh \
+mln/debug/essential.hh \
+mln/estim/min_max.hh \
+mln/estim/all.hh \
+mln/estim/sum.hh \
+mln/estim/mean.hh \
+mln/estim/essential.hh \
+mln/set/uni.hh \
+mln/set/inter.hh \
+mln/set/all.hh \
+mln/set/get.hh \
+mln/set/sym_diff.hh \
+mln/set/has.hh \
+mln/set/is_subset_of.hh \
+mln/set/diff.hh \
+mln/set/compute.hh \
+mln/set/essential.hh \
+mln/border/adjust.hh \
+mln/border/duplicate.hh \
+mln/border/find.hh \
+mln/border/thickness.hh \
+mln/border/all.hh \
+mln/border/mirror.hh \
+mln/border/get.hh \
+mln/border/equalize.hh \
+mln/border/resize.hh \
+mln/border/fill.hh \
+mln/border/essential.hh \
+mln/subsampling/gaussian_subsampling.hh \
+mln/subsampling/all.hh \
+mln/subsampling/subsampling.hh \
+mln/subsampling/essential.hh
diff --git a/milena/doc/tutorial/Makefile.am b/milena/doc/tutorial/Makefile.am
index e2e864a..118b28e 100644
--- a/milena/doc/tutorial/Makefile.am
+++ b/milena/doc/tutorial/Makefile.am
@@ -35,3 +35,150 @@ clean-local:
rm -f *~ *blg *.lot
rm -f tutorial.pdf
rm -f *.haux *.hh *.html *.htoc
+
+EXTRA_DIST = \
+examples/cpp_issue.cc \
+examples/sub_image.cc \
+examples/sub_image_if.cc \
+examples/p_vaccess.cc \
+examples/win_multiple.cc \
+examples/image2d.cc \
+examples/image_plain.cc \
+examples/p_run.cc \
+examples/proxy.cc \
+examples/p_array.2.cc \
+examples/for_Z.cc \
+examples/image_if.cc \
+examples/p_key.cc \
+examples/p_mutable_array_of.cc \
+examples/p_queue.cc \
+examples/image_flat.cc \
+examples/p_image.cc \
+examples/box.cc \
+examples/p_line2d.cc \
+examples/p_array.cc \
+examples/accu.cc \
+examples/p_key.2.cc \
+examples/window.cc \
+examples/image_safe.cc \
+examples/vec.cc
+
+EXTRA_DIST += \
+figures/ima2d-rot-2.ppm \
+figures/logical-not-2.pbm \
+figures/fill-subdomain-2.ppm \
+figures/labeling-compute-2.ppm \
+figures/ima2d-rot-1.ppm \
+figures/fill-subdomain-3.ppm \
+figures/logical-not-1.pbm \
+figures/ima_save.pbm \
+figures/fill-subimage-cfun-1.ppm \
+figures/fill-subdomain-4.ppm \
+figures/logical-not-3.pbm \
+figures/labeling-compute-1.pbm \
+figures/fill-subdomain-1.pbm
+
+EXTRA_DIST += \
+outputs/win-create-1-display.txt \
+outputs/win-create-2.txt \
+outputs/accu-right-instanciation.txt \
+outputs/ima2d-1.txt \
+outputs/borderthickness.txt \
+outputs/ima-save.txt \
+outputs/fill-subimage-cfun.txt \
+outputs/labeling-compute.txt \
+outputs/parray-display-1.txt \
+outputs/fill-subdomain-shorter.txt \
+outputs/dpoint-1.txt \
+outputs/forall-piter.txt \
+outputs/predicate-1.txt \
+outputs/box2d-bbox.txt \
+outputs/graph-iter.txt \
+outputs/graph-output-1.txt \
+outputs/fill-call-1.txt \
+outputs/ima2d-rot.txt \
+outputs/paste-call-1.txt \
+outputs/fun-p2v-1.txt \
+outputs/labeling-compute-full.txt \
+outputs/estim-sites.txt \
+outputs/parray-append.txt \
+outputs/fill-subdomain.txt \
+outputs/ima-size.txt \
+outputs/logical-not.txt \
+outputs/ima2d-display-output-2.txt \
+outputs/ima2d-decl-2.txt \
+outputs/paste.txt \
+outputs/ima2d-6-clone.txt \
+outputs/ima2d-7.txt \
+outputs/parray-bbox.txt \
+outputs/domain-display.txt \
+outputs/ima2d-display-1.txt \
+outputs/win-create-1.txt \
+outputs/ima2d-display-2.txt \
+outputs/ima2d-display-output-1.txt \
+outputs/fill-part-image.txt \
+outputs/ima2d-3-output.txt \
+outputs/ima-has.txt \
+outputs/ima2d-5.txt \
+outputs/ima2d-4.txt \
+outputs/mln_var.txt \
+outputs/fill.txt \
+outputs/point-1.txt \
+outputs/extension-ignore.txt \
+outputs/graph-data.txt \
+outputs/ima2d-2.txt \
+outputs/ima2d-3.txt
+
+EXTRA_DIST += \
+samples/paste-call-1.cc \
+samples/dpoint-1.cc \
+samples/parray-append.cc \
+samples/ima-load.cc.raw \
+samples/ima2d-restricted-1.cc.raw \
+samples/graph-iter.cc \
+samples/labeling-compute.cc \
+samples/ima2d-7.cc \
+samples/ima2d-restricted-2.cc.raw \
+samples/fill-subimage-cfun.cc \
+samples/ima-save.cc \
+samples/point-1.cc \
+samples/box2d-bbox.cc \
+samples/forall-piter.cc \
+samples/ima-size.cc \
+samples/borderthickness.cc \
+samples/Makefile.in \
+samples/ima-has.cc \
+samples/win-create-1.cc \
+samples/accu-wrong-instanciation.cc.raw \
+samples/accu-right-instanciation.cc \
+samples/ima2d-5.cc \
+samples/fill-subdomain.cc \
+samples/fill-subdomain-shorter.cc \
+samples/ima2d-2.cc \
+samples/extension-ignore.cc \
+samples/Makefile.am \
+samples/parray-bbox.cc \
+samples/graph-data.cc \
+samples/mln_var.cc \
+samples/ima2d-4.cc \
+samples/predicate-1.cc \
+samples/ima2d-3.cc \
+samples/ima2d-1.cc \
+samples/estim-sites.cc \
+samples/ima2d-6-clone.cc \
+samples/ima2d-restricted-3.cc.raw \
+samples/logical-not.cc \
+samples/fun-p2v-1.cc \
+samples/ima2d-rot.cc \
+samples/fill-part-image.cc \
+samples/domain-display.cc \
+samples/paste.cc \
+samples/fill.cc \
+samples/fill-call-1.cc \
+samples/win-create-2.cc
+
+EXTRA_DIST += \
+tools/sample_utils.hh \
+tools/split_sample.sh \
+tools/todoxygen.sh
+
diff --git a/milena/mln/core/image/all.hh b/milena/mln/core/image/all.hh
index e8d1169..9025c12 100644
--- a/milena/mln/core/image/all.hh
+++ b/milena/mln/core/image/all.hh
@@ -54,10 +54,8 @@
# include <mln/core/image/extension_ima.hh>
# include <mln/core/image/extension_val.hh>
# include <mln/core/image/flat_image.hh>
-# include <mln/core/image/graph_elt_neighborhood.hh>
# include <mln/core/image/graph_elt_window.hh>
//# include <mln/core/image/graph_image.hh>
-# include <mln/core/image/graph_neighborhood_piter.hh>
# include <mln/core/image/graph_window_piter.hh>
//# include <mln/core/image/hexa.hh>
//# include <mln/core/image/hexa_piter.hh>
@@ -68,12 +66,7 @@
# include <mln/core/image/image_if.hh>
# include <mln/core/image/interpolated.hh>
# include <mln/core/image/lazy_image.hh>
-//# include <mln/core/image/line_graph_elt_neighborhood.hh>
-//# include <mln/core/image/line_graph_elt_window.hh>
-//# include <mln/core/image/line_graph_image.hh>
-//# include <mln/core/image/line_graph_neighborhood_piter.hh>
-//# include <mln/core/image/line_graph_psite.hh>
-//# include <mln/core/image/line_graph_window_piter.hh>
+# include <mln/core/image/line_graph_elt_window.hh>
//# include <mln/core/image/mono_obased_rle_encode.hh>
//# include <mln/core/image/mono_obased_rle_image.hh>
//# include <mln/core/image/mono_rle_encode.hh>
diff --git a/milena/mln/draw/essential.hh b/milena/mln/draw/essential.hh
index 3252203..c2a45fd 100644
--- a/milena/mln/draw/essential.hh
+++ b/milena/mln/draw/essential.hh
@@ -1,4 +1,4 @@
-// Copyright (C) 2008 EPITA Research and Development Laboratory
+// Copyright (C) 2008 EPITA Research and Development Laboratory (LRDE)
//
// This file is part of the Olena Library. This library is free
// software; you can redistribute it and/or modify it under the terms
@@ -28,13 +28,11 @@
#ifndef MLN_DRAW_ESSENTIAL_HH
# define MLN_DRAW_ESSENTIAL_HH
-/*! \file mln/draw/essential.hh
- *
- * \brief File that includes essential draw-related routines.
- */
+/// \file mln/draw/essential.hh
+///
+/// File that includes essential draw-related routines.
# include <mln/draw/box.hh>
-# include <mln/draw/label.hh>
# include <mln/draw/line.hh>
#endif // ! MLN_DRAW_ESSENTIAL_HH
diff --git a/milena/mln/essential/routine.hh b/milena/mln/essential/routine.hh
index 157b25d..819749b 100644
--- a/milena/mln/essential/routine.hh
+++ b/milena/mln/essential/routine.hh
@@ -55,7 +55,6 @@
# include <mln/math/essential.hh>
# include <mln/metal/essential.hh>
# include <mln/morpho/essential.hh>
-# include <mln/neighb/essential.hh>
# include <mln/norm/essential.hh>
# include <mln/pw/essential.hh>
# include <mln/registration/essential.hh>
diff --git a/milena/tests/unit_test/mln_core_def_low_quant_nbits.cc b/milena/tests/unit_test/mln_core_def_low_quant_nbits.cc
new file mode 100644
index 0000000..661bcbb
--- /dev/null
+++ b/milena/tests/unit_test/mln_core_def_low_quant_nbits.cc
@@ -0,0 +1,8 @@
+// Unit test for mln/core/def/low_quant_nbits.hh.
+// Generated file, do not modify.
+#include <mln/core/def/low_quant_nbits.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_core_internal_neighb_niter_impl.cc b/milena/tests/unit_test/mln_core_internal_neighb_niter_impl.cc
new file mode 100644
index 0000000..49e54d0
--- /dev/null
+++ b/milena/tests/unit_test/mln_core_internal_neighb_niter_impl.cc
@@ -0,0 +1,8 @@
+// Unit test for mln/core/internal/neighb_niter_impl.hh.
+// Generated file, do not modify.
+#include <mln/core/internal/neighb_niter_impl.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_p2b_big_chess.cc b/milena/tests/unit_test/mln_fun_p2b_big_chess.cc
new file mode 100644
index 0000000..20ec739
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_p2b_big_chess.cc
@@ -0,0 +1,8 @@
+// Unit test for mln/fun/p2b/big_chess.hh.
+// Generated file, do not modify.
+#include <mln/fun/p2b/big_chess.hh>
+
+int main()
+{
+ // Nothing.
+}
diff --git a/milena/tests/unit_test/mln_fun_p2p_mirror.cc b/milena/tests/unit_test/mln_fun_p2p_mirror.cc
new file mode 100644
index 0000000..f21f0a5
--- /dev/null
+++ b/milena/tests/unit_test/mln_fun_p2p_mirror.cc
@@ -0,0 +1,8 @@
+// Unit test for mln/fun/p2p/mirror.hh.
+// Generated file, do not modify.
+#include <mln/fun/p2p/mirror.hh>
+
+int main()
+{
+ // Nothing.
+}
--
1.5.6.5
1
0
https://svn.lrde.epita.fr/svn/oln/trunk/milena/sandbox
Index: ChangeLog
from Ugo Jardonnet <ugo.jardonnet(a)lrde.epita.fr>
Add n_cmpt4 : version without util::set.
* jardonnet/n_cmpt/n_cmpt3.hh: Minor fix for test.
* jardonnet/n_cmpt/n_cmpt3.cc: Add 1d test.
* jardonnet/n_cmpt/n_cmpt4.hh: New version without util::set.
* jardonnet/n_cmpt/n_cmpt4.cc: New main.
* jardonnet/n_cmpt/Makefile: Add n_cmpt4 rules.
* jardonnet/n_cmpt/tiny_seg15.pgm: New.
* jardonnet/n_cmpt/seg15.pgm: New.
Makefile | 7 +
n_cmpt3.cc | 8 +-
n_cmpt3.hh | 37 ++++++----
n_cmpt4.cc | 48 +++++++++++++
n_cmpt4.hh | 208 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
seg15.pgm | 5 +
tiny_seg15.pgm | 5 +
7 files changed, 304 insertions(+), 14 deletions(-)
Index: jardonnet/n_cmpt/n_cmpt3.hh
--- jardonnet/n_cmpt/n_cmpt3.hh (revision 3002)
+++ jardonnet/n_cmpt/n_cmpt3.hh (working copy)
@@ -100,9 +100,10 @@
initialize(volume_set, min_v);
// number of minima
- int cmpts = label;
+ unsigned cmpts = label;
- std::cout << "Nb of regionnal minima : " << cmpts << std::endl;
+ if (lambda > cmpts)
+ std::cout << "warning : lambda value is to hight." << std::endl;
// prepare union find
typedef mln_psite(V) P;
@@ -122,13 +123,18 @@
volume_set(p).insert(min_v(p));
}
}
+
+ std::cout << "cmpts | volume_set | " << std::endl;
+ std::cout << cmpts << " : ";
debug::println(volume_set);
+ std::cout << std::endl;
// union find sur volume
mln_fwd_piter(S) p(sp);
mln_niter(N) n(nbh, p);
for_all(p)
{
+ std::cout << p << std::endl;
//if (volume(p) > lambda)
// goto step2;
for_all(n)
@@ -141,18 +147,29 @@
{
// One cmpt less if
if (volume(r) != volume(p)) // r and p have differerent volumes
- if (not volume_set(p).is_empty()) // r already belong to a cmpt
+ if (not volume_set(p).is_empty()) // p already belong to a cmpt
if (volume_set(p) != volume_set(r)) // cmpt r and p are different
- if (cmpts > lambda) // union is still alowed
+ {
+ if (cmpts >= lambda) // unions still allowed
cmpts--;
+ }
+ else
+ {
+ // should not happen since we test that (r != p)
+ std::cout << "IT HAPPEND !!!!!!!!!!!!!!!!!!!" << std::endl;
+ exit(42);
+ }
- if (cmpts > lambda ||
+ if (cmpts >= lambda ||
volume(r) == volume(p) ||
volume_set(p).is_empty())
{
parent(r) = p;
// propagate set
volume_set(p).insert(volume_set(r));
+
+ std::cout << "volume " << volume(p) << " - " << cmpts << " : " << std::endl;
+ debug::println(volume_set);
}
}
}
@@ -160,9 +177,9 @@
deja_vu(p) = true;
}
- step2:
- debug::println(volume_set);
- std::cout << "Nb cmpts after processing : " << cmpts << std::endl;
+// step2:
+ std::cout << std::endl;
+ std::cout << "cmpts : " << cmpts << std::endl;
// second pass
I output(ima.domain());
@@ -175,10 +192,6 @@
output(p) = output(parent(p));
}
- std::cout << "/output/" << std::endl;
- debug::println(output);
- assert(output != input);
-
return output;
}
Index: jardonnet/n_cmpt/n_cmpt4.hh
--- jardonnet/n_cmpt/n_cmpt4.hh (revision 0)
+++ jardonnet/n_cmpt/n_cmpt4.hh (revision 0)
@@ -0,0 +1,208 @@
+// Copyright (C) 2008 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+#ifndef MLN_N_CMPT3_HH
+# define MLN_N_CMPT3_HH
+
+# include <mln/labeling/regional_minima.hh>
+# include <mln/core/alias/neighb2d.hh>
+# include <mln/util/set.hh>
+
+# include <mln/debug/println.hh>
+
+# include <mln/accu/volume.hh>
+# include <mln/morpho/tree/data.hh>
+# include <mln/morpho/tree/compute_attribute_image.hh>
+
+namespace mln
+{
+
+ namespace n_cmpt
+ {
+
+ template < typename I >
+ void n_cmpt3(const I& (((((((ima))))))));
+
+# ifndef MLN_INCLUDE_ONLY
+
+ template <typename I>
+ inline
+ mln_psite(I)
+ find_root(I& parent,
+ const mln_psite(I)& x)
+ {
+ if (parent(x) == x)
+ return x;
+ else
+ return parent(x) = find_root(parent, parent(x));
+ }
+
+ template < typename I, typename N>
+ I
+ n_cmpt3(const I& ima, const N& nbh,
+ unsigned lambda)
+ {
+ unsigned label;
+
+ std::cout << "/ima/" << std::endl;
+ debug::println(ima);
+ /*
+ // get /ima/ regional minima
+ mln_ch_value(I, unsigned) min = labeling::regional_minima(ima, nbh, label);
+ std::cout << "/ima/ regional minima" << std::endl;
+ debug::println(min);
+*/
+ // compute volume image
+ typedef p_array<mln_psite(I)> S;
+ typedef mln_ch_value(I,unsigned) V;
+ typedef accu::volume<I> A;
+
+ S sp = level::sort_psites_decreasing(ima);
+ morpho::tree::data<I,S> t(ima, sp, nbh);
+ V volume = morpho::tree::compute_attribute_image(A(), t);
+ sp = level::sort_psites_increasing(volume);
+ std::cout << "/volume/" << std::endl;
+ debug::println(volume);
+
+ // get /volume/ regional minima
+ mln_ch_value(I, unsigned) min_v = labeling::regional_minima(volume, nbh, label);
+ std::cout << "/volume/ regional minima" << std::endl;
+ debug::println(min_v);
+
+ // tester minima de ima == minima de attr
+ //mln_assertion(min == min_v);
+
+ mln_ch_value(I, bool) fused;
+ initialize(fused, volume);
+ mln::level::fill(fused, false);
+
+ // number of minima
+ unsigned cmpts = label;
+
+ if (lambda > cmpts)
+ std::cout << "warning : lambda value is to hight." << std::endl;
+
+ // prepare union find
+ typedef mln_psite(V) P;
+ //data
+ mln_ch_value(V, accu::volume<V>) data(volume.domain());
+ //deja_vu
+ mln_ch_value(V, bool) deja_vu(volume.domain());
+ mln::level::fill(deja_vu, false);
+ //parent
+ mln_ch_value(V, P) parent(volume.domain());
+ {
+ mln_fwd_piter(S) p(sp);
+ for_all(p)
+ {
+ parent(p) = p;
+ if (min_v(p) != 0) // p in a reg min of the attribute image
+ fused(p) = true; // ok
+ }
+ }
+
+ std::cout << "cmpts | volume_set | " << std::endl;
+ std::cout << cmpts << " : ";
+ std::cout << std::endl;
+
+ // union find sur volume
+ mln_fwd_piter(S) p(sp);
+ mln_niter(N) n(nbh, p);
+ for_all(p)
+ {
+ std::cout << p << std::endl;
+ //if (volume(p) > lambda)
+ // goto step2;
+ for_all(n)
+ {
+ if (volume.domain().has(n) && deja_vu(n))
+ {
+ //do_union(n, p);
+ P r = find_root(parent, n);
+ if (r != p)
+ {
+ // One cmpt less if
+ if (volume(r) != volume(p)) // r and p have differerent volumes
+ if (fused(p)) // p already belong to a cmpt (fused for an another n)
+ if (cmpts >= lambda) // union is still alowed
+ cmpts--;
+
+ if (cmpts >= lambda ||
+ volume(r) == volume(p) ||
+ not fused(p))
+ {
+ parent(r) = p;
+ // propagate set
+ fused(p) = true;
+
+ //min_v(p) = min_v(r); //FIXME: fusion may happend with a non minima value
+
+ fused(n) = true; // We cannot mark minima at init ! ... ?
+
+ std::cout << "volume " << volume(p) << " - " << cmpts << std::endl;
+ debug::println(fused);
+ }
+ }
+ }
+ }
+ deja_vu(p) = true;
+ }
+
+// step2:
+ std::cout << std::endl;
+ std::cout << "cmpts : " << cmpts << std::endl;
+
+ // second pass
+ I output(ima.domain());
+ {
+ mln_bkd_piter(S) p(sp);
+ for_all(p)
+ if (parent(p) == p) // p is root.
+ {
+ //FIXME: if minimas have same values. Components are not visible.
+ //Using min_v instead of ima does not really fix it.
+ //see propagation of min_v values.
+ //Maybe this is only a part of the problem:
+ // n_cmpt4 claims that n components remain,
+ // which is visually false.
+ output(p) = ima(p); //(p[0] + p[1]) * 10;
+ }
+ else
+ output(p) = output(parent(p));
+ }
+
+ return output;
+ }
+
+ } // end of namespace n_cmpt
+
+# endif // ! MLN_INCLUDE_ONLY
+
+} // end of namespace mln
+
+#endif /* MLN_N_CMPT3_HH */
+
Index: jardonnet/n_cmpt/seg15.pgm
--- jardonnet/n_cmpt/seg15.pgm (revision 0)
+++ jardonnet/n_cmpt/seg15.pgm (revision 0)
@@ -0,0 +1,5 @@
+P5
+# CREATOR: GIMP PNM Filter Version 1.1
+16 16
+255
+������������Ȯ��������������Ȯ��������������Ȯ��������������Ȯ��������������Ȯ������������Ȯ�����������������������������������җ��������������җ��������������җ�dd�����������җ�dd�����������Ǘ�ggg�������������ggg�������������gggg������������gggg����������
\ No newline at end of file
Index: jardonnet/n_cmpt/n_cmpt3.cc
--- jardonnet/n_cmpt/n_cmpt3.cc (revision 3002)
+++ jardonnet/n_cmpt/n_cmpt3.cc (working copy)
@@ -6,6 +6,7 @@
#include <mln/value/int_u8.hh>
#include <mln/make/image.hh>
+#include <mln/core/alias/neighb1d.hh>
#include <mln/io/pgm/load.hh>
#include <mln/io/pgm/save.hh>
@@ -34,9 +35,12 @@
io::pgm::load(ima, argv[1]);
unsigned lambda = atoi(argv[2]);
- int_u8 tab[] = {2,3,1,0,2,3,2,2,1};
+ int_u8 tab[] = {2,3,1,0,2,3,4,5,1,1,0,5,6,8,7,1,1,2,3,4};
image1d<int_u8> ima1= make::image(tab);
- io::pgm::save(n_cmpt::n_cmpt3(ima1, c4(), lambda),
+ std::cout << "/output/" << std::endl;
+ //debug::println(n_cmpt::n_cmpt3(ima1, c2(), lambda));
+
+ io::pgm::save(n_cmpt::n_cmpt3(ima, c4(), lambda),
"out.pgm");
}
Index: jardonnet/n_cmpt/n_cmpt4.cc
--- jardonnet/n_cmpt/n_cmpt4.cc (revision 0)
+++ jardonnet/n_cmpt/n_cmpt4.cc (revision 0)
@@ -0,0 +1,48 @@
+
+#include <iostream>
+
+#include <mln/core/image/image2d.hh>
+#include <mln/core/alias/neighb2d.hh>
+#include <mln/value/int_u8.hh>
+
+#include <mln/make/image.hh>
+#include <mln/core/alias/neighb1d.hh>
+
+#include <mln/io/pgm/load.hh>
+#include <mln/io/pgm/save.hh>
+
+#include "n_cmpt4.hh"
+
+using namespace mln;
+using namespace mln::value;
+
+bool usage(int argc, char ** argv)
+{
+ if (argc != 3)
+ {
+ std::cout << argv[0] << " ima.pgm lambda" << std::endl;
+ return false;
+ }
+ return true;
+}
+
+int main(int argc, char ** argv)
+{
+ if (not usage(argc,argv))
+ return 1;
+
+ image2d<int_u8> ima;
+ io::pgm::load(ima, argv[1]);
+ unsigned lambda = atoi(argv[2]);
+
+ ima(point2d(0,3)) = 106;
+
+ int_u8 tab[] = {2,3,1,0,2,3,4,5,1,1,0,5,6,8,7,1,1,2,3,4};
+ image1d<int_u8> ima1= make::image(tab);
+
+ // std::cout << "/output/" << std::endl;
+ // debug::println(n_cmpt::n_cmpt3(ima1, c2(), lambda));
+
+ io::pgm::save(n_cmpt::n_cmpt3(ima, c4(), lambda),
+ "out.pgm");
+}
Index: jardonnet/n_cmpt/tiny_seg15.pgm
--- jardonnet/n_cmpt/tiny_seg15.pgm (revision 0)
+++ jardonnet/n_cmpt/tiny_seg15.pgm (revision 0)
@@ -0,0 +1,5 @@
+P5
+# CREATOR: GIMP PNM Filter Version 1.1
+16 16
+255
+�����������Ȱ�n��{�����������u=Uhx�����׸����EZIgv������ټ��\S�Mmv����������V��Opv����]a����e��Opv��U<:o�v?$����pz�W60az�j-)��Z�q��@1IsFiA,8��ft��E5?OjqmH.Hj��u�dRGKV���71bf��o�\SXXAp�O%7fc���RKgW=d�yH:RU�m��I;WhIx��VY|�[��H6LFX����k�jV��D@JAp�����flUO
\ No newline at end of file
Index: jardonnet/n_cmpt/Makefile
--- jardonnet/n_cmpt/Makefile (revision 3002)
+++ jardonnet/n_cmpt/Makefile (working copy)
@@ -7,6 +7,9 @@
n_cmpt3: n_cmpt3.hh n_cmpt3.cc
g++ -I../../.. -Wall -W -Wextra n_cmpt3.cc -DNDEBUG -O1 -o n_cmpt3
+n_cmpt4: n_cmpt4.hh n_cmpt4.cc
+ g++ -I../../.. -Wall -W -Wextra n_cmpt4.cc -DNDEBUG -O1 -o n_cmpt4
+
debug: n_cmpt.hh n_cmpt.cc
g++ -I../../.. -Wall -W -Wextra n_cmpt.cc -g -g3 -o n_cmpt
@@ -15,3 +18,7 @@
debug3: n_cmpt3.hh n_cmpt3.cc
g++ -I../../.. -Wall -W -Wextra n_cmpt3.cc -g -g3 -o n_cmpt3
+
+debug4: n_cmpt4.hh n_cmpt4.cc
+ g++ -I../../.. -Wall -W -Wextra n_cmpt4.cc -g -g4 -o n_cmpt4
+
Index: jardonnet/n_cmpt/check/test.pgm
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
1
0
* milena/tests/unit_test/Makefile.am: Update.
* milena/tests/unit_test/mln_convert_to_tiles.cc,
* milena/tests/unit_test/mln_core_image_graph_neighborhood_piter.cc,
* milena/tests/unit_test/mln_core_image_line_graph_elt_piter.cc,
* milena/tests/unit_test/mln_core_image_line_graph_neighborhood_piter.cc,
* milena/tests/unit_test/mln_core_image_line_graph_window_piter.cc,
* milena/tests/unit_test/mln_core_image_translate_image.cc,
* milena/tests/unit_test/mln_display_color_pretty.cc,
* milena/tests/unit_test/mln_display_remove.cc,
* milena/tests/unit_test/mln_display_save.cc,
* milena/tests/unit_test/mln_display_save_and_show.cc,
* milena/tests/unit_test/mln_display_show.cc,
* milena/tests/unit_test/mln_draw_label.cc,
* milena/tests/unit_test/mln_morpho_dilation_fast.cc,
* milena/tests/unit_test/mln_morpho_erosion_fast.cc,
* milena/tests/unit_test/mln_neighb_all.cc,
* milena/tests/unit_test/mln_neighb_essential.cc,
* milena/tests/unit_test/mln_neighb_get.cc,
* milena/tests/unit_test/mln_neighb_image.cc: remove.
---
milena/ChangeLog | 27 ++++++++++++-
milena/tests/unit_test/Makefile.am | 44 ++++----------------
milena/tests/unit_test/mln_convert_to_tiles.cc | 8 ----
.../mln_core_image_graph_neighborhood_piter.cc | 8 ----
.../mln_core_image_line_graph_elt_piter.cc | 8 ----
...mln_core_image_line_graph_neighborhood_piter.cc | 8 ----
.../mln_core_image_line_graph_window_piter.cc | 8 ----
.../unit_test/mln_core_image_translate_image.cc | 8 ----
milena/tests/unit_test/mln_display_color_pretty.cc | 8 ----
milena/tests/unit_test/mln_display_remove.cc | 8 ----
milena/tests/unit_test/mln_display_save.cc | 8 ----
.../tests/unit_test/mln_display_save_and_show.cc | 8 ----
milena/tests/unit_test/mln_display_show.cc | 8 ----
milena/tests/unit_test/mln_draw_label.cc | 8 ----
milena/tests/unit_test/mln_morpho_dilation_fast.cc | 8 ----
milena/tests/unit_test/mln_morpho_erosion_fast.cc | 8 ----
milena/tests/unit_test/mln_neighb_all.cc | 8 ----
milena/tests/unit_test/mln_neighb_essential.cc | 8 ----
milena/tests/unit_test/mln_neighb_get.cc | 8 ----
milena/tests/unit_test/mln_neighb_image.cc | 8 ----
20 files changed, 34 insertions(+), 181 deletions(-)
delete mode 100644 milena/tests/unit_test/mln_convert_to_tiles.cc
delete mode 100644 milena/tests/unit_test/mln_core_image_graph_neighborhood_piter.cc
delete mode 100644 milena/tests/unit_test/mln_core_image_line_graph_elt_piter.cc
delete mode 100644 milena/tests/unit_test/mln_core_image_line_graph_neighborhood_piter.cc
delete mode 100644 milena/tests/unit_test/mln_core_image_line_graph_window_piter.cc
delete mode 100644 milena/tests/unit_test/mln_core_image_translate_image.cc
delete mode 100644 milena/tests/unit_test/mln_display_color_pretty.cc
delete mode 100644 milena/tests/unit_test/mln_display_remove.cc
delete mode 100644 milena/tests/unit_test/mln_display_save.cc
delete mode 100644 milena/tests/unit_test/mln_display_save_and_show.cc
delete mode 100644 milena/tests/unit_test/mln_display_show.cc
delete mode 100644 milena/tests/unit_test/mln_draw_label.cc
delete mode 100644 milena/tests/unit_test/mln_morpho_dilation_fast.cc
delete mode 100644 milena/tests/unit_test/mln_morpho_erosion_fast.cc
delete mode 100644 milena/tests/unit_test/mln_neighb_all.cc
delete mode 100644 milena/tests/unit_test/mln_neighb_essential.cc
delete mode 100644 milena/tests/unit_test/mln_neighb_get.cc
delete mode 100644 milena/tests/unit_test/mln_neighb_image.cc
diff --git a/milena/ChangeLog b/milena/ChangeLog
index 4bfc986..b32ac8e 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,4 +1,29 @@
-2008-12-05 Guillaume Lazzara <z(a)lrde.epita.fr>
+2008-12-06 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Update unit tests.
+
+ * milena/tests/unit_test/Makefile.am: Update.
+
+ * milena/tests/unit_test/mln_convert_to_tiles.cc,
+ * milena/tests/unit_test/mln_core_image_graph_neighborhood_piter.cc,
+ * milena/tests/unit_test/mln_core_image_line_graph_elt_piter.cc,
+ * milena/tests/unit_test/mln_core_image_line_graph_neighborhood_piter.cc,
+ * milena/tests/unit_test/mln_core_image_line_graph_window_piter.cc,
+ * milena/tests/unit_test/mln_core_image_translate_image.cc,
+ * milena/tests/unit_test/mln_display_color_pretty.cc,
+ * milena/tests/unit_test/mln_display_remove.cc,
+ * milena/tests/unit_test/mln_display_save.cc,
+ * milena/tests/unit_test/mln_display_save_and_show.cc,
+ * milena/tests/unit_test/mln_display_show.cc,
+ * milena/tests/unit_test/mln_draw_label.cc,
+ * milena/tests/unit_test/mln_morpho_dilation_fast.cc,
+ * milena/tests/unit_test/mln_morpho_erosion_fast.cc,
+ * milena/tests/unit_test/mln_neighb_all.cc,
+ * milena/tests/unit_test/mln_neighb_essential.cc,
+ * milena/tests/unit_test/mln_neighb_get.cc,
+ * milena/tests/unit_test/mln_neighb_image.cc: remove.
+
+2008-12-06 Guillaume Lazzara <z(a)lrde.epita.fr>
Make milena/tools compile.
diff --git a/milena/tests/unit_test/Makefile.am b/milena/tests/unit_test/Makefile.am
index ebd8c53..e229867 100644
--- a/milena/tests/unit_test/Makefile.am
+++ b/milena/tests/unit_test/Makefile.am
@@ -36,7 +36,6 @@ mln_geom_max_sli\
mln_draw_box\
mln_draw_all\
mln_draw_plot\
-mln_draw_label\
mln_draw_line\
mln_draw_essential\
mln_pw_image\
@@ -45,10 +44,6 @@ mln_pw_value\
mln_pw_cst\
mln_pw_var\
mln_pw_essential\
-mln_neighb_image\
-mln_neighb_all\
-mln_neighb_get\
-mln_neighb_essential\
mln_literal_zero\
mln_literal_ops\
mln_literal_origin\
@@ -151,12 +146,7 @@ mln_make_w_window3d_int\
mln_make_essential\
mln_make_w_window1d_int\
mln_make_point2d_h\
-mln_display_remove\
mln_display_all\
-mln_display_color_pretty\
-mln_display_save\
-mln_display_save_and_show\
-mln_display_show\
mln_display_essential\
mln_extension_adjust\
mln_extension_duplicate\
@@ -168,7 +158,9 @@ mln_extension_essential\
mln_fun_p2b_chess\
mln_fun_p2b_all\
mln_fun_p2b_has\
+mln_fun_p2b_big_chess\
mln_fun_p2b_essential\
+mln_fun_p2p_mirror\
mln_fun_x2p_closest_point\
mln_fun_x2p_all\
mln_fun_x2p_essential\
@@ -238,7 +230,6 @@ mln_convert_to_upper_window\
mln_convert_to_image\
mln_convert_to_fun\
mln_convert_all\
-mln_convert_to_tiles\
mln_convert_to_window\
mln_convert_from_to\
mln_convert_to_std_set\
@@ -567,7 +558,6 @@ mln_morpho_hit_or_miss\
mln_morpho_closing_height\
mln_morpho_plus\
mln_morpho_general\
-mln_morpho_erosion_fast\
mln_morpho_internal_elementary\
mln_morpho_contrast\
mln_morpho_opening_area\
@@ -578,7 +568,6 @@ mln_morpho_laplacian\
mln_morpho_all\
mln_morpho_opening_attribute\
mln_morpho_opening_volume\
-mln_morpho_dilation_fast\
mln_morpho_closing_area_on_vertices\
mln_morpho_closing_volume\
mln_morpho_minus\
@@ -652,6 +641,7 @@ mln_win_line\
mln_win_essential\
mln_core_clock_neighb\
mln_core_pixter2d\
+mln_core_def_low_quant_nbits\
mln_core_def_all\
mln_core_def_coordf\
mln_core_def_coord\
@@ -706,6 +696,7 @@ mln_core_internal_site_relative_iterator_base\
mln_core_internal_site_set_impl\
mln_core_internal_exact\
mln_core_internal_p_complex_piter_base\
+mln_core_internal_neighb_niter_impl\
mln_core_internal_pixel_iterator_base\
mln_core_internal_classical_window_base\
mln_core_internal_data\
@@ -839,7 +830,6 @@ mln_core_clock_neighb2d\
mln_core_pixter3d\
mln_core_image_obased_rle_encode\
mln_core_image_plain\
-mln_core_image_translate_image\
mln_core_image_graph_image\
mln_core_image_image3d\
mln_core_image_decorated_image\
@@ -851,7 +841,6 @@ mln_core_image_graph_elt_window\
mln_core_image_obased_rle_image\
mln_core_image_mono_obased_rle_image\
mln_core_image_interpolated\
-mln_core_image_graph_neighborhood_piter\
mln_core_image_lazy_image\
mln_core_image_t_image\
mln_core_image_hexa_piter\
@@ -881,10 +870,7 @@ mln_core_image_extension_val\
mln_core_image_image_if\
mln_core_image_hexa\
mln_core_image_extended\
-mln_core_image_line_graph_elt_piter\
mln_core_image_image2d_h\
-mln_core_image_line_graph_neighborhood_piter\
-mln_core_image_line_graph_window_piter\
mln_core_image_image2d\
mln_core_image_ch_piter\
mln_core_image_complex_windows\
@@ -1045,7 +1031,6 @@ mln_geom_max_sli_SOURCES = mln_geom_max_sli.cc
mln_draw_box_SOURCES = mln_draw_box.cc
mln_draw_all_SOURCES = mln_draw_all.cc
mln_draw_plot_SOURCES = mln_draw_plot.cc
-mln_draw_label_SOURCES = mln_draw_label.cc
mln_draw_line_SOURCES = mln_draw_line.cc
mln_draw_essential_SOURCES = mln_draw_essential.cc
mln_pw_image_SOURCES = mln_pw_image.cc
@@ -1054,10 +1039,6 @@ mln_pw_value_SOURCES = mln_pw_value.cc
mln_pw_cst_SOURCES = mln_pw_cst.cc
mln_pw_var_SOURCES = mln_pw_var.cc
mln_pw_essential_SOURCES = mln_pw_essential.cc
-mln_neighb_image_SOURCES = mln_neighb_image.cc
-mln_neighb_all_SOURCES = mln_neighb_all.cc
-mln_neighb_get_SOURCES = mln_neighb_get.cc
-mln_neighb_essential_SOURCES = mln_neighb_essential.cc
mln_literal_zero_SOURCES = mln_literal_zero.cc
mln_literal_ops_SOURCES = mln_literal_ops.cc
mln_literal_origin_SOURCES = mln_literal_origin.cc
@@ -1160,12 +1141,7 @@ mln_make_w_window3d_int_SOURCES = mln_make_w_window3d_int.cc
mln_make_essential_SOURCES = mln_make_essential.cc
mln_make_w_window1d_int_SOURCES = mln_make_w_window1d_int.cc
mln_make_point2d_h_SOURCES = mln_make_point2d_h.cc
-mln_display_remove_SOURCES = mln_display_remove.cc
mln_display_all_SOURCES = mln_display_all.cc
-mln_display_color_pretty_SOURCES = mln_display_color_pretty.cc
-mln_display_save_SOURCES = mln_display_save.cc
-mln_display_save_and_show_SOURCES = mln_display_save_and_show.cc
-mln_display_show_SOURCES = mln_display_show.cc
mln_display_essential_SOURCES = mln_display_essential.cc
mln_extension_adjust_SOURCES = mln_extension_adjust.cc
mln_extension_duplicate_SOURCES = mln_extension_duplicate.cc
@@ -1177,7 +1153,9 @@ mln_extension_essential_SOURCES = mln_extension_essential.cc
mln_fun_p2b_chess_SOURCES = mln_fun_p2b_chess.cc
mln_fun_p2b_all_SOURCES = mln_fun_p2b_all.cc
mln_fun_p2b_has_SOURCES = mln_fun_p2b_has.cc
+mln_fun_p2b_big_chess_SOURCES = mln_fun_p2b_big_chess.cc
mln_fun_p2b_essential_SOURCES = mln_fun_p2b_essential.cc
+mln_fun_p2p_mirror_SOURCES = mln_fun_p2p_mirror.cc
mln_fun_x2p_closest_point_SOURCES = mln_fun_x2p_closest_point.cc
mln_fun_x2p_all_SOURCES = mln_fun_x2p_all.cc
mln_fun_x2p_essential_SOURCES = mln_fun_x2p_essential.cc
@@ -1247,7 +1225,6 @@ mln_convert_to_upper_window_SOURCES = mln_convert_to_upper_window.cc
mln_convert_to_image_SOURCES = mln_convert_to_image.cc
mln_convert_to_fun_SOURCES = mln_convert_to_fun.cc
mln_convert_all_SOURCES = mln_convert_all.cc
-mln_convert_to_tiles_SOURCES = mln_convert_to_tiles.cc
mln_convert_to_window_SOURCES = mln_convert_to_window.cc
mln_convert_from_to_SOURCES = mln_convert_from_to.cc
mln_convert_to_std_set_SOURCES = mln_convert_to_std_set.cc
@@ -1576,7 +1553,6 @@ mln_morpho_hit_or_miss_SOURCES = mln_morpho_hit_or_miss.cc
mln_morpho_closing_height_SOURCES = mln_morpho_closing_height.cc
mln_morpho_plus_SOURCES = mln_morpho_plus.cc
mln_morpho_general_SOURCES = mln_morpho_general.cc
-mln_morpho_erosion_fast_SOURCES = mln_morpho_erosion_fast.cc
mln_morpho_internal_elementary_SOURCES = mln_morpho_internal_elementary.cc
mln_morpho_contrast_SOURCES = mln_morpho_contrast.cc
mln_morpho_opening_area_SOURCES = mln_morpho_opening_area.cc
@@ -1587,7 +1563,6 @@ mln_morpho_laplacian_SOURCES = mln_morpho_laplacian.cc
mln_morpho_all_SOURCES = mln_morpho_all.cc
mln_morpho_opening_attribute_SOURCES = mln_morpho_opening_attribute.cc
mln_morpho_opening_volume_SOURCES = mln_morpho_opening_volume.cc
-mln_morpho_dilation_fast_SOURCES = mln_morpho_dilation_fast.cc
mln_morpho_closing_area_on_vertices_SOURCES = mln_morpho_closing_area_on_vertices.cc
mln_morpho_closing_volume_SOURCES = mln_morpho_closing_volume.cc
mln_morpho_minus_SOURCES = mln_morpho_minus.cc
@@ -1661,6 +1636,7 @@ mln_win_line_SOURCES = mln_win_line.cc
mln_win_essential_SOURCES = mln_win_essential.cc
mln_core_clock_neighb_SOURCES = mln_core_clock_neighb.cc
mln_core_pixter2d_SOURCES = mln_core_pixter2d.cc
+mln_core_def_low_quant_nbits_SOURCES = mln_core_def_low_quant_nbits.cc
mln_core_def_all_SOURCES = mln_core_def_all.cc
mln_core_def_coordf_SOURCES = mln_core_def_coordf.cc
mln_core_def_coord_SOURCES = mln_core_def_coord.cc
@@ -1715,6 +1691,7 @@ mln_core_internal_site_relative_iterator_base_SOURCES = mln_core_internal_site_r
mln_core_internal_site_set_impl_SOURCES = mln_core_internal_site_set_impl.cc
mln_core_internal_exact_SOURCES = mln_core_internal_exact.cc
mln_core_internal_p_complex_piter_base_SOURCES = mln_core_internal_p_complex_piter_base.cc
+mln_core_internal_neighb_niter_impl_SOURCES = mln_core_internal_neighb_niter_impl.cc
mln_core_internal_pixel_iterator_base_SOURCES = mln_core_internal_pixel_iterator_base.cc
mln_core_internal_classical_window_base_SOURCES = mln_core_internal_classical_window_base.cc
mln_core_internal_data_SOURCES = mln_core_internal_data.cc
@@ -1848,7 +1825,6 @@ mln_core_clock_neighb2d_SOURCES = mln_core_clock_neighb2d.cc
mln_core_pixter3d_SOURCES = mln_core_pixter3d.cc
mln_core_image_obased_rle_encode_SOURCES = mln_core_image_obased_rle_encode.cc
mln_core_image_plain_SOURCES = mln_core_image_plain.cc
-mln_core_image_translate_image_SOURCES = mln_core_image_translate_image.cc
mln_core_image_graph_image_SOURCES = mln_core_image_graph_image.cc
mln_core_image_image3d_SOURCES = mln_core_image_image3d.cc
mln_core_image_decorated_image_SOURCES = mln_core_image_decorated_image.cc
@@ -1860,7 +1836,6 @@ mln_core_image_graph_elt_window_SOURCES = mln_core_image_graph_elt_window.cc
mln_core_image_obased_rle_image_SOURCES = mln_core_image_obased_rle_image.cc
mln_core_image_mono_obased_rle_image_SOURCES = mln_core_image_mono_obased_rle_image.cc
mln_core_image_interpolated_SOURCES = mln_core_image_interpolated.cc
-mln_core_image_graph_neighborhood_piter_SOURCES = mln_core_image_graph_neighborhood_piter.cc
mln_core_image_lazy_image_SOURCES = mln_core_image_lazy_image.cc
mln_core_image_t_image_SOURCES = mln_core_image_t_image.cc
mln_core_image_hexa_piter_SOURCES = mln_core_image_hexa_piter.cc
@@ -1890,10 +1865,7 @@ mln_core_image_extension_val_SOURCES = mln_core_image_extension_val.cc
mln_core_image_image_if_SOURCES = mln_core_image_image_if.cc
mln_core_image_hexa_SOURCES = mln_core_image_hexa.cc
mln_core_image_extended_SOURCES = mln_core_image_extended.cc
-mln_core_image_line_graph_elt_piter_SOURCES = mln_core_image_line_graph_elt_piter.cc
mln_core_image_image2d_h_SOURCES = mln_core_image_image2d_h.cc
-mln_core_image_line_graph_neighborhood_piter_SOURCES = mln_core_image_line_graph_neighborhood_piter.cc
-mln_core_image_line_graph_window_piter_SOURCES = mln_core_image_line_graph_window_piter.cc
mln_core_image_image2d_SOURCES = mln_core_image_image2d.cc
mln_core_image_ch_piter_SOURCES = mln_core_image_ch_piter.cc
mln_core_image_complex_windows_SOURCES = mln_core_image_complex_windows.cc
diff --git a/milena/tests/unit_test/mln_convert_to_tiles.cc b/milena/tests/unit_test/mln_convert_to_tiles.cc
deleted file mode 100644
index c3b2669..0000000
--- a/milena/tests/unit_test/mln_convert_to_tiles.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/convert/to_tiles.hh.
-// Generated file, do not modify.
-#include <mln/convert/to_tiles.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_image_graph_neighborhood_piter.cc b/milena/tests/unit_test/mln_core_image_graph_neighborhood_piter.cc
deleted file mode 100644
index 3e9fe3c..0000000
--- a/milena/tests/unit_test/mln_core_image_graph_neighborhood_piter.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/core/image/graph_neighborhood_piter.hh.
-// Generated file, do not modify.
-#include <mln/core/image/graph_neighborhood_piter.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_image_line_graph_elt_piter.cc b/milena/tests/unit_test/mln_core_image_line_graph_elt_piter.cc
deleted file mode 100644
index 7d83066..0000000
--- a/milena/tests/unit_test/mln_core_image_line_graph_elt_piter.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/core/image/line_graph_elt_piter.hh.
-// Generated file, do not modify.
-#include <mln/core/image/line_graph_elt_piter.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_image_line_graph_neighborhood_piter.cc b/milena/tests/unit_test/mln_core_image_line_graph_neighborhood_piter.cc
deleted file mode 100644
index a24fe50..0000000
--- a/milena/tests/unit_test/mln_core_image_line_graph_neighborhood_piter.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/core/image/line_graph_neighborhood_piter.hh.
-// Generated file, do not modify.
-#include <mln/core/image/line_graph_neighborhood_piter.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_image_line_graph_window_piter.cc b/milena/tests/unit_test/mln_core_image_line_graph_window_piter.cc
deleted file mode 100644
index 07dd31e..0000000
--- a/milena/tests/unit_test/mln_core_image_line_graph_window_piter.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/core/image/line_graph_window_piter.hh.
-// Generated file, do not modify.
-#include <mln/core/image/line_graph_window_piter.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_core_image_translate_image.cc b/milena/tests/unit_test/mln_core_image_translate_image.cc
deleted file mode 100644
index d8c88bf..0000000
--- a/milena/tests/unit_test/mln_core_image_translate_image.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/core/image/translate_image.hh.
-// Generated file, do not modify.
-#include <mln/core/image/translate_image.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_display_color_pretty.cc b/milena/tests/unit_test/mln_display_color_pretty.cc
deleted file mode 100644
index f6fe6dc..0000000
--- a/milena/tests/unit_test/mln_display_color_pretty.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/display/color_pretty.hh.
-// Generated file, do not modify.
-#include <mln/display/color_pretty.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_display_remove.cc b/milena/tests/unit_test/mln_display_remove.cc
deleted file mode 100644
index f745937..0000000
--- a/milena/tests/unit_test/mln_display_remove.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/display/remove.hh.
-// Generated file, do not modify.
-#include <mln/display/remove.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_display_save.cc b/milena/tests/unit_test/mln_display_save.cc
deleted file mode 100644
index bb4961c..0000000
--- a/milena/tests/unit_test/mln_display_save.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/display/save.hh.
-// Generated file, do not modify.
-#include <mln/display/save.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_display_save_and_show.cc b/milena/tests/unit_test/mln_display_save_and_show.cc
deleted file mode 100644
index fd3affb..0000000
--- a/milena/tests/unit_test/mln_display_save_and_show.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/display/save_and_show.hh.
-// Generated file, do not modify.
-#include <mln/display/save_and_show.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_display_show.cc b/milena/tests/unit_test/mln_display_show.cc
deleted file mode 100644
index e917332..0000000
--- a/milena/tests/unit_test/mln_display_show.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/display/show.hh.
-// Generated file, do not modify.
-#include <mln/display/show.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_draw_label.cc b/milena/tests/unit_test/mln_draw_label.cc
deleted file mode 100644
index 045c8f1..0000000
--- a/milena/tests/unit_test/mln_draw_label.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/draw/label.hh.
-// Generated file, do not modify.
-#include <mln/draw/label.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_morpho_dilation_fast.cc b/milena/tests/unit_test/mln_morpho_dilation_fast.cc
deleted file mode 100644
index df3cb12..0000000
--- a/milena/tests/unit_test/mln_morpho_dilation_fast.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/morpho/dilation_fast.hh.
-// Generated file, do not modify.
-#include <mln/morpho/dilation_fast.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_morpho_erosion_fast.cc b/milena/tests/unit_test/mln_morpho_erosion_fast.cc
deleted file mode 100644
index 9148053..0000000
--- a/milena/tests/unit_test/mln_morpho_erosion_fast.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/morpho/erosion_fast.hh.
-// Generated file, do not modify.
-#include <mln/morpho/erosion_fast.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_neighb_all.cc b/milena/tests/unit_test/mln_neighb_all.cc
deleted file mode 100644
index e69c82b..0000000
--- a/milena/tests/unit_test/mln_neighb_all.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/neighb/all.hh.
-// Generated file, do not modify.
-#include <mln/neighb/all.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_neighb_essential.cc b/milena/tests/unit_test/mln_neighb_essential.cc
deleted file mode 100644
index 9c2f40d..0000000
--- a/milena/tests/unit_test/mln_neighb_essential.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/neighb/essential.hh.
-// Generated file, do not modify.
-#include <mln/neighb/essential.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_neighb_get.cc b/milena/tests/unit_test/mln_neighb_get.cc
deleted file mode 100644
index d34ae14..0000000
--- a/milena/tests/unit_test/mln_neighb_get.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/neighb/get.hh.
-// Generated file, do not modify.
-#include <mln/neighb/get.hh>
-
-int main()
-{
- // Nothing.
-}
diff --git a/milena/tests/unit_test/mln_neighb_image.cc b/milena/tests/unit_test/mln_neighb_image.cc
deleted file mode 100644
index c3a5ad8..0000000
--- a/milena/tests/unit_test/mln_neighb_image.cc
+++ /dev/null
@@ -1,8 +0,0 @@
-// Unit test for mln/neighb/image.hh.
-// Generated file, do not modify.
-#include <mln/neighb/image.hh>
-
-int main()
-{
- // Nothing.
-}
--
1.5.6.5
1
0
* configure.ac: do it here.
---
ChangeLog | 6 ++++++
configure.ac | 9 +++++----
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index c8b0ed1..1bc6b00 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-12-06 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Disable milena/apps makefiles.
+
+ * configure.ac: do it here.
+
2008-11-26 Guillaume Lazzara <z(a)lrde.epita.fr>
Add missing Makefiles in AC_CONFIG_FILES.
diff --git a/configure.ac b/configure.ac
index 88a24b9..99a1b17 100644
--- a/configure.ac
+++ b/configure.ac
@@ -244,10 +244,11 @@ AC_CONFIG_FILES([
# Ask for the creation of applications' Makefiles.
# FIXME: Should it be achieved through oln.m4 macros, as we did in Olena 0.11?
-AC_CONFIG_FILES([
- milena/apps/Makefile
- milena/apps/statues/Makefile
-])
+# FIXME: ENABLE IT
+#AC_CONFIG_FILES([
+# milena/apps/Makefile
+# milena/apps/statues/Makefile
+#])
# Configure tests.
AC_CONFIG_FILES([milena/apps/statues/test],
--
1.5.6.5
1
0
* milena/Makefile.am: re-enable tools subdir.
* milena/tests/Makefile.am: re-enable display subdir.
* milena/tools/Makefile.am: disable area_flooding.
* milena/tools/seed2tiling.cc: make it compile.
---
milena/ChangeLog | 12 ++++++++++++
milena/Makefile.am | 9 +++++----
milena/tests/Makefile.am | 3 +--
milena/tools/Makefile.am | 4 ++--
milena/tools/seed2tiling.cc | 18 +++++++++---------
5 files changed, 29 insertions(+), 17 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index bc666e4..4bfc986 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,5 +1,17 @@
2008-12-05 Guillaume Lazzara <z(a)lrde.epita.fr>
+ Make milena/tools compile.
+
+ * milena/Makefile.am: re-enable tools subdir.
+
+ * milena/tests/Makefile.am: re-enable display subdir.
+
+ * milena/tools/Makefile.am: disable area_flooding.
+
+ * milena/tools/seed2tiling.cc: make it compile.
+
+2008-12-05 Guillaume Lazzara <z(a)lrde.epita.fr>
+
Fix bugs in graph.
* mln/core/internal/site_relative_iterator_base.hh,
diff --git a/milena/Makefile.am b/milena/Makefile.am
index 90cc910..fa1d994 100644
--- a/milena/Makefile.am
+++ b/milena/Makefile.am
@@ -2,12 +2,13 @@
##FIXME
SUBDIRS = \
- mesh \
doc \
- tests
- tools \
- apps
+ mesh \
+ tests \
+ tools
+# apps
.PHONY: doc
doc:
$(MAKE) -C doc doc
+
diff --git a/milena/tests/Makefile.am b/milena/tests/Makefile.am
index 1213699..55f6959 100644
--- a/milena/tests/Makefile.am
+++ b/milena/tests/Makefile.am
@@ -2,7 +2,6 @@
include $(top_srcdir)/milena/tests/tests.mk
-##FIXME: re-enable all tests
SUBDIRS = \
accu \
algebra \
@@ -13,7 +12,7 @@ SUBDIRS = \
convert \
core \
debug \
-## display \
+ display \
draw \
estim \
extension \
diff --git a/milena/tools/Makefile.am b/milena/tools/Makefile.am
index e5ec273..1d6347c 100644
--- a/milena/tools/Makefile.am
+++ b/milena/tools/Makefile.am
@@ -3,10 +3,10 @@
include $(top_srcdir)/milena/tools/tools.mk
bin_PROGRAMS = \
- area_flooding \
seed2tiling
+#area_flooding
-area_flooding_SOURCES = area_flooding.cc
+#area_flooding_SOURCES = area_flooding.cc
seed2tiling_SOURCES = seed2tiling.cc
# FIXME: Add some tests for these tools.
diff --git a/milena/tools/seed2tiling.cc b/milena/tools/seed2tiling.cc
index bbac710..4ebda1b 100644
--- a/milena/tools/seed2tiling.cc
+++ b/milena/tools/seed2tiling.cc
@@ -1,4 +1,5 @@
-// Copyright (C) 2007 EPITA Research and Development Laboratory
+// Copyright (C) 2007, 2008 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of the Olena Library. This library is free
// software; you can redistribute it and/or modify it under the terms
@@ -25,10 +26,10 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-/*! \file tools/seed2tiling.cc
- *
- * \brief Tool using mln::geom::seed2tiling.
- */
+/// \file tools/seed2tiling.cc
+///
+/// Tool using mln::geom::seed2tiling.
+
# include <mln/core/image/image2d.hh>
@@ -48,7 +49,7 @@
#include <mln/core/image/image2d.hh>
#include <mln/core/image/sub_image.hh>
-#include <mln/core/image_if_value.hh>
+#include <mln/core/image/image_if.hh>
#include <mln/core/alias/w_window2d_int.hh>
@@ -80,8 +81,7 @@ int main(int argc, char* argv[])
image2d<unsigned> inte = geom::seeds2tiling(lab, c4 ());
border::fill (inte, 0);
- image2d<int_u8> inte2(input.domain());
- level::stretch(inte, inte2);
+ image2d<int_u8> inte2 = level::stretch(int_u8(), inte);
io::pgm::save(inte2, "ima1.pgm");
std::cout << "ima1 generate with seeds2tiling"
@@ -89,7 +89,7 @@ int main(int argc, char* argv[])
inte = geom::seeds2tiling_roundness(lab, w_win, max, c4 ());
border::fill(inte, 0);
- level::stretch(inte, inte2);
+ inte2 = level::stretch(int_u8(), inte);
io::pgm::save(inte2, "ima2.pgm");
std::cout << "ima2 generate with seeds2tiling_roundness"
--
1.5.6.5
1
0
https://svn.lrde.epita.fr/svn/oln/trunk/milena/sandbox
Index: ChangeLog
from Ugo Jardonnet <ugo.jardonnet(a)lrde.epita.fr>
Update n_cmpt3.
* jardonnet/n_cmpt/n_cmpt3.hh: Update cmpts--.
* jardonnet/n_cmpt/n_cmpt3.cc: Try to use 1d image.
n_cmpt3.cc | 7 ++++++-
n_cmpt3.hh | 35 ++++++++++++++++-------------------
2 files changed, 22 insertions(+), 20 deletions(-)
Index: jardonnet/n_cmpt/n_cmpt3.hh
--- jardonnet/n_cmpt/n_cmpt3.hh (revision 2998)
+++ jardonnet/n_cmpt/n_cmpt3.hh (working copy)
@@ -61,19 +61,6 @@
return parent(x) = find_root(parent, parent(x));
}
- template < typename I >
- unsigned count_minima(const I& ima)
- {
- unsigned cmpt = 0;
- mln_piter(I) p(ima.domain());
- for_all(p)
- {
- if (ima(p) != literal::zero)
- cmpt++;
- }
- return cmpt;
- }
-
template < typename I, typename N>
I
n_cmpt3(const I& ima, const N& nbh,
@@ -91,7 +78,7 @@
// compute volume image
typedef p_array<mln_psite(I)> S;
- typedef image2d<unsigned> V;
+ typedef mln_ch_value(I,unsigned) V;
typedef accu::volume<I> A;
S sp = level::sort_psites_decreasing(ima);
@@ -152,20 +139,30 @@
P r = find_root(parent, n);
if (r != p)
{
+ // One cmpt less if
+ if (volume(r) != volume(p)) // r and p have differerent volumes
+ if (not volume_set(p).is_empty()) // r already belong to a cmpt
+ if (volume_set(p) != volume_set(r)) // cmpt r and p are different
+ if (cmpts > lambda) // union is still alowed
+ cmpts--;
+
+ if (cmpts > lambda ||
+ volume(r) == volume(p) ||
+ volume_set(p).is_empty())
+ {
+ parent(r) = p;
// propagate set
volume_set(p).insert(volume_set(r));
- // build tree
- parent(r) = p;
+ }
}
}
}
deja_vu(p) = true;
}
- debug::println(volume_set);
-
step2:
-// std::cout << "Nb cmpts after processing : " << cmpts << std::endl;
+ debug::println(volume_set);
+ std::cout << "Nb cmpts after processing : " << cmpts << std::endl;
// second pass
I output(ima.domain());
Index: jardonnet/n_cmpt/n_cmpt3.cc
--- jardonnet/n_cmpt/n_cmpt3.cc (revision 2998)
+++ jardonnet/n_cmpt/n_cmpt3.cc (working copy)
@@ -5,6 +5,8 @@
#include <mln/core/alias/neighb2d.hh>
#include <mln/value/int_u8.hh>
+#include <mln/make/image.hh>
+
#include <mln/io/pgm/load.hh>
#include <mln/io/pgm/save.hh>
@@ -32,6 +34,9 @@
io::pgm::load(ima, argv[1]);
unsigned lambda = atoi(argv[2]);
- io::pgm::save(n_cmpt::n_cmpt3(ima, c4(), lambda),
+ int_u8 tab[] = {2,3,1,0,2,3,2,2,1};
+ image1d<int_u8> ima1= make::image(tab);
+
+ io::pgm::save(n_cmpt::n_cmpt3(ima1, c4(), lambda),
"out.pgm");
}
1
0
* mln/core/internal/site_relative_iterator_base.hh,
* mln/core/internal/site_iterator_base.hh,
* mln/core/concept/site_iterator.hh: fix comments.
* mln/core/image/line_graph_elt_window.hh,
* mln/core/image/graph_elt_window.hh: change typedefs.
* mln/core/image/graph_window_piter.hh: add center_at().
* mln/core/internal/graph_window_base.hh: add is_neighbable_().
* mln/core/neighb.hh,
* mln/core/internal/neighb_niter_impl.hh: allow optional
implementation for neighborhood based on neighb.
* mln/core/macros.hh: add mln_graph_element.
* mln/util/internal/graph_nbh_iter_base.hh: fix center_at().
* mln/util/vertex.hh: update an assertion.
* tests/core/image/graph_image.cc,
* tests/core/image/line_graph_image.cc: make them real tests and
remove debug output.
---
milena/ChangeLog | 29 ++++++
milena/mln/core/concept/site_iterator.hh | 47 +++++-----
milena/mln/core/image/graph_elt_window.hh | 8 +-
milena/mln/core/image/graph_window_piter.hh | 36 ++++++-
milena/mln/core/image/line_graph_elt_window.hh | 8 +-
milena/mln/core/internal/graph_window_base.hh | 11 ++
milena/mln/core/internal/neighb_niter_impl.hh | 97 ++++++++++++++++++++
milena/mln/core/internal/site_iterator_base.hh | 50 +++++-----
.../core/internal/site_relative_iterator_base.hh | 40 ++++----
milena/mln/core/macros.hh | 6 +
milena/mln/core/neighb.hh | 10 +-
milena/mln/util/internal/graph_nbh_iter_base.hh | 11 ++-
milena/mln/util/vertex.hh | 3 +-
milena/tests/core/image/graph_image.cc | 80 +++++++++-------
milena/tests/core/image/line_graph_image.cc | 74 ++++++++-------
15 files changed, 352 insertions(+), 158 deletions(-)
create mode 100644 milena/mln/core/internal/neighb_niter_impl.hh
diff --git a/milena/ChangeLog b/milena/ChangeLog
index 77c014b..bc666e4 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,3 +1,32 @@
+2008-12-05 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix bugs in graph.
+
+ * mln/core/internal/site_relative_iterator_base.hh,
+ * mln/core/internal/site_iterator_base.hh,
+ * mln/core/concept/site_iterator.hh: fix comments.
+
+ * mln/core/image/line_graph_elt_window.hh,
+ * mln/core/image/graph_elt_window.hh: change typedefs.
+
+ * mln/core/image/graph_window_piter.hh: add center_at().
+
+ * mln/core/internal/graph_window_base.hh: add is_neighbable_().
+
+ * mln/core/neighb.hh,
+ * mln/core/internal/neighb_niter_impl.hh: allow optional
+ implementation for neighborhood based on neighb.
+
+ * mln/core/macros.hh: add mln_graph_element.
+
+ * mln/util/internal/graph_nbh_iter_base.hh: fix center_at().
+
+ * mln/util/vertex.hh: update an assertion.
+
+ * tests/core/image/graph_image.cc,
+ * tests/core/image/line_graph_image.cc: make them real tests and
+ remove debug output.
+
2008-12-05 Ugo Jardonnet <ugo.jardonnet(a)lrde.epita.fr>
Add big_chess functor.
diff --git a/milena/mln/core/concept/site_iterator.hh b/milena/mln/core/concept/site_iterator.hh
index b3b293c..97cbc57 100644
--- a/milena/mln/core/concept/site_iterator.hh
+++ b/milena/mln/core/concept/site_iterator.hh
@@ -1,4 +1,5 @@
// Copyright (C) 2007, 2008 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of the Olena Library. This library is free
// software; you can redistribute it and/or modify it under the terms
@@ -28,12 +29,12 @@
#ifndef MLN_CORE_CONCEPT_SITE_ITERATOR_HH
# define MLN_CORE_CONCEPT_SITE_ITERATOR_HH
-/*! \file mln/core/concept/site_iterator.hh
- *
- * \brief Definition of the concept of mln::Site_Iterator.
- *
- * \todo Fix mln/core/concept/doc/site_iterator.hh
- */
+/// \file mln/core/concept/site_iterator.hh
+///
+/// Definition of the concept of mln::Site_Iterator.
+///
+/// \todo Fix mln/core/concept/doc/site_iterator.hh
+
# include <mln/core/concept/site_proxy.hh>
# include <mln/core/concept/iterator.hh> // To fetch the macros.
@@ -42,15 +43,15 @@
namespace mln
{
- /*! \brief Base class for implementation of classes of iterator on
- * points.
- *
- * An iterator on points is an iterator that browse over a set of
- * points.
- *
- * \see mln::doc::Site_Iterator for a complete documentation of this class
- * contents.
- */
+ /// Base class for implementation of classes of iterator on
+ /// points.
+ ///
+ /// An iterator on points is an iterator that browse over a set of
+ /// points.
+ ///
+ /// \see mln::doc::Site_Iterator for a complete documentation of this class
+ /// contents.
+ ///
template <typename E>
struct Site_Iterator : public Site_Proxy<E>
{
@@ -62,14 +63,14 @@ namespace mln
const ..& target_() const;
*/
- /*! \brief Go to the next element.
- *
- * \warning This is a final method; iterator classes should not
- * re-defined this method. The actual "next" operation has to be
- * defined through the \em next_ method.
- *
- * \pre The iterator is valid.
- */
+ /// Go to the next element.
+ ///
+ /// \warning This is a final method; iterator classes should not
+ /// re-defined this method. The actual "next" operation has to be
+ /// defined through the \em next_ method.
+ ///
+ /// \pre The iterator is valid.
+ ///
void next(); // final
// FIXME: Doc!!!
diff --git a/milena/mln/core/image/graph_elt_window.hh b/milena/mln/core/image/graph_elt_window.hh
index b48d668..2e47cb2 100644
--- a/milena/mln/core/image/graph_elt_window.hh
+++ b/milena/mln/core/image/graph_elt_window.hh
@@ -86,17 +86,17 @@ namespace mln
public:
/// Associated types.
/// \{
- typedef p_vertices<G,F> S;
+ typedef p_vertices<G,F> target;
/// The type of psite corresponding to the window.
- typedef mln_psite(S) psite;
+ typedef mln_psite(target) psite;
/// Site_Iterator type to browse the psites of the window
/// w.r.t. the ordering of vertices.
- typedef graph_window_piter<S,self_,nbh_fwd_iter_> fwd_qiter;
+ typedef graph_window_piter<target,self_,nbh_fwd_iter_> fwd_qiter;
/// Site_Iterator type to browse the psites of the window
/// w.r.t. the reverse ordering of vertices.
- typedef graph_window_piter<S,self_,nbh_bkd_iter_> bkd_qiter;
+ typedef graph_window_piter<target,self_,nbh_bkd_iter_> bkd_qiter;
/// The default qiter type.
typedef fwd_qiter qiter;
diff --git a/milena/mln/core/image/graph_window_piter.hh b/milena/mln/core/image/graph_window_piter.hh
index d95963f..16213e8 100644
--- a/milena/mln/core/image/graph_window_piter.hh
+++ b/milena/mln/core/image/graph_window_piter.hh
@@ -33,13 +33,13 @@
///
/// Definition of a point iterator on a line_graph window.
-
# include <mln/core/internal/site_relative_iterator_base.hh>
namespace mln
{
+
/// Forward iterator on line graph window.
template <typename S, typename W, typename I>
class graph_window_piter
@@ -57,8 +57,6 @@ namespace mln
// FIXME: Dummy typedef.
typedef void dpoint;
- // FIXME: Dummy value.
- typedef void mesh;
/// \}
/// Construction.
@@ -81,6 +79,16 @@ namespace mln
/// Go to the next point.
void do_next_();
+ /// Set the reference psite.
+ /* FIXME: Careful, this method overrides the (non virtual) method
+ internal::site_relative_iterator_base<S, E>::center_at. See
+ FIXME above. */
+ template <typename Pref>
+ void center_at(const Pref& c);
+
+ /// Return the graph element pointed by this iterator.
+ const mln_graph_element(S)& element() const;
+
/// Compute the current psite.
mln_psite(W) compute_p_() const;
/// \}
@@ -104,10 +112,10 @@ namespace mln
inline
graph_window_piter<S,W,I>::graph_window_piter(const Window<W>& win,
const Pref& p_ref)
- : iter_(p_ref.hook_iter_())
{
- this->change_target(exact(win));
center_at(p_ref);
+ this->change_target(exact(win));
+ mln_postcondition(!this->is_valid());
}
template <typename S, typename W, typename I>
@@ -150,6 +158,24 @@ namespace mln
return mln_psite(S)(this->center().site_set(), iter_.id());
}
+ template <typename S, typename W, typename I>
+ template <typename Pref>
+ inline
+ void
+ graph_window_piter<S, W, I>::center_at(const Pref& c)
+ {
+ super_::center_at(c);
+ iter_.center_at(c.hook_iter_());
+ }
+
+ template <typename S, typename W, typename I>
+ inline
+ const mln_graph_element(S)&
+ graph_window_piter<S, W, I>::element() const
+ {
+ return iter_;
+ }
+
# endif // ! MLN_INCLUDE_ONLY
} // end of namespace mln
diff --git a/milena/mln/core/image/line_graph_elt_window.hh b/milena/mln/core/image/line_graph_elt_window.hh
index c1b910c..9717f48 100644
--- a/milena/mln/core/image/line_graph_elt_window.hh
+++ b/milena/mln/core/image/line_graph_elt_window.hh
@@ -83,17 +83,17 @@ namespace mln
public:
/// Associated types.
/// \{
- typedef p_edges<G,F> S;
+ typedef p_edges<G,F> target;
// The type of psite corresponding to the window.
- typedef mln_psite(S) psite;
+ typedef mln_psite(target) psite;
/// Site_Iterator type to browse the psites of the window
/// w.r.t. the ordering of edges.
- typedef graph_window_piter<S,self_,nbh_fwd_iter_> fwd_qiter;
+ typedef graph_window_piter<target,self_,nbh_fwd_iter_> fwd_qiter;
/// Site_Iterator type to browse the psites of the window
/// w.r.t. the reverse ordering of edges.
- typedef graph_window_piter<S,self_,nbh_bkd_iter_> bkd_qiter;
+ typedef graph_window_piter<target,self_,nbh_bkd_iter_> bkd_qiter;
/// The default qiter type.
typedef fwd_qiter qiter;
diff --git a/milena/mln/core/internal/graph_window_base.hh b/milena/mln/core/internal/graph_window_base.hh
index 115e680..d2ecfd5 100644
--- a/milena/mln/core/internal/graph_window_base.hh
+++ b/milena/mln/core/internal/graph_window_base.hh
@@ -76,6 +76,9 @@ namespace mln
unsigned delta() const;
/// Apply a central symmetry to the target window.
self_& sym();
+
+ /// Is the window neighbable?
+ bool is_neighbable_() const;
/// \}
protected:
@@ -134,6 +137,14 @@ namespace mln
return *this;
}
+ template <typename P, typename E>
+ inline
+ bool
+ graph_window_base<P,E>::is_neighbable_() const
+ {
+ return true;
+ }
+
# endif // !MLN_INCLUDE_ONLY
diff --git a/milena/mln/core/internal/neighb_niter_impl.hh b/milena/mln/core/internal/neighb_niter_impl.hh
new file mode 100644
index 0000000..868e1f8
--- /dev/null
+++ b/milena/mln/core/internal/neighb_niter_impl.hh
@@ -0,0 +1,97 @@
+// Copyright (C) 2008 EPITA Research and Development Laboratory (LRDE)
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+#ifndef MLN_CORE_INTERNAL_NEIGHB_NITER_IMPL_HH
+# define MLN_CORE_INTERNAL_NEIGHB_NITER_IMPL_HH
+
+/// \file mln/core/internal/neighb_niter_impl.hh
+///
+/// Optional implementation for neigbh_niter.
+
+
+namespace mln
+{
+
+ // Forward declaration.
+ template <typename P, typename W> class graph_window_base;
+ template <typename G, typename F> class graph_elt_window;
+ template <typename G, typename F> class line_graph_elt_window;
+
+
+ namespace internal
+ {
+
+ /// Default optional implementation.
+ template <typename W, typename E>
+ struct neighb_niter_impl
+ {
+
+ };
+
+
+ /// Add more implementation for neighborhoods made from
+ /// graph_window_base windows.
+ template <typename P, typename T, typename E>
+ struct neighb_niter_impl<graph_window_base<P,T>, E>
+ {
+ typedef typename T::target S;
+
+ const mln_graph_element(S)& element() const
+ {
+ return internal::force_exact<E>(*this).compute_p_().element();
+ }
+
+ };
+
+
+ /// Add more implementation for neighborhoods made from a
+ /// graph_window_piter.
+ template <typename G, typename F, typename E>
+ struct neighb_niter_impl<graph_elt_window<G,F>, E>
+ : public neighb_niter_impl< graph_window_base< mln_result(F),
+ graph_elt_window<G, F> >,
+ E >
+ {
+
+ };
+
+ /// Add more implementation for neighborhoods made from a
+ /// line_graph_window_piter.
+ template <typename G, typename F, typename E>
+ struct neighb_niter_impl<line_graph_elt_window<G,F>, E>
+ : public neighb_niter_impl< graph_window_base< mln_result(F),
+ line_graph_elt_window<G, F> >,
+ E >
+ {
+
+ };
+
+ } // end of namespace mln::internal
+
+} // end of namespace mln
+
+#endif // ! MLN_CORE_INTERNAL_NEIGHB_NITER_IMPL_HH
diff --git a/milena/mln/core/internal/site_iterator_base.hh b/milena/mln/core/internal/site_iterator_base.hh
index 87ad230..5eaedf7 100644
--- a/milena/mln/core/internal/site_iterator_base.hh
+++ b/milena/mln/core/internal/site_iterator_base.hh
@@ -1,4 +1,4 @@
-// Copyright (C) 2008 EPITA Research and Development Laboratory
+// Copyright (C) 2008 EPITA Research and Development Laboratory (LRDE)
//
// This file is part of the Olena Library. This library is free
// software; you can redistribute it and/or modify it under the terms
@@ -28,12 +28,12 @@
#ifndef MLN_CORE_INTERNAL_SITE_ITERATOR_BASE_HH
# define MLN_CORE_INTERNAL_SITE_ITERATOR_BASE_HH
-/*! \file mln/core/internal/site_iterator_base.hh
- *
- * \brief Base class to factor code for site iterator classes.
- *
- * \todo Import tech doc from home.
- */
+/// \file mln/core/internal/site_iterator_base.hh
+///
+/// Base class to factor code for site iterator classes.
+///
+/// \todo Import tech doc from home.
+
# include <mln/core/concept/site_iterator.hh>
# include <mln/core/concept/pseudo_site.hh> // Use of if_possible::change_target.
@@ -49,16 +49,16 @@ namespace mln
namespace internal
{
- /*! A base class for site iterators.
- *
- * NEVER DIRECTLY DERIVE FROM THIS CLASS.
- *
- * Instead derive EITHER from site_set_iterator_base OR from
- * site_relative_iterator_base OR from piter_adaptor_.
- *
- * Parameter \c S is the targeted "site set definition" type. It
- * can be either a Site_Set, a Window, or a Neighborhood.
- */
+ /// A base class for site iterators.
+ ///
+ /// NEVER DIRECTLY DERIVE FROM THIS CLASS.
+ ///
+ /// Instead derive EITHER from site_set_iterator_base OR from
+ /// site_relative_iterator_base OR from piter_adaptor_.
+ ///
+ /// Parameter \c S is the targeted "site set definition" type. It
+ /// can be either a Site_Set, a Window, or a Neighborhood.
+ ///
template <typename S, typename E>
struct site_iterator_base : Site_Iterator<E>,
proxy_impl< const mln_psite(S)&, E>
@@ -69,13 +69,13 @@ namespace mln
/// Return the site it points to (as a Site_Proxy).
const mln_site(S)& to_site() const;
- /*! \brief Conversion towards the site it designates (as a Site_Proxy).
- *
- * \warning This is a final method; iterator classes should not
- * re-defined this method.
- *
- * \pre The iterator is valid.
- */
+ /// Conversion towards the site it designates (as a Site_Proxy).
+ ///
+ /// \warning This is a final method; iterator classes should not
+ /// re-defined this method.
+ ///
+ /// \pre The iterator is valid.
+ ///
operator mln_site(S)() const;
/// Give the subject (required by the Proxy interface).
@@ -83,7 +83,7 @@ namespace mln
/// Give the target address. It might be 0.
const S*& target_();
-
+
protected:
site_iterator_base();
diff --git a/milena/mln/core/internal/site_relative_iterator_base.hh b/milena/mln/core/internal/site_relative_iterator_base.hh
index 01e5f19..4438134 100644
--- a/milena/mln/core/internal/site_relative_iterator_base.hh
+++ b/milena/mln/core/internal/site_relative_iterator_base.hh
@@ -28,16 +28,16 @@
#ifndef MLN_CORE_SITE_RELATIVE_ITERATOR_BASE_HH
# define MLN_CORE_SITE_RELATIVE_ITERATOR_BASE_HH
-/*! \file mln/core/internal/site_relative_iterator_base.hh
- *
- * \brief Definition of forward and backward mln::dpoint_ based
- * iterators.
- *
- * \todo Add a method to get the site set (if the center is defined) or
- * the site set at a given center.
- *
- * \todo In start_ and next_, think about the commented code...
- */
+/// \file mln/core/internal/site_relative_iterator_base.hh
+///
+/// Definition of forward and backward mln::dpoint_ based
+/// iterators.
+///
+/// \todo Add a method to get the site set (if the center is defined) or
+/// the site set at a given center.
+///
+/// \todo In start_ and next_, think about the commented code...
+
# include <vector>
# include <mln/core/internal/site_iterator_base.hh>
@@ -50,16 +50,16 @@ namespace mln
namespace internal
{
- /*! \brief A generic iterator on points of windows and of
- * neighborhoods.
- *
- * Parameter \c S is the targeted "site set definition" type. It
- * can be either a Window, or a Neighborhood.
- *
- * IMPORTANT: Sub-classes have to define do_start_, do_next_,
- * is_valid_, invalidate_ and compute_p_. They shall define
- * NEITHER start_ NOR next_.
- */
+ /// A generic iterator on points of windows and of
+ /// neighborhoods.
+ ///
+ /// Parameter \c S is the targeted "site set definition" type. It
+ /// can be either a Window, or a Neighborhood.
+ ///
+ /// IMPORTANT: Sub-classes have to define do_start_, do_next_,
+ /// is_valid_, invalidate_ and compute_p_. They shall define
+ /// NEITHER start_ NOR next_.
+ ///
template <typename S, typename E>
class site_relative_iterator_base : public site_iterator_base< S, E >
{
diff --git a/milena/mln/core/macros.hh b/milena/mln/core/macros.hh
index 130cb89..16ce3fe 100644
--- a/milena/mln/core/macros.hh
+++ b/milena/mln/core/macros.hh
@@ -131,6 +131,12 @@
# define mln_element_(T) T::element
/// \}
+/// Shortcuts to access the graph element type associated to T.
+/// \{
+# define mln_graph_element(T) typename T::graph_element
+# define mln_graph_element_(T) T::graph_element
+/// \}
+
/// Shortcuts to access the encoding type associated to T.
/// \{
# define mln_enc(T) typename T::enc
diff --git a/milena/mln/core/neighb.hh b/milena/mln/core/neighb.hh
index d54b229..c13f25b 100644
--- a/milena/mln/core/neighb.hh
+++ b/milena/mln/core/neighb.hh
@@ -39,7 +39,7 @@
# include <mln/core/internal/neighborhood_base.hh>
# include <mln/core/internal/site_relative_iterator_base.hh>
-
+# include <mln/core/internal/neighb_niter_impl.hh>
namespace mln
@@ -103,7 +103,7 @@ namespace mln
void
from_to(const W& from, mln::neighb<W>& to);
- } // end of namespace convert
+ } // end of namespace mln::convert
@@ -112,7 +112,8 @@ namespace mln
template <typename W>
class neighb_fwd_niter
: public internal::site_relative_iterator_base< neighb<W>,
- neighb_fwd_niter<W> >
+ neighb_fwd_niter<W> >,
+ public internal::neighb_niter_impl<W, neighb_fwd_niter<W> >
{
public:
@@ -149,7 +150,8 @@ namespace mln
template <typename W>
class neighb_bkd_niter
: public internal::site_relative_iterator_base< neighb<W>,
- neighb_bkd_niter<W> >
+ neighb_bkd_niter<W> >,
+ public internal::neighb_niter_impl<W, neighb_fwd_niter<W> >
{
public:
diff --git a/milena/mln/util/internal/graph_nbh_iter_base.hh b/milena/mln/util/internal/graph_nbh_iter_base.hh
index 11fbadd..a28be8b 100644
--- a/milena/mln/util/internal/graph_nbh_iter_base.hh
+++ b/milena/mln/util/internal/graph_nbh_iter_base.hh
@@ -31,7 +31,7 @@
# include <mln/core/concept/proxy.hh>
/// \file mln/util/internal/graph_nbh_iter_base.hh
-/// \brief Base implementation for graph edge and vertex neighborhood iterator.
+/// Base implementation for graph edge and vertex neighborhood iterator.
namespace mln
{
@@ -64,6 +64,11 @@ namespace mln
/// Conversion operator. Returns the element ID.
operator unsigned() const;
+
+ /// Make \p c the center of this iterator.
+ template <typename C2>
+ void center_at(const C2& c);
+
/// \}
/// Proxy.
@@ -80,9 +85,6 @@ namespace mln
nbh_iterator_base(const C2& c);
/// \}
- template <typename C2>
- void center_at(const C2& c);
-
const C* c_; // Center
P p_;
unsigned i_;
@@ -176,6 +178,7 @@ namespace mln
{
internal::get_adr(c_, c);
mln_postcondition(c_ != 0);
+ p_.change_graph(c.graph());
invalidate();
}
diff --git a/milena/mln/util/vertex.hh b/milena/mln/util/vertex.hh
index b1242e6..197dcab 100644
--- a/milena/mln/util/vertex.hh
+++ b/milena/mln/util/vertex.hh
@@ -194,7 +194,7 @@ namespace mln
vertex<G>::vertex(const G& g, unsigned id)
: g_(g), id_(id)
{
- mln_precondition(/* FIXME: g_.is_valid() && */ g_.has_v(id));
+ mln_assertion(is_valid());
}
template<typename G>
@@ -213,7 +213,6 @@ namespace mln
id_ = mln_max(unsigned);
}
-
template<typename G>
inline
unsigned
diff --git a/milena/tests/core/image/graph_image.cc b/milena/tests/core/image/graph_image.cc
index 44866ad..bd47c8a 100644
--- a/milena/tests/core/image/graph_image.cc
+++ b/milena/tests/core/image/graph_image.cc
@@ -31,19 +31,13 @@
#include <vector>
-#include <mln/accu/bbox.hh>
-#include <mln/core/alias/box2d.hh>
-#include <mln/core/alias/point2d.hh>
#include <mln/core/site_set/p_vertices.hh>
-
-#include <mln/core/image/image_if.hh>
-#include <mln/core/image/sub_image.hh>
-#include <mln/core/var.hh>
-#include <mln/core/routine/ops.hh>
-#include <mln/literal/ops.hh>
-#include <mln/fun/ops.hh>
-#include <mln/value/ops.hh>
#include <mln/core/image/graph_elt_window.hh>
+#include <mln/core/concept/function.hh>
+#include <mln/core/neighb.hh>
+#include <mln/core/var.hh>
+
+#include <mln/accu/bbox.hh>
#include <mln/fun/i2v/array.hh>
@@ -51,8 +45,23 @@
#include <mln/debug/draw_graph.hh>
#include <mln/debug/println.hh>
-#include <mln/core/concept/function.hh>
-#include <mln/core/neighb.hh>
+
+
+
+// Expected neighbors for forward and backward iteration.
+static unsigned fwd[5][3] = { { 1, -1, -1 },
+ { 0, 2, 3 },
+ { 1, 4, -1 },
+ { 1, 4, -1 },
+ { 3, 2, -1 } };
+
+static unsigned bkd[5][3] = { { 1, -1, -1 },
+ { 3, 2, 0 },
+ { 4, 1, -1 },
+ { 4, 1, -1 },
+ { 2, 3, -1 } };
+
+
template <typename S>
struct viota_t : public mln::Function_p2v< viota_t<S> >
@@ -78,6 +87,7 @@ struct viota_t : public mln::Function_p2v< viota_t<S> >
+
int main()
{
using namespace mln;
@@ -140,6 +150,8 @@ int main()
mln_const_VAR(ima, (iota | pv));
{
+ // FIXME: Move this part to a special test case.
+
// Compute the bounding box of 'ima'.
accu::bbox<point2d> a;
mln_piter_(ima_t) p(ima.domain());
@@ -171,7 +183,6 @@ int main()
// We use the value 9 in debug::graph to represent edges to distinguish it
// from vertices holding a value of 1.
debug::draw_graph(ima_rep, pv, 1, 9);
- debug::println(ima_rep);
}
/*------------.
@@ -186,16 +197,18 @@ int main()
typedef graph_elt_window<util::graph, fsite_t> win_t;
win_t win;
-
+
{
// Window - Forward iteration
mln_qiter_(win_t) q(win, p);
for_all (p)
{
- std::cout << "neighbors of " << p << " (" << ima(p) << "), "
- << "including the site itself:" << std::endl;
+ i = 0;
for_all (q)
- std::cout << " " << q << " (level = " << ima(q) << ")" << std::endl;
+ {
+ mln_assertion(fwd[p.element().id()][i] == q.element().id());
+ ++i;
+ }
}
}
@@ -204,44 +217,43 @@ int main()
mln_bkd_qiter_(win_t) q(win, p);
for_all (p)
{
- std::cout << "neighbors of " << p << " (" << ima(p) << "), "
- << "including the site itself:" << std::endl;
+ i = 0;
for_all (q)
- std::cout << " " << q << " (level = " << ima(q) << ")" << std::endl;
+ {
+ mln_assertion(bkd[p.element().id()][i] == q.element().id());
+ ++i;
+ }
}
}
- typedef neighb<win_t> neigh_t;
-
+ typedef neighb<win_t> neighb_t;
+ neighb_t neigh(win);
{
// Neighborhood - Forward iteration
- neigh_t neigh(win);
- mln_niter_(neigh_t) n(neigh, p);
+ mln_niter_(neighb_t) n(neigh, p);
for_all (p)
{
- std::cout << "neighbors of " << p << " (" << ima(p) << "), " << std::endl;
+ i = 0;
for_all (n)
{
- mln_assertion(n != p);
- std::cout << " " << n << " (level = " << ima(n) << ")" << std::endl;
+ mln_assertion(fwd[p.element().id()][i] == n.element().id());
+ ++i;
}
}
}
{
// Neighborhood - Backward iteration
- neigh_t neigh(win);
- mln_bkd_niter_(neigh_t) n(neigh, p);
+ mln_bkd_niter_(neighb_t) n(neigh, p);
for_all (p)
{
- std::cout << "neighbors of " << p << " (" << ima(p) << "), " << std::endl;
+ i = 0;
for_all (n)
{
- mln_assertion(n != p);
- std::cout << " " << n << " (level = " << ima(n) << ")" << std::endl;
+ mln_assertion(bkd[p.element().id()][i] == n.element().id());
+ ++i;
}
}
}
- std::cout << std::endl;
}
diff --git a/milena/tests/core/image/line_graph_image.cc b/milena/tests/core/image/line_graph_image.cc
index e40055a..14a43db 100644
--- a/milena/tests/core/image/line_graph_image.cc
+++ b/milena/tests/core/image/line_graph_image.cc
@@ -34,7 +34,6 @@
#include <mln/core/alias/point2d.hh>
#include <mln/pw/all.hh>
-//#include <mln/core/image/line_graph_image.hh>
#include <mln/core/image/line_graph_elt_window.hh>
#include <mln/core/site_set/p_edges.hh>
#include <mln/core/neighb.hh>
@@ -45,6 +44,22 @@
#include <mln/core/var.hh>
+
+// Expected neighbors for forward and backward iteration.
+static unsigned fwd[5][3] = { { 1, 2, -1 },
+ { 0, 2, 4 },
+ { 0, 1, 3 },
+ { 2, 4, -1 },
+ { 1, 3, -1 } };
+
+static unsigned bkd[5][3] = { { 2, 1, -1 },
+ { 4, 2, 0 },
+ { 3, 1, 0 },
+ { 4, 2, -1 },
+ { 3, 1, -1 } };
+
+
+
template <typename S>
struct viota_t : public mln::Function_p2v< viota_t<S> >
{
@@ -69,6 +84,7 @@ struct viota_t : public mln::Function_p2v< viota_t<S> >
+
int main()
{
using namespace mln;
@@ -134,14 +150,6 @@ int main()
mln_edge_iter_(util::graph) ei(g);
mln_edge_nbh_edge_iter_(util::graph) en(ei);
- for_all(ei)
- {
- std::cout << ei << std::endl;
- for_all(en)
- std::cout << en << std::endl;
- std::cout << "-----" << std::endl;
- }
-
// Manual iteration over the domain of IMA.
mln_piter_(ima_t) p(ima.domain());
unsigned i = 10;
@@ -149,66 +157,66 @@ int main()
mln_assertion(ima(p) == i++);
typedef line_graph_elt_window<util::graph, fsite_t> win_t;
- typedef neighb<win_t> neigh_t;
+ win_t win;
{
// Window - Forward iteration
- win_t win;
mln_fwd_qiter_(win_t) q(win, p);
for_all (p)
{
- std::cout << "neighbors of " << p << " (" << ima(p) << "), "
- << "including the site itself:" << std::endl;
+ i = 0;
for_all (q)
- std::cout << " " << q << " (level = " << ima(q) << ")" << std::endl;
+ {
+ mln_assertion(fwd[p.element().id()][i] == q.element().id());
+ ++i;
+ }
}
- std::cout << std::endl;
}
{
// Window - Backward iteration
- win_t win;
mln_bkd_qiter_(win_t) q(win, p);
for_all (p)
{
- std::cout << "neighbors of " << p << " (" << ima(p) << "), "
- << "including the site itself:" << std::endl;
+ i = 0;
for_all (q)
- std::cout << " " << q << " (level = " << ima(q) << ")" << std::endl;
+ {
+ mln_assertion(bkd[p.element().id()][i] == q.element().id());
+ ++i;
+ }
}
- std::cout << std::endl;
}
+
+
+ typedef neighb<win_t> neighb_t;
+ neighb_t neigh(win);
+
{
// Neighborhood - Forward iteration
- neigh_t neigh(win_t());
- mln_fwd_niter_(neigh_t) n(neigh, p);
+ mln_fwd_niter_(neighb_t) n(neigh, p);
for_all (p)
{
- std::cout << "neighbors of " << p << " (" << ima(p) << "), " << std::endl;
+ i = 0;
for_all (n)
{
- std::cout << " " << n << " (level = " << ima(n) << ")" << std::endl;
- mln_assertion(n != p);
+ mln_assertion(fwd[p.element().id()][i] == n.element().id());
+ ++i;
}
}
- std::cout << std::endl;
}
{
// Neighborhood - Backward iteration
- neigh_t neigh(win_t());
- mln_bkd_niter_(neigh_t) n(neigh, p);
+ mln_bkd_niter_(neighb_t) n(neigh, p);
for_all (p)
{
- std::cout << "neighbors of " << p << " (" << ima(p) << "), " << std::endl;
+ i = 0;
for_all (n)
{
- std::cout << " " << n << " (level = " << ima(n) << ")" << std::endl;
- mln_assertion(n != p);
+ mln_assertion(bkd[p.element().id()][i] == n.element().id());
+ ++i;
}
}
- std::cout << std::endl;
}
- std::cout << std::endl;
}
--
1.5.6.5
1
0
https://svn.lrde.epita.fr/svn/oln/trunk/milena/sandbox
Index: ChangeLog
from Ugo Jardonnet <ugo.jardonnet(a)lrde.epita.fr>
Add test for big_chess.
* jardonnet/test/big_chess.cc: Here.
big_chess.cc | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 71 insertions(+)
Index: jardonnet/test/big_chess.cc
--- jardonnet/test/big_chess.cc (revision 0)
+++ jardonnet/test/big_chess.cc (revision 0)
@@ -0,0 +1,71 @@
+
+#include <iostream>
+
+# include <mln/core/image/sub_image_if.hh>
+# include <mln/core/image/image_if.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/core/image/image2d.hh>
+#include <mln/value/int_u8.hh>
+#include <mln/io/pgm/load.hh>
+#include <mln/level/paste.hh>
+#include <mln/io/pgm/save.hh>
+
+#include <mln/fun/p2b/big_chess.hh>
+
+using namespace mln;
+using namespace mln::value;
+
+bool usage(int argc, char ** argv)
+{
+ if (argc != 3)
+ {
+ std::cout << argv[0] << " ima1.pgm ima2.pgm" << std::endl;
+ return false;
+ }
+ return true;
+}
+
+
+template <typename B>
+struct is_ima2_t : Function_p2b< is_ima2_t<B> >
+{
+ is_ima2_t(const B& box, const unsigned div)
+ : box(box), div(div)
+ {
+ }
+
+ typedef bool result;
+ bool operator()(const point2d& p) const
+ {
+ return !(p.row() / ((box.pmax().row() - 1) / div) % 2) &&
+ !(p.col() / ((box.pmax().row()-1) / div) % 2);
+ }
+
+ const B& box;
+ const unsigned div;
+};
+
+int main(int argc, char ** argv)
+{
+ if (not usage(argc,argv))
+ return 1;
+
+ typedef image2d<int_u8> I;
+
+ I ima1;
+ I ima2;
+ io::pgm::load(ima1, argv[1]);
+ io::pgm::load(ima2, argv[2]);
+
+ fun::p2b::big_chess<box2d> fun(ima1.domain(), 4);
+
+ image_if< I, fun::p2b::big_chess<box2d> > visio = ima1 | fun;
+
+ debug::println(visio);
+
+ level::paste(visio, ima2);
+
+ io::pgm::save(ima2, "out.ppm");
+}
1
0
https://svn.lrde.epita.fr/svn/oln/trunk/milena
Index: ChangeLog
from Ugo Jardonnet <ugo.jardonnet(a)lrde.epita.fr>
Add big_chess functor.
* mln/fun/p2b/big_chess.hh: Add this functor.
big_chess.hh | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 95 insertions(+)
Index: mln/fun/p2b/big_chess.hh
--- mln/fun/p2b/big_chess.hh (revision 0)
+++ mln/fun/p2b/big_chess.hh (revision 0)
@@ -0,0 +1,95 @@
+// Copyright (C) 2008 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+#ifndef MLN_FUN_P2B_BIG_CHESS_HH
+# define MLN_FUN_P2B_BIG_CHESS_HH
+
+/*! \file mln/fun/p2b/big_chess.hh
+ *
+ * \brief FIXME.
+ */
+
+# include <mln/core/concept/function.hh>
+# include <mln/core/alias/point2d.hh>
+
+
+namespace mln
+{
+
+ namespace fun
+ {
+
+ namespace p2b
+ {
+
+ // FIXME: Doc!
+ template <typename B>
+ struct big_chess : public Function_p2b< big_chess<B> >
+ {
+ typedef bool result;
+ typedef mln_psite(B) P;
+
+ big_chess(const B& box, const unsigned div);
+
+ bool operator()(const P& p) const;
+
+ const B& box;
+ const unsigned div;
+ };
+
+
+# ifndef MLN_INCLUDE_ONLY
+
+ template < typename B>
+ big_chess<B>::big_chess(const B& box, const unsigned div)
+ : box(box), div(div)
+ {
+ }
+
+ template < typename B>
+ inline
+ bool
+ big_chess<B>::operator()(const P& p) const
+ {
+ mln_coord(P) ret = 0;
+
+ for (short i = 0; i < P::dim; i++)
+ ret += p[i] / ((box.pmax()[i] - 1) / div);
+
+ return ret % 2;
+ }
+
+# endif // ! MLN_INCLUDE_ONLY
+
+ } // end of namespace mln::fun::p2b
+
+ } // end of namespace mln::fun
+
+} // end of namespace mln
+
+
+#endif // ! MLN_FUN_P2B_BIG_CHESS_HH
1
0
https://svn.lrde.epita.fr/svn/oln/trunk/milena
Index: ChangeLog
from Thierry Geraud <thierry.geraud(a)lrde.epita.fr>
Fix a graph test.
* tests/core/image/graph_image.cc: Fix.
graph_image.cc | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
Index: tests/core/image/graph_image.cc
--- tests/core/image/graph_image.cc (revision 2994)
+++ tests/core/image/graph_image.cc (working copy)
@@ -185,11 +185,10 @@
mln_assertion(ima(p) == i++);
typedef graph_elt_window<util::graph, fsite_t> win_t;
- typedef neighb<win_t> neigh_t;
+ win_t win;
{
// Window - Forward iteration
- win_t win;
mln_qiter_(win_t) q(win, p);
for_all (p)
{
@@ -202,7 +201,6 @@
{
// Window - Backward iteration
- win_t win;
mln_bkd_qiter_(win_t) q(win, p);
for_all (p)
{
@@ -213,10 +211,13 @@
}
}
+ typedef neighb<win_t> neigh_t;
+
{
// Neighborhood - Forward iteration
- neigh_t neigh(win_t());
+ neigh_t neigh(win);
mln_niter_(neigh_t) n(neigh, p);
+
for_all (p)
{
std::cout << "neighbors of " << p << " (" << ima(p) << "), " << std::endl;
@@ -230,7 +231,7 @@
{
// Neighborhood - Backward iteration
- neigh_t neigh(win_t());
+ neigh_t neigh(win);
mln_bkd_niter_(neigh_t) n(neigh, p);
for_all (p)
{
1
0