This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch exp/next has been created
at 98eedea5d6dcf8b4bfc9dfa309b57ce5dcbfd192 (commit)
- Log -----------------------------------------------------------------
98eedea Merge branches 'next' and 'exp/milena-z' into next
-----------------------------------------------------------------------
hooks/post-receive
--
Olena, a generic and efficient image processing platform
This is a merge commit message of the following branches:
Merge: 71c9c14... c5e5514...
Conflicts:
ChangeLog
milena/ChangeLog
milena/doc/tutorial/tutorial.tex
milena/tests/geom/Makefile.am
milena/tests/io/pbms/load.cc
milena/tests/io/pgms/load.cc
milena/tests/io/ppms/load.cc
scribo/ChangeLog
scribo/core/object_image.hh
scribo/demo/Makefile.am
scribo/primitive/link/internal/anchors_3.hh
scribo/scribo.mk
scribo/src/binarization/Makefile.am
scribo/src/binarization/sauvola_ms.cc
scribo/src/debug/Makefile.am
ChangeLog | 20 +
build-aux/autotroll.mk | 108 +++
configure.ac | 10 +-
m4/autotroll.m4 | 563 +++++++++++
milena/ChangeLog | 530 ++++++++++-
milena/doc/tutorial.tex | 4 +
milena/img/picasso.ppm | Bin 0 -> 244671 bytes
milena/mln/accu/center.hh | 14 +-
milena/mln/accu/count_value.hh | 4 +-
milena/mln/accu/label_used.hh | 5 +-
milena/mln/accu/pair.hh | 26 +
milena/mln/accu/stat/variance.hh | 4 +-
milena/mln/border/thickness.hh | 4 +
milena/mln/canvas/labeling/blobs.hh | 22 +-
milena/mln/convert/from_to.hxx | 31 +
milena/mln/convert/to_qimage.hh | 270 ++++++
milena/mln/convert/to_qimage_nocopy.hh | 178 ++++
milena/mln/core/alias/dpoint1d.hh | 4 +
milena/mln/core/alias/dpoint2d.hh | 4 +
milena/mln/core/alias/dpoint3d.hh | 4 +
milena/mln/core/alias/neighb3d.hh | 42 +
milena/mln/core/concept/function.hh | 43 +
milena/mln/core/image/image3d.hh | 9 +-
milena/mln/core/image/imorph/interpolated.hh | 13 +-
milena/mln/core/image/imorph/labeled_image.hh | 2 +
milena/mln/core/internal/box_impl.hh | 61 ++-
milena/mln/core/internal/labeled_image_base.hh | 31 +-
milena/mln/core/point.hh | 51 +-
milena/mln/core/routine/extend.hh | 57 ++-
milena/mln/core/site_set/box.hh | 37 +-
milena/mln/data/fill_with_value.hh | 3 +-
milena/mln/data/paste_without_localization.hh | 310 ++++++-
milena/mln/data/split.hh | 99 ++
milena/mln/debug/mosaic.hh | 141 +++
milena/mln/debug/slices_2d.hh | 15 +-
milena/mln/debug/z_order.hh | 159 +++
milena/mln/draw/all.hh | 1 +
milena/mln/draw/box.hh | 5 +-
milena/mln/draw/box_plain.hh | 92 ++
milena/mln/draw/dashed_line.hh | 113 +++
milena/mln/draw/line.hh | 1 +
milena/mln/fun/all.hh | 2 +
milena/mln/fun/internal/x2x_linear_impl.hh | 20 +-
milena/mln/fun/n2v/all.hh | 51 +
milena/mln/fun/n2v/white_gaussian.hh | 104 ++
milena/mln/fun/v2v/all.hh | 1 +
milena/mln/fun/v2v/hsl_to_rgb.hh | 3 +
milena/mln/fun/v2v/qt_rgb_to_int_u.hh | 71 ++
milena/mln/fun/v2v/rgb_to_int_u.hh | 64 ++
milena/mln/fun/x2x/composed.hh | 18 +-
milena/mln/fun/x2x/rotation.hh | 5 +-
milena/mln/fun/x2x/translation.hh | 6 +-
milena/mln/geom/all.hh | 4 +-
milena/mln/geom/horizontal_symmetry.hh | 194 ++++
milena/mln/geom/nslices.hh | 68 ++
milena/mln/geom/nslis.hh | 68 --
milena/mln/geom/rotate.hh | 18 +-
milena/mln/geom/size3d.hh | 5 +-
milena/mln/geom/vertical_symmetry.hh | 196 ++++
milena/mln/histo/compute.hh | 15 +-
milena/mln/histo/equalize.hh | 97 ++
milena/mln/io/dicom/all.hh | 4 +-
milena/mln/io/dicom/get_header.hh | 107 ++
milena/mln/io/dicom/load.hh | 17 +-
milena/mln/io/dump/all.hh | 1 +
milena/mln/io/dump/get_header.hh | 127 +++
milena/mln/io/dump/save.hh | 3 +
milena/mln/io/magick/save.hh | 21 +-
milena/mln/io/plot/save.hh | 28 +-
milena/mln/io/pnm/load.hh | 3 +-
milena/mln/io/raw/all.hh | 49 +
milena/mln/io/raw/get_header.hh | 135 +++
milena/mln/io/raw/load.hh | 226 +++++
milena/mln/io/raw/save.hh | 177 ++++
milena/mln/labeling/blobs.hh | 4 +-
milena/mln/labeling/blobs_and_compute.hh | 57 +-
milena/mln/labeling/colorize.hh | 75 ++-
milena/mln/labeling/compute.hh | 415 ++++++++-
milena/mln/labeling/pack.hh | 2 +-
milena/mln/labeling/relabel.hh | 23 +-
milena/mln/linear/gaussian.hh | 8 +-
milena/mln/linear/gaussian/impl.hh | 13 +-
milena/mln/literal/black.hh | 4 +
milena/mln/literal/colors.hh | 7 +-
milena/mln/literal/identity.hh | 4 +
milena/mln/literal/one.hh | 3 +
milena/mln/literal/origin.hh | 6 +-
milena/mln/literal/white.hh | 4 +
milena/mln/literal/zero.hh | 4 +
milena/mln/make/box3d.hh | 15 +-
milena/mln/make/image.hh | 7 +-
milena/mln/math/diff_abs.hh | 5 +-
milena/mln/registration/icp.hh | 5 +-
milena/mln/subsampling/antialiased.hh | 457 +++++++++
milena/mln/tag/init.hh | 4 +
milena/mln/topo/skeleton/crest.hh | 51 +-
milena/mln/trace/entering.hh | 3 +
milena/mln/trace/quiet.hh | 5 +-
milena/mln/transform/influence_zone_geodesic.hh | 13 +-
milena/mln/value/int_u.hh | 69 ++-
milena/mln/value/internal/make_generic_name.hh | 67 ++
milena/mln/value/label.hh | 22 +-
milena/mln/value/qt/rgb32.hh | 802 +++++++++++++++
milena/mln/value/rgb.hh | 11 +-
milena/mln/value/sign.hh | 10 +-
milena/mln/win/sline3d.hh | 76 ++
milena/mln/world/binary_2d/enlarge.hh | 4 +-
milena/mln/world/inter_pixel/full2image.hh | 4 +-
milena/sandbox/ChangeLog | 23 +
milena/sandbox/bench/README_CFLAGS | 8 +
milena/sandbox/bench/extract_vertical_lines.cc | 49 +
.../bench/fast_components_and_attributes.cc | 402 ++++++++
milena/sandbox/bench/fast_rows.cc | 247 +++++
milena/sandbox/bench/fast_tiles.cc | 140 +++
milena/sandbox/bin/labeling/colorize.cc | 24 +
milena/sandbox/bin/pgm_to_pbm.cc | 39 +
milena/sandbox/bin/ppm_negate.cc | 43 +
.../lazzara/scribo/binarization_naive/main.cc | 54 +
.../lazzara/scribo/binarization_naive/toto.cc | 28 +
milena/sandbox/lazzara/scribo/fill_holes/main.cc | 118 +++
.../separateurs_materialises/lines_pattern.cc | 69 ++
.../sandbox/lazzara/scribo/skeleton_crest/main.cc | 52 +
milena/tests/core/alias/box3d.cc | 5 +-
milena/tests/core/image/image3d.cc | 11 +-
milena/tests/core/other/box_runstart_piter.cc | 56 +-
milena/tests/core/site_set/Makefile.am | 2 +
milena/tests/core/site_set/box.cc | 42 +
milena/tests/data/Makefile.am | 4 +
milena/tests/data/paste_without_localization.cc | 81 ++
milena/tests/data/split.cc | 54 +
milena/tests/fun/v2v/Makefile.am | 9 +
milena/tests/fun/v2v/qt_rgb_to_int_u.cc | 44 +
milena/tests/geom/Makefile.am | 12 +-
milena/tests/geom/horizontal_symmetry.cc | 50 +
milena/tests/geom/nslices.cc | 38 +
milena/tests/geom/nslis.cc | 37 -
milena/tests/geom/vertical_symmetry.cc | 49 +
milena/tests/io/pbms/load.cc | 3 +-
milena/tests/io/pgms/load.cc | 3 +-
milena/tests/io/ppms/load.cc | 3 +-
.../transform/bench_closest_point_geodesic.cc | 9 +-
scribo/ChangeLog | 689 +++++++++++++-
scribo/binarization/binarize.hh | 180 ----
scribo/binarization/global_threshold.hh | 90 ++
scribo/binarization/global_threshold_auto.hh | 168 ++++
scribo/binarization/internal/first_pass_functor.hh | 151 +++
scribo/binarization/local_threshold.hh | 221 +++++
scribo/binarization/sauvola.hh | 23 +-
scribo/binarization/sauvola_ms.hh | 1017 ++++++++++++++++++++
scribo/binarization/sauvola_ms_split.hh | 148 +++
scribo/binarization/sauvola_threshold.hh | 478 ---------
scribo/binarization/sauvola_threshold_image.hh | 490 ++++++++++
scribo/binarization/simple.hh | 166 ----
scribo/canvas/integral_browsing.hh | 435 +++++++++
scribo/core/component_info.hh | 203 ++++
scribo/core/component_set.hh | 560 +++++++++++
scribo/core/init_integral_image.hh | 96 ++
scribo/core/line_info.hh | 903 +++++++++++++++++
scribo/core/line_set.hh | 418 ++++++++
scribo/core/macros.hh | 24 +-
scribo/core/object_groups.hh | 178 +++-
scribo/core/object_links.hh | 141 +++-
scribo/core/tag/anchor.hh | 68 ++
scribo/core/tag/component.hh | 118 +++
scribo/core/tag/line.hh | 213 ++++
scribo/debug/alignment_decision_image.hh | 61 +-
scribo/debug/bboxes_enlarged_image.hh | 136 +++
scribo/debug/decision_image.hh | 30 +-
scribo/debug/links_decision_image.hh | 34 +-
scribo/debug/looks_like_a_text_line_image.hh | 130 +++
scribo/debug/mean_and_base_lines_image.hh | 147 +++
scribo/debug/save_bboxes_image.hh | 60 ++-
scribo/debug/save_linked_bboxes_image.hh | 112 ++-
scribo/debug/usage.hh | 13 +-
scribo/demo/Makefile.am | 3 +-
scribo/demo/demo.pro | 16 -
scribo/demo/demo.qrc | 13 -
scribo/demo/icons/document-open.png | Bin 1550 -> 0 bytes
scribo/demo/icons/edit-find.png | Bin 1636 -> 0 bytes
scribo/demo/icons/format-indent-more.png | Bin 766 -> 0 bytes
scribo/demo/icons/go-next.png | Bin 1219 -> 0 bytes
scribo/demo/icons/image-x-generic.png | Bin 1163 -> 0 bytes
scribo/demo/icons/list-add.png | Bin 601 -> 0 bytes
scribo/demo/icons/ocr.png | Bin 14929 -> 0 bytes
scribo/demo/icons/text-x-generic.png | Bin 744 -> 0 bytes
scribo/demo/icons/view-refresh.png | Bin 2024 -> 0 bytes
scribo/demo/icons/x-office-spreadsheet.png | Bin 1518 -> 0 bytes
scribo/demo/review/Makefile.am | 11 +
scribo/demo/review/icons/document-open.png | Bin 0 -> 1550 bytes
scribo/demo/review/icons/edit-find.png | Bin 0 -> 1636 bytes
scribo/demo/review/icons/format-indent-more.png | Bin 0 -> 766 bytes
scribo/demo/review/icons/go-next.png | Bin 0 -> 1219 bytes
scribo/demo/review/icons/image-x-generic.png | Bin 0 -> 1163 bytes
scribo/demo/review/icons/list-add.png | Bin 0 -> 601 bytes
scribo/demo/review/icons/ocr.png | Bin 0 -> 14929 bytes
scribo/demo/review/icons/text-x-generic.png | Bin 0 -> 744 bytes
scribo/demo/review/icons/view-refresh.png | Bin 0 -> 2024 bytes
scribo/demo/review/icons/x-office-spreadsheet.png | Bin 0 -> 1518 bytes
scribo/demo/review/review.pro | 16 +
scribo/demo/review/review.qrc | 13 +
scribo/demo/review/src/main.cc | 42 +
scribo/demo/review/src/mainwindow.cc | 570 +++++++++++
scribo/demo/review/src/mainwindow.hh | 138 +++
scribo/demo/review/ui/mainwindow.ui | 340 +++++++
scribo/demo/shared/icons/Symbols-Delete-icon.png | Bin 0 -> 3704 bytes
scribo/demo/shared/icons/accept-icon.png | Bin 0 -> 4858 bytes
scribo/demo/shared/icons/close.gif | Bin 0 -> 340 bytes
scribo/demo/shared/icons/crop-icon.png | Bin 0 -> 228 bytes
scribo/demo/shared/icons/image-add-icon.png | Bin 0 -> 2917 bytes
scribo/demo/shared/icons/image-edit-icon.png | Bin 0 -> 2305 bytes
scribo/demo/shared/icons/image-multi-icon.png | Bin 0 -> 2033 bytes
scribo/demo/shared/icons/image-next-icon.png | Bin 0 -> 3008 bytes
scribo/demo/shared/icons/image-remove-icon.png | Bin 0 -> 3127 bytes
scribo/demo/shared/icons/next-icon.png | Bin 0 -> 4611 bytes
scribo/demo/shared/icons/page-down-icon.png | Bin 0 -> 3450 bytes
scribo/demo/shared/icons/page-search-icon.png | Bin 0 -> 3101 bytes
scribo/demo/shared/icons/rotate_ccw.png | Bin 0 -> 4200 bytes
scribo/demo/shared/icons/rotate_cw.png | Bin 0 -> 4161 bytes
scribo/demo/shared/icons/search-add-icon.png | Bin 0 -> 4274 bytes
scribo/demo/shared/icons/search-remove-icon.png | Bin 0 -> 4196 bytes
scribo/demo/shared/shared.qrc | 20 +
scribo/demo/shared/src/bak/crop_item.cc | 332 +++++++
scribo/demo/shared/src/bak/crop_item.hh | 100 ++
scribo/demo/shared/src/bak/image_viewer.cc | 242 +++++
scribo/demo/shared/src/bak/image_viewer.hh | 116 +++
scribo/demo/shared/src/bak/types.hh | 50 +
scribo/demo/shared/src/browse_widget.cc | 72 ++
scribo/demo/shared/src/browse_widget.hh | 78 ++
scribo/demo/shared/src/crop_item.cc | 313 ++++++
scribo/demo/shared/src/crop_item.hh | 103 ++
scribo/demo/shared/src/image_viewer.cc | 344 +++++++
scribo/demo/shared/src/image_viewer.hh | 135 +++
.../shared/src/internal.bak/interactive_scene.cc | 286 ++++++
.../shared/src/internal.bak/interactive_scene.hh | 108 +++
.../shared/src/internal.bak/selection_rectangle.cc | 241 +++++
.../shared/src/internal.bak/selection_rectangle.hh | 91 ++
.../demo/shared/src/internal/interactive_scene.cc | 87 ++
.../demo/shared/src/internal/interactive_scene.hh | 84 ++
.../shared/src/internal/selection_rectangle.cc | 241 +++++
.../shared/src/internal/selection_rectangle.hh | 91 ++
scribo/demo/shared/src/to_mln_image.hh | 77 ++
scribo/demo/shared/src/types.hh | 50 +
scribo/demo/shared/ui/browse_widget.ui | 106 ++
scribo/demo/shared/ui/crop_widget.ui | 34 +
scribo/demo/shared/ui/image_viewer.ui | 284 ++++++
scribo/demo/shared/ui/interactive_scene.cc | 143 +++
scribo/demo/shared/ui/interactive_scene.hh | 87 ++
scribo/demo/shared/ui/rotate_widget.ui | 34 +
scribo/demo/src/main.cc | 42 -
scribo/demo/src/mainwindow.cc | 570 -----------
scribo/demo/src/mainwindow.hh | 138 ---
scribo/demo/ui/mainwindow.ui | 340 -------
scribo/demo/wizard/images/dematerialization.png | Bin 0 -> 76309 bytes
scribo/demo/wizard/src/crop_page.cc | 48 +
scribo/demo/wizard/src/crop_page.hh | 60 ++
scribo/demo/wizard/src/crop_widget.cc | 37 +
scribo/demo/wizard/src/crop_widget.hh | 62 ++
scribo/demo/wizard/src/doc_type.hh | 51 +
scribo/demo/wizard/src/doc_type_page.cc | 48 +
scribo/demo/wizard/src/doc_type_page.hh | 61 ++
scribo/demo/wizard/src/doc_type_widget.cc | 38 +
scribo/demo/wizard/src/doc_type_widget.hh | 64 ++
scribo/demo/wizard/src/load_page.cc | 70 ++
scribo/demo/wizard/src/load_page.hh | 67 ++
scribo/demo/wizard/src/load_widget.cc | 56 ++
scribo/demo/wizard/src/load_widget.hh | 64 ++
scribo/demo/wizard/src/main.cc | 15 +
scribo/demo/wizard/src/main_window.cc | 129 +++
scribo/demo/wizard/src/main_window.hh | 70 ++
scribo/demo/wizard/src/mln_widgets.cc | 7 +
scribo/demo/wizard/src/preprocessing_page.cc | 61 ++
scribo/demo/wizard/src/preprocessing_page.hh | 66 ++
scribo/demo/wizard/src/preprocessing_task.hh | 61 ++
scribo/demo/wizard/src/preprocessing_widget.cc | 87 ++
scribo/demo/wizard/src/preprocessing_widget.hh | 65 ++
scribo/demo/wizard/src/process_page.cc | 73 ++
scribo/demo/wizard/src/process_page.hh | 64 ++
scribo/demo/wizard/src/process_widget.cc | 80 ++
scribo/demo/wizard/src/process_widget.hh | 71 ++
scribo/demo/wizard/src/rotate_page.cc | 45 +
scribo/demo/wizard/src/rotate_page.hh | 60 ++
scribo/demo/wizard/src/rotate_widget.cc | 38 +
scribo/demo/wizard/src/rotate_widget.hh | 62 ++
scribo/demo/wizard/src/runner.cc | 279 ++++++
scribo/demo/wizard/src/runner.hh | 84 ++
scribo/demo/wizard/src/test.cc | 16 +
scribo/demo/wizard/ui/doc_type_widget.ui | 115 +++
scribo/demo/wizard/ui/load_widget.ui | 110 +++
scribo/demo/wizard/ui/main_window.ui | 216 +++++
scribo/demo/wizard/ui/preprocessing_widget.ui | 223 +++++
scribo/demo/wizard/wizard.pro | 67 ++
scribo/demo/wizard/wizard.qrc | 5 +
scribo/draw/bounding_box_links.hh | 75 +-
scribo/draw/bounding_boxes.hh | 31 +-
scribo/draw/groups_bboxes.hh | 93 ++
scribo/estim/object_groups_v_thickness.hh | 26 +-
scribo/filter/common/objects_photo.hh | 42 +-
scribo/filter/internal/compute.hh | 30 +-
scribo/filter/object_groups_size_ratio.hh | 3 +-
scribo/filter/object_groups_small.hh | 11 +-
scribo/filter/object_groups_v_thickness.hh | 5 +-
scribo/filter/object_groups_with_holes.hh | 328 +++++++
scribo/filter/object_links_bbox_h_ratio.hh | 14 +-
scribo/filter/object_links_bbox_overlap.hh | 41 +-
scribo/filter/object_links_bbox_ratio.hh | 27 +-
scribo/filter/object_links_bottom_aligned.hh | 23 +-
scribo/filter/object_links_center_aligned.hh | 2 +-
scribo/filter/object_links_left_aligned.hh | 122 +++
scribo/filter/object_links_non_aligned_simple.hh | 123 ++-
scribo/filter/object_links_right_aligned.hh | 121 +++
scribo/filter/object_links_top_aligned.hh | 13 +-
scribo/filter/objects_small.hh | 74 +-
scribo/filter/objects_thick.hh | 58 +-
scribo/filter/objects_thin.hh | 103 +-
scribo/filter/objects_with_holes.hh | 580 +++++++++++
scribo/fun/v2b/label_to_bool.hh | 66 ++
scribo/fun/v2b/objects_small_filter.hh | 39 +-
scribo/io/xml/save_text_lines.hh | 154 +++
scribo/preprocessing/denoise.hh | 106 ++
scribo/preprocessing/denoise_bg.hh | 156 +++
scribo/preprocessing/denoise_fg.hh | 131 +++
scribo/preprocessing/homogeneous_contrast.hh | 119 +++
scribo/preprocessing/rotate_90.hh | 159 +++
scribo/preprocessing/unskew.hh | 6 +-
scribo/primitive/extract/components.hh | 145 +++
scribo/primitive/extract/lines_pattern.hh | 23 +-
scribo/primitive/extract/lines_v_thick.hh | 4 +-
scribo/primitive/extract/objects.hh | 138 ---
scribo/primitive/group/apply.hh | 76 +-
scribo/primitive/group/from_double_link.hh | 18 +-
scribo/primitive/group/from_single_link.hh | 31 +-
scribo/primitive/internal/find_left_link.hh | 108 ---
scribo/primitive/internal/find_right_link.hh | 108 ---
scribo/primitive/internal/find_root.hh | 12 +-
scribo/primitive/internal/init_link_array.hh | 15 +-
scribo/primitive/internal/is_invalid_link.hh | 100 --
scribo/primitive/internal/is_link_valid.hh | 14 +-
scribo/primitive/internal/rd.hh | 192 ++++
scribo/primitive/link/compute.hh | 51 +-
scribo/primitive/link/compute_several.hh | 2 +-
scribo/primitive/link/internal/compute_anchor.hh | 249 +++++
scribo/primitive/link/internal/find_link.hh | 22 +-
.../primitive/link/internal/find_several_links.hh | 105 ++-
.../link/internal/link_center_dmax_base.hh | 179 ----
.../link/internal/link_center_dmax_ratio_base.hh | 175 ----
.../primitive/link/internal/link_functor_base.hh | 126 ++-
.../primitive/link/internal/link_ms_dmax_base.hh | 27 +-
.../link/internal/link_ms_dmax_ratio_base.hh | 28 +-
.../link/internal/link_several_dmax_base.hh | 265 +++++
.../link/internal/link_single_dmax_base.hh | 167 ++++
.../link/internal/link_single_dmax_ratio_base.hh | 172 ++++
scribo/primitive/link/merge_double_link.hh | 33 +-
.../link/with_several_right_links_overlap.hh | 10 +-
scribo/primitive/link/with_single_down_link.hh | 183 ++++
scribo/primitive/link/with_single_left_link.hh | 37 +-
.../link/with_single_left_link_dmax_ratio.hh | 38 +-
scribo/primitive/link/with_single_right_link.hh | 33 +-
.../link/with_single_right_link_bottom.hh | 39 +-
.../link/with_single_right_link_dmax_ratio.hh | 60 +-
.../primitive/link/with_single_right_link_top.hh | 32 +-
scribo/primitive/link/with_single_up_link.hh | 183 ++++
scribo/primitive/regroup/from_single_left_link.hh | 140 +++
scribo/scribo.mk | 3 +-
scribo/src/Makefile.am | 27 +
scribo/src/afp/components.hh | 195 ++++
scribo/src/afp/link.hh | 142 +++
scribo/src/afp/regroup.hh | 84 ++
scribo/src/binarization/Makefile.am | 74 ++-
.../src/binarization/pgm_global_threshold_auto.cc | 62 ++
scribo/src/binarization/pgm_sauvola.cc | 66 ++
scribo/src/binarization/pgm_sauvola_ms.cc | 97 ++
scribo/src/binarization/ppm_fg_sauvola_ms.cc | 104 ++
scribo/src/binarization/ppm_sauvola.cc | 61 ++
scribo/src/binarization/ppm_sauvola_ms.cc | 97 ++
scribo/src/binarization/ppm_sauvola_ms_split.cc | 98 ++
scribo/src/binarization/sauvola.cc | 60 --
scribo/src/binarization/sauvola_pgm.cc | 63 --
scribo/src/binarization/simple.cc | 61 --
scribo/src/debug/Makefile.am | 26 +-
.../src/debug/show_info_median_inter_characters.cc | 256 +++++
scribo/src/debug/show_info_x_height.cc | 281 ++++++
.../src/debug/show_left_right_links_validation.cc | 122 ---
scribo/src/debug/show_links_bbox_h_ratio.cc | 2 +-
scribo/src/debug/show_links_bottom_aligned.cc | 24 +-
.../show_links_left_right_links_validation.cc | 122 +++
.../src/debug/show_links_several_right_overlap.cc | 51 +-
scribo/src/debug/show_links_single_down.cc | 157 +++
.../debug/show_links_single_down_left_aligned.cc | 99 ++
.../debug/show_links_single_down_right_aligned.cc | 99 ++
scribo/src/debug/show_links_single_left.cc | 4 +-
.../src/debug/show_links_single_left_dmax_ratio.cc | 4 +-
scribo/src/debug/show_links_single_right.cc | 4 +-
.../debug/show_links_single_right_dmax_ratio.cc | 4 +-
scribo/src/debug/show_links_single_up.cc | 157 +++
.../src/debug/show_links_single_up_left_aligned.cc | 100 ++
.../debug/show_links_single_up_right_aligned.cc | 98 ++
scribo/src/debug/show_links_top_aligned.cc | 22 +-
scribo/src/filter/Makefile.am | 6 +-
scribo/src/filter/objects_with_holes.cc | 70 ++
scribo/src/filter/objects_with_holes_pgm.cc | 71 ++
scribo/src/pbm_lines_in_doc.cc | 299 ++++++
scribo/src/preprocessing/Makefile.am | 9 +-
scribo/src/preprocessing/denoise.cc | 69 ++
scribo/src/preprocessing/homogeneous_contrast.cc | 44 +
scribo/src/preprocessing/split_bg_fg.cc | 7 +-
scribo/src/preprocessing/subsample.cc | 65 ++
scribo/src/text/Makefile.am | 10 +
scribo/src/text/pbm_recognition.cc | 65 ++
scribo/src/text_in_article.cc | 331 +++++++
scribo/src/text_in_photo_pbm_fast.cc | 441 +++++++++
scribo/src/text_in_photo_ppm.cc | 246 +++++-
scribo/src/text_in_photo_ppm_fast.cc | 635 ++++++++++++
scribo/subsampling/integral.hh | 420 ++++++++
scribo/subsampling/integral_single_image.hh | 459 +++++++++
scribo/tests/Makefile.am | 2 +
scribo/tests/binarization/Makefile.am | 30 +
scribo/tests/binarization/global_threshold.cc | 24 +
scribo/tests/binarization/local_threshold.cc | 29 +
scribo/tests/core/Makefile.am | 27 +
scribo/tests/core/object_image.cc | 72 ++
scribo/tests/filter/Makefile.am | 3 +
scribo/tests/filter/objects_with_holes.cc | 49 +
scribo/tests/preprocessing/Makefile.am | 4 +-
scribo/tests/preprocessing/rotate_90.cc | 59 ++
scribo/text/clean.hh | 12 +-
scribo/text/merging.hh | 933 ++++++++++++++++++
scribo/text/recognition.hh | 130 ++-
427 files changed, 35277 insertions(+), 4553 deletions(-)
diff --cc ChangeLog
index 44386d3,a2493ff..f0b86a5
--- a/ChangeLog
+++ b/ChangeLog
@@@ -1,362 -1,23 +1,382 @@@
+ 2010-06-03 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * configure.ac: Check for Qt library using AutoTroll.
+
+ 2010-05-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * configure.ac: Do not configure scribo/src/multi_scale anymore.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * configure.ac: Configure scribo/tests/binarization.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * configure.ac: Configure scribo/demo/review.
+
+ 2009-12-15 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * configure.ac: Configure scribo/tests/core.
+
+2010-06-24 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add `mesh-segm-skel' to the branches to be uploaded (as snapshot).
+
+ * lrde-upload.sh: Here.
+
+2010-04-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add variables for C++ compiler flags for Scribo.
+
+ * configure.ac (SCRIBO_CXXFLAGS, SCRIBO_TESTS_CXXFLAGS):
+ New configure variables.
+
+2010-06-04 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Set decent compiler flags when the Intel C++ compiler is used.
+
+ * configure.ac: Here.
+
+2010-04-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add a simple test to identify the Intel C++ compiler.
+
+ * configure.ac: Here.
+
+2010-06-03 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Clean up a bit Olena's Makefiles.
+
+ * Makefile.am, external/Makefile.am: Here.
+
+2010-06-02 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * lrde-upload.sh: Fix and factor uses of chmod.
+
+2010-05-03 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * AUTHORS: Update.
+
+2010-05-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add missing copyright headers.
+
+ * build-aux/devtools.sh,
+ * build-aux/devtools_utils.sh,
+ * build-aux/generate_dist_headers.sh,
+ * build-aux/make_report_utils.sh,
+ * configure.ac,
+ * lrde-upload.sh:
+ Here.
+
+2010-05-28 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add `swilena' to the branches to be uploaded.
+
+ * lrde-upload.sh: Here.
+ Add a copyright header.
+
+2010-05-10 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Upload only branches master and next, in their own directories.
+
+ * lrde-upload.sh: Here.
+ Inspired from Vaucanson's lrde-upload.sh.
+
+2010-04-29 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Upload only the HTML version of the user reference manual.
+
+ * lrde-upload.sh: Here.
+
+2010-04-29 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Change permissions on uploaded files instead of on original files.
+
+ * lrde-upload.sh: Here.
+
+2010-04-29 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix read permissions on uploaded PDF files.
+
+ * lrde-upload.sh: Here.
+
+2010-04-27 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Improve lrde-upload.sh.
+
+ * lrde-upload.sh: Be more robust to cases of missing files.
+
+2010-04-26 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Update lrde-upload.sh.
+
+ * lrde-upload.sh: Catch up with the tree's current layout.
+
+2010-04-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Document configure variables.
+
+ * configure.ac: Here.
+
+2010-04-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Work around g++ 4.2's behavior regarding strict aliasing.
+
+ * configure.ac: Set STRICT_ALIASING_CXXFLAGS to
+ `-fno-strict-aliasing' when the compiler is g++ 4.2.
+
+2010-04-21 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Catch up with the new interface of Scribo's unit tests generator.
+
+ * bootstrap: Here.
+
+2010-04-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Move a test from Scribo into Milena.
+
+ * scribo/test.cc: Move...
+ * milena/tests/util/ord.cc: ...here.
+
+2010-04-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Unconditionally regen files not recorded in the repository.
+
+ * bootstrap: Here.
+
+2010-04-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * configure.ac: Add option `--enable-scribo'.
+
+2010-04-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * configure.ac: Protect variables with double quotes.
+
+2010-04-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Improve Swilena's configuration.
+
+ * m4/with-swilena.m4: Remove file.
+ Supeseded by other tests performed...
+ * configure.ac: ...here.
+
+2010-04-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Require Python >= 2.4 for Swilena.
+
+ * m4/with-swilena.m4 (_OLN_WITH_SWIG): Here.
+
+2010-04-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Require SWIG >= 1.3.35 for Swilena.
+
+ * m4/with-swilena.m4 (_OLN_WITH_SWIG): Here.
+
+2010-03-31 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * bootstrap: Check for HeVeA instead of TeX4ht.
+
+2010-03-30 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Revert to HeVeA to generate HTML from LaTeX.
+
+ * build-aux/tex.mk (TEXI2HTML): Disable flag `--tex4ht'.
+
+2010-03-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * Makefile.am (LOCAL_RECURSIVE_TARGETS): Remove doc.
+
+2010-03-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Regen INSTALL using autoreconf.
+
+ * INSTALL: New.
+
+2010-03-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Move INSTALL's contents to README and HACKING.
+
+ * INSTALL: Remove this file and move its contents...
+ * README: ...here, and...
+ * HACKING: ...here (new file).
+
+2010-03-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Remove useless regen actions from bootstrap.
+
+ * bootstrap (gen_doc_figures): Remove this function, and its uses
+ as well.
+
+2010-03-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add options to boostrap.
+
+ * bootstrap: Here.
+ (usage): New function. Call it when invoked with option
+ `-h, --help'.
+ Regen files stored in the repository only if invoked with option
+ `-r, --regen'.
+
+2010-03-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * bootstrap: Make a more portable use of mktemp.
+
+2010-03-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * bootstrap: Regen milena/doc/figures.mk.
+
+2010-03-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * bootstrap: Various fixes.
+
+2010-03-18 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * bootstrap: Regen the list of split outputs of the documentation.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * bootstrap: Be terser.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * bootstrap: Don't remove the automatically collected temp dir.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * bootstrap: Regen the list of outputs of the documentation.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * bootstrap: Regen the list of outputs rules and timestamps.
+
+2010-03-16 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * bootstrap: Regen the list of split examples of the documentation.
+
+2010-03-16 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * bootstrap: Regen the list of examples of the documentation.
+
+2010-03-16 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Catch up with milena/doc figure generators.
+
+ * bootstrap: Here.
+
+2010-03-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Disable the implicit generation of HTML from LaTeX.
+
+ * build-aux/tex.mk (.tex.html): Remove this rule, since (TeX4ht)
+ HTML outputs may contain more than one file (e.g., CSS style
+ sheets, images, etc.).
+ (SUFFIXES): Remove .html.
+
+2010-03-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have texi2dvi use TeX4ht instead of HeVeA to produce HTML outputs.
+
+ * build-aux/tex.mk (TEXI2HTML): Add --tex4ht.
+ * bootstrap (tempdir): Check for TeX4ht, dvipng and convert (from
+ ImageMagick).
+
+2010-03-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Support HTML outputs in tex.mk.
+
+ * build-aux/tex.mk (SUFFIXES): Add .html.
+ (.tex.html): New rule.
+ (TEXI2HTML, TEXI2HTML_FLAGS): New variables.
+
+2010-03-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Automake configuration.
+
+ * configure.ac: Remove option `foreign'.
+ Pass option `subdir-objects'.
+
+2010-03-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have bootstrap check for HeVeA 1.10.
+
+ * bootstrap (require): Take a flag as an optional second argument.
+ Use it to check for HeVeA 1.10.
+
+2010-03-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add texi2dvi as well as a Make helper to use it.
+
+ * build-aux/texi2dvi: New script.
+ Imported from Texinfo.
+ * build-aux/tex.mk: New Makefile helper.
+ Inspired by LRDE share/style/tex.mk.
+ * build-aux/Makefile.am (EXTRA_DIST): Add texi2dvi.
+
+2010-03-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * configure.ac: Configure milena/doc/tools/data.hh.
+
+2010-03-08 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Require Doxygen 1.5.6 at bootstrapping time.
+
+ * bootstrap: Here.
+ (require): Be more tolerant w.r.t. version messages.
+
+2010-03-08 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * bootstrap: Fix a typo in an error message.
+
+2010-03-03 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * configure.ac: Do not configure milena/doc/examples/Makefile.
+
+2010-03-03 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * configure.ac: Do not configure milena/doc/white_paper/Makefile.
+
+2010-03-03 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * configure.ac: Do not configure milena/doc/technical/Makefile.
+
+2010-03-03 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * configure.ac: Do not configure milena/doc/tutorial/Makefile.
+
+2010-03-02 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * configure.ac: Do not configure milena/doc/ref_guide/Makefile.
+
+2010-03-02 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Stop pruning Makefiles under milena/doc/.
+
+ * Makefile.am (LRDE_STRIPPED_DIST_FILES): Remove
+ $(distdir)/milena/doc/Makefile.am,
+ $(distdir)/milena/doc/ref_guide/Makefile.am,
+ $(distdir)/milena/doc/tutorial/Makefile.am and
+ $(distdir)/milena/doc/white_paper/Makefile.am.
+
+2010-03-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Aesthetic changes.
+
+ * build-aux/regen-recursive.mk,
+ * build-aux/extra-recursive-targets.mk:
+ Here.
+ Help Emacs find out the nature of these files.
+
+2010-03-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * AUTHORS: Update.
+
+2009-10-27 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add missing copyright headers to M4 files.
+
+ * m4/oln-with-lib.m4, m4/with-swilena.m4: Here.
+
2009-10-02 Roland Levillain <roland(a)lrde.epita.fr>
Configure Makefiles under milena/apps/papers/.
diff --cc configure.ac
index 20efb20,0bdaa3b..e6b01b8
--- a/configure.ac
+++ b/configure.ac
@@@ -210,10 -165,14 +210,15 @@@ OLN_WITH_LIB([TIFF], [tiff.h], [tiff]
OLN_WITH_LIB([GDCM], [gdcm-2.0/gdcmReader.h], [gdcmCommon], [gdcm], [GDCM],
[-lgdcmzlib])
-# Tesseract
-OLN_WITH_LIB([TESSERACT], [tesseract/baseapi.h], [tesseract_full], [tesseract], [TESSERACT])
+# Tesseract.
+OLN_WITH_LIB([TESSERACT], [tesseract/baseapi.h], [tesseract_full],
+ [tesseract], [TESSERACT])
+ # Qt.
+ AT_WITH_QT([], [], [],
+ AC_DEFINE([HAVE_QT], 1, [Define to 1 if we can use Qt]),
+ AC_DEFINE([HAVE_QT], 0))
+ AM_CONDITIONAL([HAVE_QT], [test x$QT_PATH != x])
## ---------------------------- ##
diff --cc milena/ChangeLog
index 214b7e6,1f2117e..0ba1a95
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@@ -1,1626 -1,479 +1,2102 @@@
+ 2010-06-03 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a function to convert qt::rgb32 values to int_u8.
+
+ * mln/fun/v2v/qt_rgb_to_int_u.hh: New.
+
+ * tests/fun/v2v/Makefile.am,
+ * tests/fun/v2v/qt_rgb_to_int_u.cc: New test.
+
+ 2010-06-03 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Use sites instead of pixels in canvas::labeling::blobs functors.
+
+ * mln/canvas/labeling/blobs.hh,
+ * mln/labeling/blobs.hh: Update members prototypes.
+
+ * mln/labeling/blobs_and_compute.hh: Do not construct on-the-fly
+ pixels anymore.
+
+ 2010-05-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes.
+
+ * mln/labeling/compute.hh: Add a missing include.
+
+ * mln/literal/colors.hh: Revamp header.
+
+ * mln/value/internal/make_generic_name.hh: Add a missing inline.
+
+ * mln/value/qt/rgb32.hh: Add a missing inline and a useless
+ literal.
+
+ * mln/value/rgb.hh: Add a fixme.
+
+ 2010-05-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/subsampling/antialiased.hh: Fix an invalid output buffer
+ size which may lead to a segfault.
+
+ 2010-05-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a new meta tool to deduce an extension type.
+
+ mln/core/routine/extend.hh: Introduce a new macro
+ mln_extension_type.
+
+ mln/geom/rotate.hh: Make use of this new macro.
+
+ 2010-05-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Reduce precision issues in transformations.
+
+ * mln/core/image/imorph/interpolated.hh: Make the vector type more
+ generic.
+
+ * mln/core/point.hh: Provide specific conversion operators for
+ float and double.
+
+ * mln/fun/internal/x2x_linear_impl.hh: Allow to set the matrix
+ value type.
+
+ * mln/fun/x2x/composed.hh,
+ * mln/fun/x2x/rotation.hh,
+ * mln/fun/x2x/translation.hh: Introduce data_t typedef passed to
+ x2x_linear_impl.
+
+ 2010-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add some code in my sandbox.
+
+ * sandbox/lazzara/scribo/binarization_naive/main.cc,
+ * sandbox/lazzara/scribo/binarization_naive/toto.cc,
+ * sandbox/lazzara/scribo/fill_holes/main.cc,
+ * sandbox/lazzara/scribo/separateurs_materialises/lines_pattern.cc,
+ * sandbox/lazzara/scribo/skeleton_crest/main.cc,
+ * sandbox/lazzara/skeleton_crest/main.cc: New.
+
+ 2010-05-21 edwin carlinet <carlinet(a)lrde.epita.fr>
+
+ Add MLN_WO_GLOBAL_VARS directive that prevents globals vars to be
+ included.
+
+ * mln/border/thickness.hh,
+ * mln/core/alias/dpoint1d.hh,
+ * mln/core/alias/dpoint2d.hh,
+ * mln/core/alias/dpoint3d.hh,
+ * mln/fun/v2v/hsl_to_rgb.hh,
+ * mln/literal/black.hh,
+ * mln/literal/colors.hh,
+ * mln/literal/identity.hh,
+ * mln/literal/one.hh,
+ * mln/literal/origin.hh,
+ * mln/literal/white.hh,
+ * mln/literal/zero.hh,
+ * mln/tag/init.hh,
+ * mln/trace/entering.hh,
+ * mln/trace/quiet.hh,
+ * mln/value/sign.hh: Add MLN_WO_GLOBAL_VARS define.
+
+ 2010-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add some code in my sandbox.
+
+ * milena/sandbox/lazzara/scribo/binarization_naive/main.cc,
+ * milena/sandbox/lazzara/scribo/binarization_naive/toto.cc,
+ * milena/sandbox/lazzara/scribo/fill_holes/main.cc,
+ * milena/sandbox/lazzara/scribo/separateurs_materialises/lines_pattern.cc,
+ * milena/sandbox/lazzara/scribo/skeleton_crest/main.cc,
+ * milena/sandbox/lazzara/skeleton_crest/main.cc: New.
+
+ 2010-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add fastest implementations in labeling::compute.
+
+ * mln/labeling/compute.hh: New fastest implementations.
+
+ 2010-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes in Milena.
+
+ * mln/canvas/labeling/blobs.hh: Fill extension.
+
+ * mln/data/paste_without_localization.hh: Check whether the
+ two images have the same domain.
+
+ * mln/labeling/blobs_and_compute.hh: Rename members.
+
+ * mln/labeling/colorize.hh: Add missing includes.
+
+ * mln/world/binary_2d/enlarge.hh: use def::coord.
+
+ 2010-04-13 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/labeling/blobs_and_compute.hh: Fix an invalid size of
+ reserved memory.
+
+ 2010-04-13 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/subsampling/antialiased.hh: Fix the use of 'factor round'.
+
+ 2010-04-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Rename nslis to nslices.
+
+ * mln/geom/nslis.hh,
+ * tests/geom/nslis.cc: Rename as...
+
+ * mln/geom/nslices.hh,
+ * tests/geom/nslices.cc: ... this.
+
+ * mln/core/image/image3d.hh,
+ * mln/core/internal/box_impl.hh,
+ * mln/core/site_set/box.hh,
+ * mln/debug/slices_2d.hh,
+ * mln/geom/all.hh,
+ * mln/geom/size3d.hh,
+ * mln/linear/gaussian.hh,
+ * mln/linear/gaussian/impl.hh,
+ * mln/make/box3d.hh,
+ * mln/make/image.hh,
+ * mln/registration/icp.hh,
+ * tests/core/alias/box3d.cc,
+ * tests/core/image/image3d.cc,
+ * tests/geom/Makefile.am,
+ * tests/io/pbms/load.cc,
+ * tests/io/pgms/load.cc,
+ * tests/io/ppms/load.cc,
+ * tests/transform/bench_closest_point_geodesic.cc: Rename nslis to
+ nslices.
+
+ 2010-04-07 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * img/picasso.ppm: Add a ppm version.
+
+ 2010-04-07 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/value/qt/rgb32.hh: Explicitly cast float values to unsigned.
+
+ 2010-04-06 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/debug/mosaic.hh: New. Construct a single image from a set of
+ images.
+
+ 2010-04-06 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/histo/equalize.hh: New. Add histogram equalization.
+
+ 2010-03-22 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add vertical/horizontal symmetry.
+
+ * mln/labeling/relabel.hh: Fix an invalid 'const'.
+
+ * mln/geom/horizontal_symmetry.hh,
+ * mln/geom/vertical_symmetry.hh: New routines.
+
+ * tests/geom/Makefile.am,
+ * tests/geom/horizontal_symmetry.cc,
+ * tests/geom/vertical_symmetry.cc: New tests.
+
+ 2010-03-22 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/debug/z_order.hh: New image data initializer.
+
+ 2010-03-22 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve antialiased subsampling.
+
+ * mln/subsampling/antialiased.hh: Add support for any factors and
+ for RGB images.
+
+ 2010-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a new routine to split a color image into three grayscale
+ images.
+
+ * mln/data/split.hh: New.
+
+ * tests/data/split.cc: New test.
+
+ 2010-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add new implementations of paste_without_localization.
+
+ * mln/data/paste_without_localization.hh: Add new implementations.
+
+ * tests/data/Makefile.am,
+ * tests/data/paste_without_localization.cc: New tests.
+
+ 2010-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve to_qimage routines.
+
+ * mln/convert/to_qimage.hh: rename namespace.
+
+ * mln/convert/to_qimage_nocopy.hh: Add a new implementation and
+ improve existing ones.
+
+ 2010-03-15 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/subsampling/antialiased.hh: Add support for reduction factor
+ different from 2 or 3.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/labeling/colorize.hh: Add support for value::qt::rgb32.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes in Milena.
+
+ * mln/accu/center.hh: Add nsites() member.
+
+ * mln/accu/pair.hh: Provide access to the underlying accus.
+
+ * mln/accu/stat/variance.hh: Use literal::zero.
+
+ * mln/core/internal/labeled_image_base.hh: Indent.
+
+ * mln/core/site_set/box.hh: Rename center() as pcenter().
+
+ * mln/labeling/blobs_and_compute.hh: Return the array of
+ accumulators.
+
+ * mln/labeling/colorize.hh: Make sure a color is not used
+ twice in the same image.
+
+ * mln/labeling/compute.hh: Add a new overload.
+
+ * mln/transform/influence_zone_geodesic.hh: Fix a
+ segmentation fault when an image had a border.
+
+ 2009-12-14 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add rbg_to_int_u function.
+
+ * mln/fun/v2v/all.hh: Include the new header.
+
+ * mln/fun/v2v/rgb_to_int_u.hh: New.
+
+ 2009-12-14 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add an antialiased subsampling.
+
+ * mln/subsampling/antialiased.hh: New.
+
+ 2009-12-14 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add hooks for subclasses in labeled_image_base.
+
+ * mln/core/internal/labeled_image_base.hh: New methods which can
+ be overridden in subclasses.
+
+ * mln/core/image/imorph/labeled_image.hh: Add a missing header.
+
+ 2010-03-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes.
+
+ * mln/accu/count_value.hh: Fix doc.
+
+ * mln/convert/from_to.hxx,
+ * mln/value/int_u.hh,
+ * mln/value/qt/rgb32.hhL: Add new from_to overloads.
+
+ * mln/convert/to_qimage.hh: Add a missing include.
+
+ * mln/convert/to_qimage_nocopy.hh: Rename an overload.
+
+ * mln/core/concept/function.hh: Add new concept n2v.
+
+ * mln/geom/rotate.hh: rename center() to pcenter().
+
+ * mln/histo/compute.hh: Fix a namespace ambiguity.
+
+ * mln/io/magick/save.hh: Handle qt::rgb32.
+
+ * mln/io/plot/save.hh: Add an overload for histograms.
+
+ * mln/labeling/relabel.hh: Make 'nlabels' const.
+
+ * mln/topo/skeleton/crest.hh: Fix a bug.
+
+ * tests/core/other/box_runstart_piter.cc: Write a valid test.
+
+ 2010-03-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/draw/dashed_line.hh: New draw line routine.
+
+ 2010-02-24 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add white gaussian noise function.
+
+ * mln/fun/all.hh: Include a new file.
+
+ * mln/fun/n2v/all.hh,
+ * mln/fun/n2v/white_gaussian.hh: New.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Cleanup to_qimage convertion routines.
+
+ * mln/convert/to_qimage.hh: Remove useless comments and move a
+ specific implementation...
+
+ * mln/convert/to_qimage_nocopy.hh: ... in this new file.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a routine to convert to a QImage.
+
+ * mln/convert/to_qimage.hh: New.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add box<>::merge.
+
+ * mln/core/site_set/box.hh: New member 'merge()'.
+
+ * tests/core/site_set/Makefile.am,
+ * tests/core/site_set/box.cc: New test.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Rename image3d<>::nslices to image3d<>::nslis.
+
+ * mln/core/image/image3d.hh,
+ * mln/debug/slices_2d.hh,
+ * tests/io/pbms/load.cc,
+ * tests/io/pgms/load.cc,
+ * tests/io/ppms/load.cc: Rename nslices to nslis.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Various small fixes.
+
+ * doc/tutorial/tutorial.tex: Add more contacts.
+
+ * mln/accu/label_used.hh: Do not use label<>::next().
+
+ * mln/draw/line.hh: Add a fixme.
+
+ * mln/io/dump/save.hh: Close the file.
+
+ * mln/io/plot/save.hh: Fix an invalid prototype.
+
+ * mln/io/pnm/load.hh: Fix an invalid static check.
+
+ * mln/io/raw/get_header.hh: Fix comment.
+
+ * mln/labeling/pack.hh: Disable a static check on symbolic values.
+
+ * mln/math/diff_abs.hh: Add a fixme.
+
+ * mln/world/inter_pixel/full2image.hh: Use mln_concrete().
+
+ * mln/data/fill_with_value.hh,
+ * mln/io/raw/load.hh,
+ * mln/io/raw/save.hh,
+ * mln/labeling/compute.hh,
+ * mln/registration/icp.hh: Aesthetic changes.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/topo/skeleton/crest.hh: Fix invalid PSI values for component
+ edge sites.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a routine to read dump files header.
+
+ * mln/io/dump/all.hh: Include a new file.
+
+ * mln/io/dump/get_header.hh: New.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a routine to read DICOM files header.
+
+ * mln/io/dicom/all.hh: Include a new file.
+
+ * mln/io/dicom/get_header.hh: New.
+
+ * mln/io/dicom/load.hh: Add more doc.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add A new routine to draw plain boxes.
+
+ * mln/draw/all.hh: Include new file.
+
+ * mln/draw/box.hh: Add a fixme.
+
+ * mln/draw/box_plain.hh: New.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add more implementations for box specializations.
+
+ * mln/core/internal/box_impl.hh: Add width, height and depth.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ First draft of raw format support.
+
+ * mln/io/raw/all.hh,
+ * mln/io/raw/get_header.hh,
+ * mln/io/raw/load.hh,
+ * mln/io/raw/save.hh: New.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add new 3D neighborhoods and windows.
+
+ * mln/core/alias/neighb3d.hh,
+ * mln/win/sline3d.hh: New.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a new rgb32 type for Qt compatibility.
+
+ * mln/convert/from_to.hxx: Declare conversion routines.
+
+ * mln/value/qt/rgb32.hh: New.
+
+ 2010-02-16 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix invalid value type names in dump format.
+
+ * mln/value/internal/make_generic_name.hh: New.
+
+ * mln/value/int_u.hh,
+ * mln/value/label.hh,
+ * mln/value/rgb.hh: Make use of the new routine to print a
+ correct type names in dump format.
+
+2010-04-26 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Clean Milena's tests' outputs during `make mostlyclean'.
+
+ * apps/mesh-segm-skel/Makefile.am,
+ * apps/papers/levillain.09.ismm/Makefile.am
+ (CLEANFILES): Rename as...
+ (MOSTLYCLEANFILES): ...this.
+
+2010-04-26 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Canonize Milena's tests' output file names.
+
+ * tests/binarization/threshold.cc,
+ * tests/data/approx/median.cc,
+ * tests/data/median.cc,
+ * tests/data/median_fast.cc,
+ * tests/data/naive/median.cc,
+ * tests/io/dump/dump.cc,
+ * tests/io/fits/fits.cc,
+ * tests/io/magick/save.cc,
+ * tests/io/off/load_save_bin.cc,
+ * tests/io/pbm/pbm.cc,
+ * tests/io/pbm/pbm_ascii.cc,
+ * tests/io/pbms/load.cc,
+ * tests/io/pgm/pgm.cc,
+ * tests/io/pgm/pgm16.cc,
+ * tests/io/pgm/pgm19.cc,
+ * tests/io/pgm/pgm27.cc,
+ * tests/io/pgm/pgm_ascii.cc,
+ * tests/io/pgms/load.cc,
+ * tests/io/ppm/ppm.cc,
+ * tests/io/ppm/ppm16.cc,
+ * tests/io/ppm/ppm23.cc,
+ * tests/io/ppms/load.cc,
+ * tests/linear/convolve.cc,
+ * tests/linear/convolve_2x1d.cc,
+ * tests/linear/convolve_directional.cc,
+ * tests/linear/gaussian.cc,
+ * tests/linear/gaussian/filter.cc,
+ * tests/linear/lap.cc,
+ * tests/linear/log.cc,
+ * tests/linear/sobel_2d.cc,
+ * tests/morpho/approx/dilation.cc,
+ * tests/morpho/approx/erosion.cc,
+ * tests/morpho/artificial_line_graph_image_wst.cc,
+ * tests/morpho/closing/algebraic.cc,
+ * tests/morpho/closing/approx/structural.cc,
+ * tests/morpho/closing/height.cc,
+ * tests/morpho/closing/leveling.cc,
+ * tests/morpho/closing/structural.cc,
+ * tests/morpho/closing/sum.cc,
+ * tests/morpho/closing/volume.cc,
+ * tests/morpho/complex_image_wst.cc,
+ * tests/morpho/contrast.cc,
+ * tests/morpho/dilation.cc,
+ * tests/morpho/general.cc,
+ * tests/morpho/gradient.cc,
+ * tests/morpho/hit_or_miss.cc,
+ * tests/morpho/laplacian.cc,
+ * tests/morpho/lena_line_graph_image_wst1.cc,
+ * tests/morpho/lena_line_graph_image_wst2.cc,
+ * tests/morpho/meyer_wst.cc,
+ * tests/morpho/meyer_wst_long.cc,
+ * tests/morpho/opening/algebraic.cc,
+ * tests/morpho/opening/approx/structural.cc,
+ * tests/morpho/opening/area.cc,
+ * tests/morpho/opening/height.cc,
+ * tests/morpho/opening/leveling.cc,
+ * tests/morpho/opening/structural.cc,
+ * tests/morpho/opening/sum.cc,
+ * tests/morpho/opening/volume.cc,
+ * tests/morpho/thinning.cc,
+ * tests/morpho/watershed/flooding.cc,
+ * tests/morpho/watershed/topological.cc:
+ Add the name of the test as prefix of its output file names.
+ * tests/binarization/Makefile.am,
+ * tests/data/Makefile.am,
+ * tests/data/approx/Makefile.am,
+ * tests/data/naive/Makefile.am,
+ * tests/io/dump/Makefile.am,
+ * tests/io/fits/Makefile.am,
+ * tests/io/magick/Makefile.am,
+ * tests/io/off/Makefile.am,
+ * tests/io/pbm/Makefile.am,
+ * tests/io/pbms/Makefile.am,
+ * tests/io/pgm/Makefile.am,
+ * tests/io/pgms/Makefile.am,
+ * tests/io/ppm/Makefile.am,
+ * tests/io/ppms/Makefile.am,
+ * tests/linear/Makefile.am,
+ * tests/linear/gaussian/Makefile.am,
+ * tests/morpho/Makefile.am,
+ * tests/morpho/approx/Makefile.am,
+ * tests/morpho/closing/Makefile.am,
+ * tests/morpho/closing/approx/Makefile.am,
+ * tests/morpho/opening/Makefile.am,
+ * tests/morpho/opening/approx/Makefile.am,
+ * tests/morpho/watershed/Makefile.am
+ (CLEANFILES): Adjust.
+ Rename as...
+ (MOSTLYCLEANFILES): ...this.
+
+2010-05-11 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add missing const qualifiers in iterators on complexes.
+
+ * mln/topo/internal/complex_set_iterator_base.hh
+ (complex_set_iterator_base<F, E>::complex_set_iterator_base)
+ (complex_set_iterator_base<F, E>::set_cplx):
+ Add const qualifier to argument.
+
+2010-06-03 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Clean up some tests in tests/morpho/.
+
+ * tests/morpho/rank_filter.cc: Do not include mln/io/pgm/save.hh.
+ * tests/morpho/skeleton_constrained.cc: Likewise.
+ (mln::show_connectivity_numbers): Move this function into the
+ global namespace to avoid the pollution of the `mln' namespace.
+ Aesthetic changes.
+
+2010-06-03 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Clean up a bit Milena's Makefiles.
+
+ * Makefile.am,
+ * apps/mesh-segm-skel/Makefile.am,
+ * mesh/Makefile.am,
+ * tests/Makefile.am,
+ * tests/accu/Makefile.am,
+ * tests/accu/image/Makefile.am,
+ * tests/accu/math/Makefile.am,
+ * tests/accu/shape/Makefile.am,
+ * tests/accu/site_set/Makefile.am,
+ * tests/accu/stat/Makefile.am,
+ * tests/algebra/Makefile.am,
+ * tests/arith/Makefile.am,
+ * tests/binarization/Makefile.am,
+ * tests/border/Makefile.am,
+ * tests/canvas/Makefile.am,
+ * tests/canvas/browsing/Makefile.am,
+ * tests/canvas/morpho/Makefile.am,
+ * tests/convert/Makefile.am,
+ * tests/convert/impl/Makefile.am,
+ * tests/core/Makefile.am,
+ * tests/core/alias/Makefile.am,
+ * tests/core/image/Makefile.am,
+ * tests/core/image/dmorph/Makefile.am,
+ * tests/core/image/imorph/Makefile.am,
+ * tests/core/image/vmorph/Makefile.am,
+ * tests/core/other/Makefile.am,
+ * tests/core/routine/Makefile.am,
+ * tests/core/site_set/Makefile.am,
+ * tests/data/Makefile.am,
+ * tests/data/approx/Makefile.am,
+ * tests/data/naive/Makefile.am,
+ * tests/debug/Makefile.am,
+ * tests/display/Makefile.am,
+ * tests/draw/Makefile.am,
+ * tests/estim/Makefile.am,
+ * tests/extension/Makefile.am,
+ * tests/extract/Makefile.am,
+ * tests/fun/Makefile.am,
+ * tests/fun/i2v/Makefile.am,
+ * tests/fun/p2b/Makefile.am,
+ * tests/fun/p2p/Makefile.am,
+ * tests/fun/p2v/Makefile.am,
+ * tests/fun/stat/Makefile.am,
+ * tests/fun/v2i/Makefile.am,
+ * tests/fun/v2v/Makefile.am,
+ * tests/fun/vv2v/Makefile.am,
+ * tests/fun/x2x/Makefile.am,
+ * tests/geom/Makefile.am,
+ * tests/graph/Makefile.am,
+ * tests/graph/attribute/Makefile.am,
+ * tests/histo/Makefile.am,
+ * tests/io/Makefile.am,
+ * tests/io/dicom/Makefile.am,
+ * tests/io/dump/Makefile.am,
+ * tests/io/fits/Makefile.am,
+ * tests/io/fld/Makefile.am,
+ * tests/io/magick/Makefile.am,
+ * tests/io/off/Makefile.am,
+ * tests/io/pbm/Makefile.am,
+ * tests/io/pbms/Makefile.am,
+ * tests/io/pfm/Makefile.am,
+ * tests/io/pgm/Makefile.am,
+ * tests/io/pgms/Makefile.am,
+ * tests/io/pnm/Makefile.am,
+ * tests/io/ppm/Makefile.am,
+ * tests/io/ppms/Makefile.am,
+ * tests/io/tiff/Makefile.am,
+ * tests/labeling/Makefile.am,
+ * tests/linear/Makefile.am,
+ * tests/linear/gaussian/Makefile.am,
+ * tests/linear/local/Makefile.am,
+ * tests/literal/Makefile.am,
+ * tests/logical/Makefile.am,
+ * tests/make/Makefile.am,
+ * tests/math/Makefile.am,
+ * tests/metal/Makefile.am,
+ * tests/metal/make/Makefile.am,
+ * tests/metal/math/Makefile.am,
+ * tests/morpho/Makefile.am,
+ * tests/morpho/approx/Makefile.am,
+ * tests/morpho/attribute/Makefile.am,
+ * tests/morpho/closing/Makefile.am,
+ * tests/morpho/closing/approx/Makefile.am,
+ * tests/morpho/elementary/Makefile.am,
+ * tests/morpho/opening/Makefile.am,
+ * tests/morpho/opening/approx/Makefile.am,
+ * tests/morpho/reconstruction/Makefile.am,
+ * tests/morpho/reconstruction/by_dilation/Makefile.am,
+ * tests/morpho/reconstruction/by_erosion/Makefile.am,
+ * tests/morpho/tree/Makefile.am,
+ * tests/morpho/tree/filter/Makefile.am,
+ * tests/morpho/watershed/Makefile.am,
+ * tests/norm/Makefile.am,
+ * tests/opt/Makefile.am,
+ * tests/pw/Makefile.am,
+ * tests/registration/Makefile.am,
+ * tests/set/Makefile.am,
+ * tests/subsampling/Makefile.am,
+ * tests/tag/Makefile.am,
+ * tests/test/Makefile.am,
+ * tests/topo/Makefile.am,
+ * tests/topo/skeleton/Makefile.am,
+ * tests/trace/Makefile.am,
+ * tests/trait/Makefile.am,
+ * tests/trait/image/Makefile.am,
+ * tests/trait/op/Makefile.am,
+ * tests/trait/value/Makefile.am,
+ * tests/transform/Makefile.am,
+ * tests/unit_test/Makefile.am,
+ * tests/upscaling/Makefile.am,
+ * tests/upscaling/art/Makefile.am,
+ * tests/util/Makefile.am,
+ * tests/value/Makefile.am,
+ * tests/value/builtin/Makefile.am,
+ * tests/value/concept/Makefile.am,
+ * tests/win/Makefile.am,
+ * tests/world/Makefile.am,
+ * tests/world/binary_2d/Makefile.am,
+ * tests/world/inter_pixel/Makefile.am,
+ * tests/world/inter_pixel/dim2/Makefile.am,
+ * tools/Makefile.am:
+ Here.
+
+2010-05-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add missing copyright headers in Milena.
+
+ * apps/constrained-connectivity/test-constrained-connectivity.in,
+ * apps/mesh-segm-skel/test-mesh-complex-max-curv-segm.in,
+ * apps/mesh-segm-skel/test-mesh-complex-max-curv.in,
+ * apps/mesh-segm-skel/test-mesh-complex-segm.in,
+ * apps/mesh-segm-skel/test-mesh-complex-skel.in,
+ * apps/mesh-segm-skel/test-mesh-max-curv.in,
+ * apps/mesh-segm-skel/test-mesh-segm.in,
+ * doc/graphicx.hva,
+ * doc/tools/clearbanner.sh,
+ * doc/tools/split_sample.sh:
+ Here.
+
+2010-05-11 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Miscellaneous changes in graphs and graph-based images.
+
+ * mln/util/graph.hh,
+ * mln/util/line_graph.hh,
+ * mln/core/image/vertex_image.hh,
+ * mln/core/image/edge_image.hh:
+ Fix the Doxygen documentation.
+ * mln/util/vertex.hh: Aesthetic changes.
+ * mln/util/edge.hh: Aesthetic changes.
+ (util::edge<G>::invalidate): Remove dead code.
+ * tests/morpho/line_graph_image_morpho.cc:
+ Fix (non) Doxygen comments.
+
+2010-05-11 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix make::edge_image.
+
+ * mln/make/edge_image.hh: Fix Doxygen comments.
+ (make::edge_image(const Graph<G>&, const fun::i2v::array<V>&))
+ (make::edge_image(const Graph<G>&, const Function_v2v<FP>&,
+ const Function_v2v<FV>&))):
+ Properly build the required p_edges site sets.
+ (make::edge_image(const vertex_image<P,V,G>&, const Function_v2b<F>&)):
+ Actually use the predicate passed as second argument.
+ Remove debug code.
+
+2010-04-27 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Help g++ 3.3 compile Milena code.
+
+ * apps/graph-morpho/convert.hh
+ (convert::to_image2d(const mln::bin_1complex_image2d&)):
+ Break up an object's construction to help g++ 3.3 understand it.
+
+2010-04-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Prevent g++ 4.2 from issuing bad code for graph-morpho/samples_image2d.
+
+ * apps/graph-morpho/Makefile.am (STRICT_ALIASING_CXXFLAGS): New.
+ (samples_image2d_CXXFLAGS): New.
+ Set to $(AM_CXXFLAGS) $(STRICT_ALIASING_CXXFLAGS).
+
+2010-04-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix distcleancheck.
+
+ * apps/papers/levillain.09.ismm/Makefile.am (CLEANFILES): New.
+ Add $(noinst_DATA) and graph-s.neato.
+ * tests/morpho/watershed/Makefile.am (CLEANFILES):
+ Add topo_wst.pgm.
+
+2010-04-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Do not install images from papers (yet).
+
+ * apps/papers/levillain.09.ismm/Makefile.am
+ (dist_data_DATA): Move seeds.pgm and m283-c.off...
+ (dist_noinst_DATA): ...here.
+ (data_DATA): Move lena-s.ppm, graph-s.png and m283-s.off...
+ (noinst_DATA): ...here.
+
+2010-04-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix the Milena installation.
+
+ * Makefile.am (nobase_include_HEADERS): Move mln/version.hh...
+ (nobase_nodist_include_HEADERS): ...here.
+
+2010-04-21 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix the Milena distribution.
+
+ * apps/papers/levillain.09.ismm/Makefile.am
+ (data_DATA): Move seeds.pgm and m283-c.off...
+ (dist_data_DATA): ...here.
+ * tests/unit_test/Makefile.am (EXTRA_DIST): Add disabled_tests.
+
+2010-04-21 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix Milena's unit tests generator's dependencies.
+
+ * tests/unit_test/Makefile.am ($(srcdir)/unit-tests.mk):
+ Depend on disabled_tests.
+
+2010-04-13 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix accu::compute(const Meta_Accumulator<A>, const Image<I>&).
+
+ * mln/accu/compute.hh
+ (accu::compute(const Meta_Accumulator<A>, const Image<I>&)): Here.
+
+2010-04-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Exercise mln::util::ord.
+
+ * tests/util/Makefile.am (check_PROGRAMS): Add ord.
+ (ord_SOURCES): New.
+
+2010-04-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix more tests.
+
+ * mln/core/image/imorph/labeled_image.hh: Include
+ mln/data/compute.hh.
+ * mln/io/fld/save.hh: Fix headers' inclusions.
+ * mln/io/fld/write_header.hh: Likewise.
+ Add missing namespace qualifiers.
+
+2010-04-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Install meshes in $(pkgdatadir)/meshes.
+
+ * mesh/Makefile.am (meshdir): Here.
+
+2010-04-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix test core/other/box_runend_piter.
+
+ * tests/core/other/box_runend_piter.cc: Fix assertion.
+
+2010-03-30 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Do not install low-quality HTML documentation.
+
+ * doc/Makefile.am (DATA_html_dirs_inst): New.
+ Use it...
+ (install-data-local, uninstall-local): Here.
+
+2010-03-30 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Adjust the installation of the HTML documentation.
+
+ * doc/Makefile.am (all-local): Do not depend on
+ $(srcdir)/$(USER_REFMAN_PDF).
+ (dist_pdf_DATA): Add $(srcdir)/$(USER_REFMAN_PDF) instead of
+ $(USER_REFMAN_PDF).
+ (AM_CPPFLAGS): Remove -I$(top_srcdir)/milena/doc/tutorial/tools.
+ (regen-doc, $(srcdir)/user-refman.stamp)
+ (regen-devel-doc, $(srcdir)/devel-refman.stamp):
+ Remove `-' before `rm' actions.
+ (EXTRA_DIST): Add $(USER_REFMAN).
+ (maintainer-clean-local)
+ (install-data-local)
+ (uninstall-local):
+ Handle the new HTML subdirectories.
+ (MAINTAINERCLEANFILES): Remove $(dist_html_DATA).
+
+2010-03-30 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Move LaTeX sources at the root of doc/; generate HTML in subdirs.
+
+ * doc/tutorial/tutorial.tex,
+ * doc/technical/technical.tex,
+ * doc/ref_guide/ref_guide.tex,
+ * doc/white_paper/white_paper.tex:
+ Move...
+ * doc/tutorial.tex,
+ * doc/technical.tex,
+ * doc/ref-guide.tex,
+ * doc/white-paper.tex:
+ ...here.
+ * doc/graphicx.hva: New.
+ * doc/technical/figures/file_layout.pdf,
+ * doc/technical/figures/file_layout.png,
+ * doc/white_paper/figures/house.png,
+ * doc/white_paper/figures/house_rag.png,
+ * doc/white_paper/figures/house_wshed.png,
+ * doc/white_paper/figures/house_wshed_mean_colors.png:
+ Move...
+ * doc/figures/technical/file_layout.pdf,
+ * doc/figures/technical/file_layout.png,
+ * doc/figures/house.png,
+ * doc/figures/house_rag.png,
+ * doc/figures/house_wshed.png,
+ * doc/figures/house_wshed_mean_colors.png:
+ ...here.
+ * doc/technical.tex: Adjust paths.
+ * doc/technical/designs/,
+ * doc/tutorial/designs/,
+ * doc/tutorial/doxyfile_tuto.local,
+ * doc/tutorial/image_types.txt,
+ * doc/tutorial/image_values.txt,
+ * doc/tutorial/images_tour.txt,
+ * doc/tutorial/slides.tex:
+ Rename as...
+ * doc/technical.old/designs/,
+ * doc/tutorial.old/design/,
+ * doc/tutorial.old/doxyfile_tuto.local,
+ * doc/tutorial.old/image_types.txt,
+ * doc/tutorial.old/image_values.txt,
+ * doc/tutorial.old/images_tour.txt,
+ * doc/tutorial.old/slides.tex:
+ ...this.
+ * tutorial/headers.stamp: Remove.
+ * doc/Makefile.am (REFMAN_deps): Rename as...
+ (refman_dependencies): ...this.
+ Adjust paths.
+ ($(srcdir)/user-refman.stamp, $(srcdir)/devel-refman.stamp):
+ Adjust.
+ (PNGS, EPSS): Remove.
+ (.png.eps): Remove rule.
+ (TECHNICAL_FIGURES, WHITE_PAPER_FIGURES): New.
+ (MORE_FIGURES): Add $(TECHNICAL_FIGURES) and
+ $(WHITE_PAPER_FIGURES).
+ (technical_dir, tutorial_dir, white_paper_dir, ref_guide_dir):
+ Remove.
+ (TECHNICAL, TUTORIAL, WHITE_PAPER, REF_GUIDE): New.
+ (TECHNICAL_PDF, TUTORIAL_PDF, WHITE_PAPER_PDF, REF_GUIDE_PDF)
+ (TUTORIAL_HH, REF_GUIDE_HH)
+ (EXTRA_DIST, MAINTAINERCLEANFILES): Adjust.
+ Remove (EPSS).
+ (EXTRA_DIST): Remove $(PNGS).
+ Add graphicx.hva.
+ (technical_dependencies)
+ (tutorial_dependencies)
+ (ref_guide_dependencies):
+ Rename as...
+ (TECHNICAL_deps)
+ (TUTORIAL_deps)
+ (REF_GUIDE_deps):
+ ...this.
+ (TECHNICAL_deps): Add $(TECHNICAL_FIGURES).
+ (WHITE_PAPER_deps): New.
+ ($(TECHNICAL_PDF))
+ ($(TUTORIAL_PDF))
+ ($(WHITE_PAPER_PDF))
+ ($(REF_GUIDE_PDF)):
+ Adjust.
+ (TECHNICAL_HTML, TECHNICAL_HTML_OUTPUTS)
+ (TUTORIAL_HTML, TUTORIAL_HTML_OUTPUTS)
+ (WHITE_PAPER_HTML, WHITE_PAPER_HTML_OUTPUTS)
+ (REF_GUIDE_HTML, REF_GUIDE_HTML_OUTPUTS):
+ Remove.
+ (all-local): Depend on
+ $(srcdir)/$(TECHNICAL).stamp,
+ $(srcdir)/$(TUTORIAL).stamp,
+ $(srcdir)/$(WHITE_PAPER).stamp and
+ $(srcdir)/$(REF_GUIDE).stamp.
+ ($(TECHNICAL_HTML).stamp)
+ ($(TUTORIAL_HTML).stamp)
+ ($(WHITE_PAPER_HTML).stamp)
+ ($(REF_GUIDE_HTML).stamp):
+ Turn targets into...
+ ($(srcdir)/$(TECHNICAL).stamp)
+ ($(srcdir)/$(TUTORIAL).stamp)
+ ($(srcdir)/$(WHITE_PAPER).stamp)
+ ($(srcdir)/$(REF_GUIDE).stamp):
+ ...this.
+ Adjust rules to generate outputs in a subdirectory.
+ ($(TECHNICAL_HTML_OUTPUTS))
+ ($(TUTORIAL_HTML_OUTPUTS))
+ ($(WHITE_PAPER_HTML_OUTPUTS))
+ ($(REF_GUIDE_HTML_OUTPUTS)):
+ Turn targets into...
+ ($(srcdir)/$(TECHNICAL))
+ ($(srcdir)/$(TUTORIAL))
+ ($(srcdir)/$(WHITE_PAPER))
+ ($(srcdir)/$(REF_GUIDE)):
+ ...this.
+ Adjust.
+ ($(TUTORIAL_HH)): Depend on $(srcdir)/$(TUTORIAL).stamp.
+ Adjust rule.
+ ($(REF_GUIDE_HH)): Depend on (srcdir)/$(REF_GUIDE).stamp.
+ Adjust rule.
+ (dist_html_DATA): Remove.
+ (DATA_html_dirs): New.
+ (EXTRA_DIST): Add $(DATA_html_dirs).
+
+2010-03-26 Roland Levillain <roland(a)lrde.epita.fr>
+
+ No longer generate doc/technical/technical.hh.
+
+ * doc/Makefile.am (TECHNICAL_HH): Remove variable.
+ ($(TECHNICAL_HH)): Remove rule.
+ (MAINTAINERCLEANFILES): Remove $(TECHNICAL_HH).
+
+2010-03-26 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix the regeneration of files in doc/.
+
+ * doc/Makefile.am (regen-am): No longer invoke
+ regen-pbm-figures-mk, regen-pgm-figures-mk nor
+ regen-ppm-figures-mk.
+
+2010-03-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix the Milena distribution.
+
+ * doc/Makefile.am (EXTRA_DIST): Remove $(TECHNICAL_HH).
+ * tests/transform/Makefile.am (check_PROGRAMS): Remove kht.
+ (kht_SOURCES): Remove.
+
+2010-03-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Do not distribute the developer (Doxygen) reference manual.
+
+ * doc/Makefile.am (EXTRA_DIST): Remove
+ $(srcdir)/devel-refman.stamp.
+
+2010-03-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix the name of the developer (Doxygen) PDF reference manual.
+
+ * doc/Makefile.am (DEVEL_REFMAN_PDF):
+ s/devel-refman-pdf/devel-refman.pdf/.
+
+2010-03-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Use finer installation variables.
+
+ * doc/Makefile.am (dist_doc_DATA): Remove variable.
+ (dist_html_DATA, dist_pdf_DATA): New variables.
+ (MAINTAINERCLEANFILES):
+ Remove $(TECHNICAL_HTML_OUTPUTS), $(TECHNICAL_PDF),
+ $(TUTORIAL_HTML_OUTPUTS), $(TUTORIAL_PDF),
+ $(WHITE_PAPER_HTML_OUTPUTS), $(WHITE_PAPER_PDF),
+ $(REF_GUIDE_HTML_OUTPUTS), $(REF_GUIDE_PDF) and
+ $(USER_REFMAN_PDF).
+ Add $(dist_html_DATA) and $(dist_pdf_DATA).
+
+2010-03-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Simplify doc/Makefile.am.
+
+ * doc/Makefile.am:
+ (DOC_SRCDIR, OUTPUTS_SRCDIR, SPLIT_OUTPUTS_SRCDIR, FIGURES_SRCDIR)
+ (EXAMPLES_SRCDIR, SPLIT_EXAMPLES_SRCDIR, IMG_SRCDIR, doc_dir):
+ Remove variables.
+ Adjust.
+
+2010-03-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * doc/Makefile.am: Update FIXMEs.
+
+2010-03-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Remove Make aliases in the documentation.
+
+ * doc/Makefile.am (doc, doc-user, doc-devel)
+ (doc-pdf, doc-html, doc-devel-pdf, doc-devel-html)
+ (ref-doc, ref-doc-pdf, ref-doc-devel, ref-doc-devel-pdf)
+ (tutorial-pdf, white-paper-pdf, ref-guide-pdf)
+ (tutorial-html, white-paper-html, ref-guide-html):
+ Remove (phony) targets.
+ * Makefile.am (doc, tutorial): Likewise.
+
+2010-03-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Regen documentation products.
+
+ * doc/examples/split/ima2d-rot-1.cc.raw,
+ * doc/figures/fill-subdomain-2.ppm,
+ * doc/figures/fill-subdomain-3.ppm,
+ * doc/figures/labeling-compute-2.ppm,
+ * doc/figures/tuto3_colorize-2.ppm,
+ * doc/figures/tuto4_genericity_and_algorithms-1.ppm,
+ * doc/figures/tuto4_genericity_and_algorithms-5.ppm:
+ Regen
+ * doc/figures/tuto4_genericity_and_algorithms-7.pgm,
+ * doc/figures/tuto4_genericity_and_algorithms-7.ppm,
+ * doc/figures/tuto4_genericity_and_algorithms-8.pgm,
+ * doc/figures/tuto4_genericity_and_algorithms-8.ppm,
+ * doc/figures/tuto4_genericity_and_algorithms-9.pgm,
+ * doc/figures/tuto4_genericity_and_algorithms-9.ppm:
+ Delete.
+ * doc/outputs/ima-load.txt,
+ * doc/outputs/tuto3_first_routine.txt,
+ * doc/outputs/tuto4_image.txt:
+ New.
+
+2010-03-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have doc/gen-figures-mk generate more Makefile bits.
+
+ * doc/gen-figures-mk: Generate Make variables PBM_FIGURES,
+ PGM_FIGURES and PPM_FIGURES in output.
+ * doc/figures.mk: Regen.
+ * doc/Makefile.am: No longer include $(srcdir)/pbm-figures.mk,
+ $(srcdir)/pgm-figures.mk nor $(srcdir)/ppm-figures.mk.
+ ($(srcdir)/pbm-figures.mk, regen-pbm-figures-mk)
+ ($(srcdir)/pgm-figures.mk, regen-pgm-figures-mk)
+ ($(srcdir)/ppm-figures.mk, regen-ppm-figures-mk):
+ Remove rules.
+ (EXTRA_DIST): Add $(FIGURES).
+ Remove $(PBM_FIGURES), $(PGM_FIGURES) and $(PPM_FIGURES).
+ * doc/pbm-figures.mk,
+ * doc/pgm-figures.mk,
+ * doc/ppm-figures.mk:
+ Remove.
+
+2010-03-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Rework doc/gen-figures-mk a bit.
+
+ * doc/gen-figures-mk (gen_var): New function.
+ Use to factor the emission of the Make variable at the end of the
+ output.
+ Aesthetic changes.
+
+2010-03-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Distribute doc/gen-split-outputs-mk.
+
+ * doc/Makefile.am (EXTRA_DIST): Add gen-split-outputs-mk.
+ Aesthetic changes.
+
+2010-03-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Make a more portable use of mktemp.
+
+ * doc/gen-split-examples-mk,
+ * doc/gen-split-outputs-mk:
+ Here.
+
+2010-03-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Sort inputs of generators to make them deterministic w.r.t. outputs.
+
+ * doc/gen-split-examples-mk,
+ * doc/gen-split-outputs-mk:
+ Here.
+ * doc/split-examples.mk: Regen.
+
+2010-03-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Generate the list of figures in the documentation.
+
+ * doc/Makefile.am ($(srcdir)/figures.mk): New rule.
+ (regen-figures-mk): New phony target.
+ (regen-am): Invoke regen-figures-mk.
+ * doc/figures.mk: Regen.
+
+2010-03-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add a script to generate doc/figures.mk.
+
+ * doc/gen-figures-mk: New script.
+ * doc/Makefile.am (EXTRA_DIST): Add gen-figures-mk.
+
+2010-03-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Use a more uniform style in doc/figures.mk.
+
+ * doc/figures.mk: Here.
+ Reorder items.
+
+2010-03-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Prepare doc examples for the automated generation of figures.mk.
+
+ * doc/examples/ima2d-rot.cc (main): Pass a literal string as
+ second argument to doc::ppmsave to help gen-figures-mk.
+ * doc/examples/labeling-compute.cc (main): Have calls to
+ doc::ppmsave fit on a single line to help gen-figures-mk.
+
+2010-03-18 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Typo in doc/.
+
+ * doc/examples/accu-right-instanciation.cc: Rename as...
+ * doc/examples/accu-right-instantiation.cc: ...this.
+ * doc/examples/accu-wrong-instanciation.cc.raw,
+ * doc/examples/split/accu-right-instanciation-1.cc.raw,
+ * doc/outputs/accu-right-instanciation.txt:
+ Likewise, rename as...
+ * doc/examples/accu-wrong-instantiation.cc.raw,
+ * doc/examples/split/accu-right-instantiation-1.cc.raw,
+ * doc/outputs/accu-right-instantiation.txt:
+ ...these.
+ * doc/ref_guide/ref_guide.tex,
+ * doc/programs-examples.mk,
+ * doc/Makefile.am (MORE_EXAMPLES):
+ s/instanciation/instantiation/.
+ * doc/examples-outputs.mk,
+ * doc/examples.mk,
+ * doc/outputs.mk,
+ * doc/split-examples.mk:
+ Regen.
+
+2010-03-18 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix dependencies in doc/.
+
+ * doc/Makefile.am (refman_dependencies):
+ Remove $(SPLIT_EXAMPLES) and $(SPLIT_OUTPUTS).
+ (technical_dependencies): Add $(TECHNICAL_EXAMPLES).
+ (tutorial_dependencies, ref_guide_dependencies):
+ Add $(EXAMPLES) and $(OUTPUTS).
+
+2010-03-18 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Distribute non generated figures in the documentation.
+
+ * doc/Makefile.am (MORE_FIGURES): New variable.
+ Add figures/accu_image_morpher_big_picture.pdf.
+ (EXTRA_DIST): Add $(MORE_FIGURES).
+
+2010-03-18 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Distribute non generated examples in the documentation.
+
+ * doc/Makefile.am (TECHNICAL_EXAMPLES, MORE_EXAMPLES):
+ New variables.
+ (EXTRA_DIST): Add $(TECHNICAL_EXAMPLES) and $(MORE_EXAMPLES).
+
+2010-03-18 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have ``make maintainer-clean'' remove generated figures in doc/.
+
+ * doc/figures.mk
+ (EXTEND_FIGURES)
+ (FILL_FIGURES)
+ (FILL_SUBDOMAIN_FIGURES)
+ (FILL_IMAGEIF_CFUN_FIGURES)
+ (IMA2D_ROT_FIGURES)
+ (IMA_SAVE_FIGURES)
+ (LABELING_COMPUTE_FIGURES)
+ (LOGICAL_NOT_FIGURES)
+ (TUTO2_FIRST_IMAGE_FIGURES)
+ (TUTO3_COLORIZE_FIGURES)
+ (TUTO3_RW_IMAGE_FIGURES)
+ (TUTO4_GENERICITY_AND_ALGORITHMS_FIGURES):
+ New variables.
+ Use them to simplify rules.
+ (FIGURES): New variable.
+ * doc/Makefile.am (MAINTAINERCLEANFILES): Add $(FIGURES).
+
+2010-03-18 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Generate the list of split outputs in the documentation.
+
+ * doc/Makefile.am ($(srcdir)/split-outputs.mk): New rule.
+ (regen-split-outputs-mk): New (phony) target.
+ ($(srcdir)/split-outputs.stamp): Remove rule.
+ (refman_dependencies)
+ (tutorial_dependencies)
+ (ref_guide_dependencies)
+ (EXTRA_DIST, MAINTAINERCLEANFILES):
+ Remove $(srcdir)/split-outputs.stamp
+ Add $(SPLIT_OUTPUTS).
+ (regen-am): Remake regen-split-outputs-mk.
+ * doc/gen-split-outputs-mk: New script.
+ Use it to generate...
+ * doc/split-outputs.mk: ...this (new) Make helper.
+
+2010-03-18 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Prepare doc source files for the automation of output splitting.
+
+ * doc/examples/tuto3/println.cc,
+ * doc/examples/tuto4/site_set_create.cc:
+ Use doc::begin_output and doc::end_output instead of hand-made
+ delimiters.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have split_sample.sh announce the right number of output files.
+
+ * doc/tools/split_sample.sh: Here.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix programs in doc/examples/.
+
+ * doc/examples/ima-save.cc: Add a FIXME.
+ * doc/examples/ima-load.cc: Likewise.
+ Avoid hard-coded paths.
+ * doc/examples/tuto4/image.cc: Make it compile.
+ * doc/img/small.pbm: New symbolic link to img/small.pbm.
+ * doc/examples/split/ima-load-1.cc.raw: Regen.
+ * doc/examples/fill-imageif-cfun.cc,
+ * figures.mk,
+ * ppm-figures.mk:
+ s/fill-subimage-cfun/fill-imageif-cfun/.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Update PNG-to-EPS conversion rule.
+
+ * doc/Makefile.am (.png.eps): No longer try to build figures/ in
+ the build directory.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Remove useless paths in texi2dvi invocations.
+
+ * doc/Makefile.am (TEXI2DVI_FLAGS):
+ Remove -I $(DOC_SRCDIR)/white_paper.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Update cleaning rules in doc/.
+
+ * doc/Makefile.am (maintainer-clean-local):
+ Remove outdated actions.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add missing dependencies.
+
+ * doc/Makefile.am (DOC_PACKAGES): Strip useless $(srcdir) prefixes.
+ (technical_dependencies)
+ (tutorial_dependencies)
+ (ref_guide_dependencies):
+ Add $(DOC_PACKAGES).
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Ship non generated outputs.
+
+ * doc/Makefile.am (EXTRA_DIST): Add $(MORE_OUTPUTS).
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Generate the list of outputs in the documentation.
+
+ * doc/Makefile.am (OUTPUTS): Remove this variable that used to be
+ populated by hand.
+ Include $(srcdir)/outputs.mk.
+ No longer include $(srcdir)/outputs/outputs.mk.
+ $(srcdir)/outputs.mk: New target.
+ (EXTRA_DIST): Add $(OUTPUTS).
+ (regen-outputs-mk): New (phony) target.
+ (regen-am): Remake regen-outputs-mk.
+ Do not recreate $(srcdir)/headers.stamp.tmp.
+ (EXTRA_DIST): Remove headers.stamp.
+ ($(srcdir)/outputs/outputs.mk)
+ ($(srcdir)/headers.stamp):
+ Remove rules.
+ (outputs/outputs.mk): Remove this Make helper.
+ Supersed by...
+ (outputs.mk): ...this (new) Make helper.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Handle dependencies of generated figures.
+
+ * doc/figures.mk: New Make helper.
+ Include it...
+ * doc/Makefile.am: ...here.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * doc/examples-outputs.mk: Regen.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Prepare for the generation of multiple outputs from doc/ programs.
+
+ * doc/gen-examples-outputs-mk: Split generated rules in two so
+ that they produce a timestamp that outputs (and soon generated
+ figures) depend on.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Generate doc/examples-outputs.mk using sources in lieu of programs.
+
+ * doc/gen-examples-outputs-mk: Take sources as input instead of
+ programs.
+ * doc/examples-outputs.mk: Regen.
+ * doc/Makefile.am ($(DOC_SRCDIR)/examples-outputs.mk):
+ Adjust caller.
+ Use `find' to get inputs instead of relying on
+ $(PROGRAMS_examples).
+ Rename target as...
+ ($(srcdir)/examples-outputs.mk): ...this.
+ Depend only on $(srcdir)/gen-examples-outputs-mk, and no longer on
+ $(srcdir)/Makefile.am.
+ (regen-examples-outputs-mk): Adjust as well.
+ * doc/programs-examples.mk: Adjust comments.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Move bits about programs out of doc/Makefile.am to improve readability.
+
+ * doc/Makefile.am (PROGRAMS_examples)
+ (accu_right_instanciation_SOURCES)
+ (borderthickness_SOURCES)
+ (box2d_bbox_SOURCES)
+ (domain_display_SOURCES)
+ (dpoint_1_SOURCES)
+ (estim_sites_SOURCES)
+ (extend_SOURCES)
+ (extension_ignore_SOURCES)
+ (fill_SOURCES)
+ (fill_call_1_SOURCES)
+ (fill_imageif_cfun_SOURCES)
+ (fill_part_image_SOURCES)
+ (fill_subdomain_SOURCES)
+ (fill_subdomain_shorter_SOURCES)
+ (first_routine_SOURCES)
+ (forall_piter_SOURCES)
+ (fun_p2v_1_SOURCES)
+ (graph_data_SOURCES)
+ (graph_iter_SOURCES)
+ (ima2d_1_SOURCES)
+ (ima2d_2_SOURCES)
+ (ima2d_3_SOURCES)
+ (ima2d_4_SOURCES)
+ (ima2d_5_SOURCES)
+ (ima2d_6_clone_SOURCES)
+ (ima2d_7_SOURCES)
+ (ima2d_rot_SOURCES)
+ (ima_has_SOURCES)
+ (ima_save_SOURCES)
+ (ima_size_SOURCES)
+ (labeling_compute_SOURCES)
+ (logical_not_SOURCES)
+ (mln_var_SOURCES)
+ (parray_append_SOURCES)
+ (parray_bbox_SOURCES)
+ (paste_SOURCES)
+ (paste_call_1_SOURCES)
+ (point_1_SOURCES)
+ (predicate_1_SOURCES)
+ (tuto2_first_image_SOURCES)
+ (tuto3_colorize_SOURCES)
+ (tuto3_println_SOURCES)
+ (tuto3_rw_image_SOURCES)
+ (tuto3_trace_SOURCES)
+ (tuto4_genericity_and_algorithms_SOURCES)
+ (tuto4_point2d_SOURCES)
+ (tuto4_site_set_create_SOURCES)
+ (win_create_1_SOURCES)
+ (win_create_2_SOURCES):
+ Move variables...
+ * doc/programs-examples.mk: ...here (new file).
+ (PROGRAMS_examples): Rename first_routine as tuto3_first_routine.
+ Add ima-load and tuto4_image.
+ (first_routine_SOURCES): Remove this variable.
+ Superseded by...
+ (tuto3_first_routine_SOURCES): ...this (new) variable.
+ (ima_load_SOURCES, tuto4_image_SOURCES): New variables.
+ * doc/Makefile.am: Include $(srcdir)/programs-examples.mk.
+
+2010-03-16 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Generate the list of split examples in the documentation.
+
+ * doc/gen-split-examples-mk: New script.
+ * doc/Makefile.am: Include ($(srcdir)/split-examples.mk).
+ ($(srcdir)/split-examples.mk): New target.
+ (EXTRA_DIST, MAINTAINERCLEANFILES): Add $(SPLIT_EXAMPLES).
+ (refman_dependencies)
+ (tutorial_dependencies)
+ (ref_guide_dependencies):
+ Remove $(doc_dir)/split-examples.stamp.
+ Add $(SPLIT_EXAMPLES).
+ (regen-split-examples-mk): New (phony) target.
+ (regen-am): Remake regen-split-examples-mk instead of using
+ generate_dist_files.sh.
+ ($(srcdir)/headers.stamp): No longer call generate_dist_files.sh
+ to regen doc/examples/examples.mk.
+ No longer include $(srcdir)/examples/examples.mk.
+ ($(srcdir)/examples/examples.mk, $(srcdir)/split-examples.stamp):
+ Remove rules.
+ (EXTRA_DIST, MAINTAINERCLEANFILES):
+ Remove $(srcdir)/split-examples.stamp.
+ (EXTRA_DIST): Add gen-split-examples-mk.
+ * doc/split-examples.mk: New (generated) Make helper.
+ * doc/examples/examples.mk: Remove.
+
+2010-03-16 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Generate the list of examples in the documentation.
+
+ * doc/Makefile.am (EXAMPLES): Remove this variable that used to be
+ populated by hand.
+ Include ($(srcdir)/examples.mk).
+ ($(srcdir)/examples.mk): New target.
+ (EXTRA_DIST): Add $(EXAMPLES).
+ (regen-examples-mk): New (phony) target.
+ (regen-am): Remake regen-examples-mk.
+ * doc/examples.mk: New (generated) Make helper.
+
+2010-03-16 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Revamp the conversion of images in the documentation.
+
+ * gen-make-variable: New script.
+ * doc/Makefile.am: Include $(srcdir)/pbm-figures.mk,
+ ($(srcdir)/pgm-figures.mk and $(srcdir)/ppm-figures.mk.
+ ($(srcdir)/pbm-figures.mk)
+ ($(srcdir)/pgm-figures.mk)
+ ($(srcdir)/ppm-figures.mk):
+ New targets.
+ (EXTRA_DIST): Add $(PBM_FIGURES), $(PGM_FIGURES), $(PPM_FIGURES).
+ (regen-pbm-figures-mk)
+ (regen-pgm-figures-mk)
+ (regen-ppm-figures-mk):
+ New (phony target).
+ (regen-am): Remake regen-pbm-figures-mk, regen-pgm-figures-mk and
+ regen-ppm-figures-mk instead of calling generate_dist_files.sh to
+ convert figures.
+ ($(srcdir)/headers.stamp): No longer call generate_dist_files.sh to
+ convert figures.
+ (convert_to_png): New variable.
+ (SUFFIXES): Add .pbm, .pgm, .ppm and .png.
+ (.pbm.png, .pgm.png, .ppm.png): New suffix rules.
+ (PNG_FIGURES): New variable.
+ (EXTRA_DIST, MAINTAINERCLEANFILES): Add $(PNG_FIGURES).
+ (refman_dependencies):
+ Remove $(srcdir)/figures.stamp.
+ Add $(PNG_FIGURES).
+ (technical_dependencies)
+ (tutorial_dependencies)
+ (ref_guide_dependencies):
+ Likewise.
+ No longer include $(srcdir)/figures/figures.mk.
+ ($(srcdir)/figures/figures.mk, $(srcdir)/figures.stamp):
+ Remove rules.
+ (EXTRA_DIST, MAINTAINERCLEANFILES):
+ Remove $(srcdir)/figures.stamp.
+ (EXTRA_DIST): Add gen-make-variable.
+ * pbm-figures.mk, pgm-figures.mk, ppm-figures.mk:
+ New (generated) Make helpers.
+ * figures/figures.mk: Remove.
+
+2010-03-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add a rule to forcefully regen doc/examples-outputs.mk.
+
+ * doc/Makefile.am (regen-examples-outputs-mk): New (phony) target.
+ (regen-am): Invoke regen-examples-outputs-mk.
+
+2010-03-16 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Ship doc/gen-examples-outputs-mk.
+
+ * doc/Makefile.am (EXTRA_DIST): Add gen-examples-outputs-mk.
+
+2010-03-18 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix the regeneration of HTML outputs.
+
+ * doc/Makefile.am
+ ($(TECHNICAL_HTML_OUTPUTS))
+ ($(TUTORIAL_HTML_OUTPUTS))
+ ($(WHITE_PAPER_HTML_OUTPUTS))
+ ($(REF_GUIDE_HTML_OUTPUTS)):
+ Fix tests on targets.
+
+2010-03-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Distribute and clean documentation timestamps.
+
+ * doc/Makefile.am (EXTRA_DIST, MAINTAINERCLEANFILES):
+ Add $(srcdir)/user-refman.stamp, $(srcdir)/devel-refman.stamp,
+ $(srcdir)/figures.stamp, $(srcdir)/split-examples.stamp and
+ $(srcdir)/split-outputs.stamp.
+
+2010-03-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Improve doc/'s cleaning rules.
+
+ * doc/Makefile.am (CLEANFILES): Remove
+ $(technical_dir)/technical.haux,
+ $(tutorial_dir)/tutorial.haux,
+ $(ref_guide_dir)/ref_guide.haux and
+ $(ref_guide_dir)/ref_guide.htoc.
+ (clean-local): Remove (phony) target.
+ ($(EPSS)): Move...
+ (MAINTAINERCLEANFILES): ...here.
+ Add $(TECHNICAL_PDF), $(TECHNICAL_HH),
+ $(TUTORIAL_PDF), $(TUTORIAL_HH),
+ $(WHITE_PAPER_PDF)
+ $(REF_GUIDE_PDF) and $(REF_GUIDE_HH).
+
+2010-03-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Prevent todoxygen.sh from generating incomplete outputs.
+
+ * doc/tools/todoxygen.sh: Take an output file as second argument
+ instead of an output directory.
+ * doc/Makefile.am
+ ($(TECHNICAL_HH), $(TUTORIAL_HH), $(REF_GUIDE_HH)): Adjust.
+ Use a temporary file to prevent todoxygen.sh from generating
+ incomplete outputs.
+
+2010-03-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Adjust todoxygen.sh to TeX4ht outputs.
+
+ * doc/tools/todoxygen.sh: Here.
+
+2010-03-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Adapt HTML generation to TeX4ht.
+
+ * doc/Makefile.am
+ (TECHNICAL_HTML_OUTPUTS, TUTORIAL_HTML_OUTPUTS)
+ (WHITE_PAPER_HTML_OUTPUTS, REF_GUIDE_HTML_OUTPUTS):
+ New variables.
+ ($(TECHNICAL_HTML), $(TUTORIAL_HTML))
+ ($(WHITE_PAPER_HTML), $(REF_GUIDE_HTML)):
+ Remove these targets.
+ Superseded by...
+ ($(TECHNICAL_HTML).stamp, $(TECHNICAL_HTML_OUTPUTS))
+ ($(TUTORIAL_HTML).stamp, $(TUTORIAL_HTML_OUTPUTS))
+ ($(WHITE_PAPER_HTML).stamp, $(WHITE_PAPER_HTML_OUTPUTS))
+ ($(REF_GUIDE_HTML).stamp, $(REF_GUIDE_HTML_OUTPUTS)):
+ ...these (new) targets.
+ (EXTRA_DIST, MAINTAINERCLEANFILES): Add $(TECHNICAL_HTML).stamp,
+ ($(TUTORIAL_HTML).stamp, $(WHITE_PAPER_HTML).stamp and
+ $(REF_GUIDE_HTML).stamp.
+ (dist_doc_DATA, MAINTAINERCLEANFILES): Remove $(TECHNICAL_HTML),
+ $(TUTORIAL_HTML), $(WHITE_PAPER_HTML) and $(REF_GUIDE_HTML).
+ Add $(TECHNICAL_HTML_OUTPUTS), $(TUTORIAL_HTML_OUTPUTS),
+ $(WHITE_PAPER_HTML_OUTPUTS) and $(REF_GUIDE_HTML_OUTPUTS).
+
+2010-03-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Use texi2dvi to produce HTML from LaTeX.
+
+ * doc/Makefile.am
+ (TEXI2DVI_FLAGS): Add -I $(DOC_SRCDIR)/white_paper.
+ ($(TECHNICAL_PDF), $(TUTORIAL_PDF))
+ ($(WHITE_PAPER_PDF), $(REF_GUIDE_PDF)):
+ Reduce these rules to a list of extra dependencies and let the
+ generic tex-to-html rule do the job.
+
+2010-03-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Split LaTeX-to-HTML rules to clear things up.
+
+ * doc/tools/todoxygen.sh: Take a HTML file as input instead of a
+ LaTeX one.
+ * doc/Makefile.am (DOC_PACKAGES): New variable.
+ (TECHNICAL_HTML, TUTORIAL_HTML, REF_GUIDE_HTML):
+ New variables.
+ ($(TECHNICAL_HTML), $(TUTORIAL_HTML), $(REF_GUIDE_HTML)):
+ New targets.
+ (dist_doc_DATA): Add $(TECHNICAL_HTML), $(TUTORIAL_HTML) and
+ $(REF_GUIDE_HTML).
+ ($(TECHNICAL_HH)): Depend on and process $(TECHNICAL_HTML) instead
+ of $(technical_dir)/technical.tex.
+ ($(TUTORIAL_HH)): Depend on and process $(TUTORIAL_HTML) instead
+ of $(tutorial_dir)/tutorial.tex.
+ ($(REF_GUIDE_HH)): Depend on and process $(REF_GUIDE_HTML) instead
+ of $(ref_guide_dir)/ref_guide.tex.
+ (CLEANFILES): Remove now useless patterns.
+ (clean-local): Likewise.
+ Adjust paths.
+
+2010-03-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ List non generated documentation outputs separately.
+
+ * doc/Makefile.am (OUTPUTS, EXAMPLES):
+ Sort in lexicographical order.
+ Remove $(srcdir)/outputs/ima2d-decl-2.txt
+ Move $(srcdir)/outputs/graph-output-1.txt,
+ $(srcdir)/outputs/ima2d-display-1.txt,
+ $(srcdir)/outputs/ima2d-display-2.txt,
+ $(srcdir)/outputs/ima2d-display-output-1.txt,
+ $(srcdir)/outputs/ima2d-display-output-2.txt,
+ $(srcdir)/outputs/parray-display-1.txt and
+ $(srcdir)/outputs/win-create-1-display.txt...
+ (MORE_OUTPUTS): ...here (new variable).
+ * doc/outputs/ima2d-decl-2.txt: Remove.
+
+2010-03-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Use texi2dvi to produce PDF from LaTeX.
+
+ * doc/Makefile.am: Include $(top_srcdir)/build-aux/tex.mk.
+ (TEXI2DVI_FLAGS): Append -I $(DOC_SRCDIR), -I $(OUTPUTS_SRCDIR),
+ -I $(SPLIT_OUTPUTS_SRCDIR), -I $(IMG_SRCDIR) and -I
+ $(SPLIT_EXAMPLES_SRCDIR).
+ (technical_TEXINPUTS, tutorial_TEXINPUTS)
+ (white_paper_TEXINPUTS, ref_guide_TEXINPUTS):
+ Remove variables.
+ ($(TECHNICAL_PDF), $(TUTORIAL_PDF))
+ ($(WHITE_PAPER_PDF), $(REF_GUIDE_PDF)):
+ Reduce these rules to a list of extra dependencies and let the
+ generic tex-to-pdf rule do the job.
+ ($(WHITE_PAPER_HTML)): Adjust rule.
+
+2010-03-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Merge doc/ Makefile helpers into doc/Makefile.am.
+
+ * milena/doc/doc.mk,
+ * milena/doc/examples/make.mk,
+ * milena/doc/ref_guide/ref_guide.mk,
+ * milena/doc/technical/technical.mk,
+ * milena/doc/tutorial/tutorial.mk,
+ * milena/doc/white_paper/white_paper.mk:
+ Remove and inline these files...
+ * doc/Makefile.am: ...here.
+ Do not include $(top_srcdir)/milena/tests/tests.mk.
+ (AM_CPPFLAGS): Add -I$(top_srcdir)/milena and
+ -I$(top_builddir)/milena.
+ ($(DOC_SRCDIR)/examples-outputs.mk): Depend on
+ $(srcdir)/Makefile.am instead of $(srcdir)/examples/make.mk.
+
+2010-03-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Improve dependencies of some documentation products.
+
+ * doc/ref_guide/ref_guide.mk (ref_guide_dependencies):
+ New variable.
+ Use it to define dependencies of...
+ ($(REF_GUIDE_HH), $(REF_GUIDE_PDF)):
+ ...these targets.
+ * doc/technical/technical.mk (technical_dependencies):
+ New variable.
+ Use it to define dependencies of...
+ ($(TECHNICAL_HH), $(TECHNICAL_PDF)):
+ ...these targets.
+ * doc/tutorial/tutorial.mk (tutorial_dependencies):
+ New variable.
+ Use it to define dependencies of...
+ ($(TUTORIAL_HH), $(TUTORIAL_PDF)):
+ ...these targets.
+
+2010-03-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Revamp the Makefile machinery in milena/doc/examples/.
+
+ * doc/gen-examples-outputs-mk: New script.
+ * doc/examples/make.mk (PROGRAMS_examples):
+ Sort and remove duplicates.
+ (examples_dir): Remove variable.
+ (accu_right_instanciation_SOURCES)
+ (borderthickness_SOURCES)
+ (box2d_bbox_SOURCES)
+ (domain_display_SOURCES)
+ (dpoint_1_SOURCES)
+ (estim_sites_SOURCES)
+ (extend_SOURCES)
+ (extension_ignore_SOURCES)
+ (fill_SOURCES)
+ (fill_call_1_SOURCES)
+ (fill_imageif_cfun_SOURCES)
+ (fill_part_image_SOURCES)
+ (fill_subdomain_SOURCES)
+ (fill_subdomain_shorter_SOURCES)
+ (first_routine_SOURCES)
+ (forall_piter_SOURCES)
+ (fun_p2v_1_SOURCES)
+ (graph_data_SOURCES)
+ (graph_iter_SOURCES)
+ (ima2d_1_SOURCES)
+ (ima2d_2_SOURCES)
+ (ima2d_3_SOURCES)
+ (ima2d_4_SOURCES)
+ (ima2d_5_SOURCES)
+ (ima2d_6_clone_SOURCES)
+ (ima2d_7_SOURCES)
+ (ima2d_rot_SOURCES)
+ (ima_has_SOURCES)
+ (ima_save_SOURCES)
+ (ima_size_SOURCES)
+ (labeling_compute_SOURCES)
+ (logical_not_SOURCES)
+ (mln_var_SOURCES)
+ (parray_append_SOURCES)
+ (parray_bbox_SOURCES)
+ (paste_SOURCES)
+ (paste_call_1_SOURCES)
+ (point_1_SOURCES)
+ (predicate_1_SOURCES)
+ (win_create_1_SOURCES)
+ (win_create_2_SOURCES)
+ (tuto2_first_image_SOURCES)
+ (tuto3_rw_image_SOURCES)
+ (tuto4_genericity_and_algorithms_SOURCES)
+ (tuto3_colorize_SOURCES)
+ (tuto3_println_SOURCES)
+ (tuto3_trace_SOURCES)
+ (tuto4_point2d_SOURCES)
+ (tuto4_site_set_create_SOURCES):
+ Adjust.
+ (data-regen, examples, run-examples)
+ Remove (phony) targets.
+ (split-examples, split-outputs):
+ Likewise.
+ Superseded by...
+ ($(srcdir)/split-examples.stamp, $(srcdir)/split-outputs.stamp):
+ ...these (new) targets.
+ (OUTPUTS, EXAMPLES): New variable.
+ ($(DOC_SRCDIR)/examples-outputs.mk): New target.
+ Include $(DOC_SRCDIR)/examples-outputs.mk.
+ (MAINTAINERCLEANFILES): Ad $(OUTPUTS).
+ (diff-data, fix-refdata): Remove these (phony) targets, as they
+ duplicate services provided by the SCM (Git).
+ (clean-local, clean-figures): Remove these targets and add their
+ actions...
+ * doc/Makefile.am (maintainer-clean-local): ...to this rule.
+ (EXTRA_DEPS): Remove variable.
+ Superseded by...
+ (refman_dependencies): ...this (new) variable.
+ ($(srcdir)/user-refman.stamp)
+ ($(srcdir)/devel-refman.stamp):
+ Adjust targets' dependencies.
+ (fig-convert): Remove (phony) target.
+ Clean up.
+ * milena/doc/examples-outputs.mk: New (generated file).
+
+2010-03-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have documentation's examples not depend on hard-coded paths.
+
+ * doc/tools/data.hh.in: New file.
+ Use it...
+ * doc/examples/ima-save.cc:
+ ...here, to avoid hard-coded paths.
+ * doc/tools/sample_utils.hh: Likewise.
+ Adjust header guards.
+ * doc/examples/split/ima-save-1.cc.raw: Regen.
+
+2010-03-08 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Update the documentation's copyright header.
+
+ * mln/core/concept/object.hh: Here.
+
+2010-03-08 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have Doxygen generate its outputs in the build directory.
+
+ * doc/Doxyfile.in (OUTPUT_DIRECTORY):
+ s,@srcdir@/user/,@builddir@/user-refman.tmp,.
+ (EXCLUDE): Adjust.
+ * doc/Makefile.am (edit_devel): Adjust.
+ ($(srcdir)/user-refman.stamp)
+ ($(srcdir)/devel-refman.stamp)
+ (maintainer-clean-local):
+ Adjust targets.
+
+2010-03-08 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Reorganize doc/Makefile.am.
+
+ * doc/Makefile.am (edit, $(DOXYFILE_USER)):
+ Move these definitions closer to their use site.
+ (edit_devel, $(DOXYFILE_DEVEL)): Likewise.
+
+2010-03-08 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have Doxyfile.in generate the user documentation.
+
+ * doc/Doxyfile.in: Switch settings to generate the user
+ documentation.
+ * doc/Makefile.am (edit_user): Remove variable.
+ (edit_devel): New variable.
+ ($(DOXYFILE_USER)): Generate it directly from
+ $(srcdir)/$(DOXYFILE).in.
+ ($(DOXYFILE_DEVEL)): Adjust to use edit_devel.
+
+2010-03-08 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Generate the HTML and LaTeX Doxygen documentation in a single pass.
+
+ * doc/Doxyfile.in (GENERATE_LATEX): Enable.
+ (EXCLUDE): Adjust.
+ * doc/Makefile.am (ref-doc-html, ref-doc-devel-html):
+ Remove (phony) targets.
+ (ref-doc, ref-doc-devel):
+ New (phony) targets.
+ (doc-html, doc-devel-html):
+ Adjust targets.
+ (DOXYFILE_USER_PDF, DOXYFILE_USER_HTML)
+ (DOXYFILE_DEVEL_PDF, DOXYFILE_DEVEL_HTML):
+ Remove variables.
+ (DOXYFILE_USER_PDF, DOXYFILE_DEVEL):
+ New variables.
+ (USER_REFMAN_LATEX, USER_REFMAN_HTML)
+ (DEVEL_REFMAN_LATEX, DEVEL_REFMAN_HTML):
+ Remove variables.
+ (USER_REFMAN): New variable.
+ (all-local): Adjust.
+ ($(srcdir)/user-refman-latex.stamp)
+ ($(srcdir)/$(USER_REFMAN_LATEX))
+ ($(srcdir)/user-refman-html.stamp)
+ ($(srcdir)/$(USER_REFMAN_HTML))
+ ($(srcdir)/devel-refman-latex.stamp)
+ ($(srcdir)/$(DEVEL_REFMAN_LATEX))
+ ($(srcdir)/devel-refman-html.stamp)
+ ($(srcdir)/$(DEVEL_REFMAN_HTML)):
+ Remove targets.
+ ($(srcdir)/user-refman.stamp)
+ ($(srcdir)/$(USER_REFMAN))
+ ($(srcdir)/devel-refman.stamp)
+ ($(srcdir)/$(DEVEL_REFMAN)):
+ New targets.
+ ($(srcdir)/$(USER_REFMAN_PDF), $(srcdir)/$(DEVEL_REFMAN_PDF)):
+ Adjust targets.
+ (regen-doc, regen-devel-doc): New (phony) targets.
+ (clean-user-refman-latex, clean-user-refman-html)
+ (clean-devel-refman-latex, clean-devel-refman-html):
+ Remove (phony) targets.
+ (maintainer-clean-local): Adjust.
+ (edit_pdf): Remove variable.
+ (EXTRA_DIST): Remove $(USER_REFMAN_HTML).
+ Add $(USER_REFMAN)/html.
+ (install-data-local, uninstall-local): Adjust.
+ (CLEANFILES): Remove Doxyfile_user, Doxyfile_user_pdf,
+ Doxyfile_devel, Doxyfile_devel_pdf, devel and user.
+ (MAINTAINERCLEANFILES): Add Doxyfile_user and Doxyfile_devel.
+ ($(DOXYFILE_USER_PDF), $(DOXYFILE_USER_HTML))
+ ($(DOXYFILE_DEVEL_PDF), $(DOXYFILE_DEVEL_HTML)):
+ Remove targets.
+ ($(DOXYFILE_USER), $(DOXYFILE_DEVEL)):
+ New targets.
+
+2010-03-08 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Shorten the list of files visited by Doxygen.
+
+ * doc/Doxyfile.in (STRIP_FROM_PATH, INPUT, IMAGE_PATH):
+ Remove all paths from the build directory.
+ (EXCLUDE): Add paths to generated documentation and generated unit
+ tests.
+
+2010-03-08 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * apps/graph-morpho/morpho.hh: Help Doxygen compile LaTeX formulas.
+
+2010-03-04 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Clean up Doxygen-related Make rules in milena/doc/.
+
+ * doc/Makefile.am (DOXYFILE)
+ (DOXYFILE_USER_PDF, DOXYFILE_USER_HTML)
+ (DOXYFILE_DEVEL_PDF, DOXYFILE_DEVEL_HTML):
+ New variables.
+ (USER_REFMAN_LATEX)
+ (DEVEL_REFMAN_PDF, DEVEL_REFMAN_LATEX, DEVEL_REFMAN_HTML):
+ New variables.
+ (all-local): Depend on $(srcdir)/$(USER_REFMAN_PDF),
+ $(srcdir)/user-refman-html.stamp.
+ ($(srcdir)/$(USER_REFMAN_PDF)): Split these targets and move the
+ generation of the LaTeX sources...
+ ($(srcdir)/user-refman-latex.stamp)
+ ($(srcdir)/$(USER_REFMAN_LATEX))
+ ($(srcdir)/devel-refman-latex.stamp)
+ ($(srcdir)/$(DEVEL_REFMAN_LATEX)):
+ ...here (new targets).
+ ($(srcdir)/$(USER_REFMAN_HTML))
+ ($(srcdir)/$(DEVEL_REFMAN_HTML)):
+ Delegate the actions to...
+ ($(srcdir)/user-refman-html.stamp)
+ ($(srcdir)/devel-refman-html.stamp):
+ ...these (new) targets.
+ (clean-user-refman-latex, clean-user-refman-html)
+ (clean-devel-refman-latex, clean-devel-refman-html):
+ New (phony) targets.
+ (maintainer-clean-local): Depend on clean-user-refman-latex,
+ clean-user-refman-html, clean-devel-refman-latex and
+ clean-devel-refman-html.
+ (EXTRA_DIST): Disable Doxyfile_devel_html, Doxyfile_devel_pdf,
+ Doxyfile_user_html and Doxyfile_user_pdf.
+ Add $(DOXYFILE).in.
+ ($(srcdir)/Doxyfile_user, $(srcdir)/Doxyfile_user_pdf)
+ ($(srcdir)/Doxyfile_devel, $(srcdir)/Doxyfile_devel_pdf):
+ Rename targets as...
+ ($(DOXYFILE_USER_HTML), $(DOXYFILE_USER_PDF))
+ ($(DOXYFILE_DEVEL_HTML), $(DOXYFILE_DEVEL_PDF)):
+ ...these.
+
+2010-03-03 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Stop make from recurring in doc/examples.
+
+ * doc/Makefile.am: Include
+ $(top_srcdir)/milena/doc/examples/make.mk.
+ (SUBDIRS): Remove variable.
+ (examples, data-regen, fig-convert): Remove (phony) targets.
+ * doc/examples/Makefile.am: Rename as...
+ * doc/examples/make.mk: ...this.
+ Adjust.
+ * doc/examples/ima-save.cc,
+ * doc/tools/sample_utils.hh:
+ Adjust as well.
+ * milena/doc/examples/split/ima-save-1.cc.raw: Regen.
+
+2010-03-03 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Stop make from recurring in doc/white_paper.
+
+ * doc/white_paper/Makefile.am: Rename as...
+ * doc/white_paper/white_paper.mk: ...this.
+ Adjust.
+ * doc/Makefile.am: Include $(srcdir)/white_paper/white_paper.mk.
+ (SUBDIRS): Remove white_paper.
+ (white-paper-pdf, white-paper-html): Remove (phony) targets.
+
+2010-03-03 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Stop make from recurring in doc/technical.
+
+ * doc/technical/Makefile.am: Rename as...
+ * doc/technical/technical.mk: ...this.
+ Adjust.
+ * doc/Makefile.am: Include $(srcdir)/technical/technical.mk.
+ (SUBDIRS): Remove technical.
+
+2010-03-03 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Stop make from recurring in doc/tutorial.
+
+ * doc/tutorial/Makefile.am: Rename as...
+ * doc/tutorial/tutorial.mk: ...this.
+ Adjust.
+ * doc/Makefile.am: Include $(srcdir)/tutorial/tutorial.mk.
+ (SUBDIRS): Remove tutorial.
+ ($(srcdir)/tutorial/tutorial.hh): Remove target.
+ (tutorial-pdf, tutorial-html): Remove (phony) targets.
+
+2010-03-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix apps/mesh-segm-skel/io.hh.
+
+ * apps/mesh-segm-skel/io.hh: Include cstdio.
+
+2010-03-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Aesthetic changes.
+
+ * tests/tests.mk,
+ * tests/tests-recursive.mk:
+ Here.
+ Help Emacs find out the nature of these files.
+
+2010-03-02 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Stop make from recurring in doc/ref_guide.
+
+ * doc/ref_guide/Makefile.am: Rename as...
+ * doc/ref_guide/ref_guide.mk: ...this.
+ Adjust.
+ * doc/doc.mk (doc_dir): New variable.
+ * doc/Makefile.am: Include doc/ref_guide/ref_guide.mk.
+ (SUBDIRS): Remove ref_guide.
+ ($(srcdir)/ref_guide/ref_guide.hh): Remove target.
+ (ref-guide-pdf, ref-guide-html): Remove (phony) targets.
+
+2010-03-02 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Get rid of Make targets `fake-doc' and `void-doc'.
+
+ * doc/Makefile.am,
+ * doc/ref_guide/Makefile.am,
+ * doc/technical/Makefile.am,
+ * doc/tutorial/Makefile.am,
+ * doc/white_paper/Makefile.am
+ (fake-doc, void-doc): Remove targets.
+
+2010-03-02 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Regen Milena's Makefile helpers.
+
+ * headers.mk, tests/unit_test/unit-tests.mk: Here.
+
2009-11-18 Guillaume Lazzara <z(a)lrde.epita.fr>
* doc/white_paper/white_paper.tex: Fix an invalid URL.
diff --cc milena/doc/tutorial.tex
index 7ddbb60,0000000..5a61461
mode 100644,000000..100644
--- a/milena/doc/tutorial.tex
+++ b/milena/doc/tutorial.tex
@@@ -1,1642 -1,0 +1,1646 @@@
+%% Copyright (C) 2008, 2009 EPITA Research and Development Laboratory
+%% (LRDE)
+%%
+%% This file is part of Olena.
+%%
+%% Olena is free software: you can redistribute it and/or modify it under
+%% the terms of the GNU General Public License as published by the Free
+%% Software Foundation, version 2 of the License.
+%%
+%% Olena 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 Olena. If not, see <http://www.gnu.org/licenses/>.
+
+
+%%%%%%%%%%%%%%%%%%%%%%
+% Milena's tutorial. %
+%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass{report}
+
+%\usepackage{hevea}
+
+
+\usepackage{html}
+\usepackage{graphicx}
+\usepackage{makeidx}
+\usepackage{xcolor}
+\usepackage{color}
+\usepackage{hyperref}
+\usepackage{pgf}
+\usepackage{doxyfuns}
+\usepackage{milena}
+
+% FIXME: Consider using the package FiXme from Didier Verna instead.
+%\newcommand{\tofix}[1]{{\color{red}(FIXME: #1)}}
+\newcommand{\tofix}[1]{}
+
+
+\title{Olena -- Tutorial}
+\author{LRDE}
+\date{}
+\makeindex
+
+
+
+\begin{document}
+
+% Doxygen use only - Generate the left menu.
+%Write foreword below.
+\begin{htmlonly}
+\backslash endhtmlonly
+
+\backslash page tutorial Tutorial
+- \backslash subpage tuto1
+- \backslash subpage tuto2
+- \backslash subpage tuto3
+- \backslash subpage tuto4
+- \backslash subpage tuto5
+- \backslash subpage tuto6
+- \backslash subpage tuto7
+- \backslash subpage tuto8
+
+\backslash htmlonly
+\end{htmlonly}
+
+\begin{latexonly}
+\maketitle
+
+%====================================
+\chapter*{Copyright}
+
+Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE).
+
+
+This document is part of Olena.
+
+
+Olena is free software: you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation, version 2 of the License.
+
+
+Olena 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 Olena. If not, see $<$http://www.gnu.org/licenses/$>$.
+
+
+\tableofcontents
+
+\end{latexonly}
+
+
+%====================================
+\doxychapter{tuto1}{Welcome}
+
+Welcome to Milena's tutorial.
+
+
+
+
+
+%**************************
+\doxysection{tuto1howotlearn}{How to learn Milena}
+
+Milena is only a subpart of Olena but tends to be a large system too.
+Therefore it is not possible to present all the functionalities in a
+tutorial.
+
+
+Milena targets several audiences: \textit{assemblers},
+\textit{designers}, \textit{providers} and
+\textit{architects}. \textit{Assemblers} want to apply and assemble
+algorithms to solve image processing, pattern recognition or computer
+vision problems, \textit{designers} build new algorithms,
+\textit{providers} are interested in developing their own data
+structures and extend an existing library and \textit{architects} are
+basically developpers extending the core library.
+
+
+Whatever the kind of user you are, the key to learning how to use
+Milena is to become familiar with its palette of objects and the way
+of combining them.
+
+As an \textit{assemblers}, you may start with this simple tutorial and the Quick
+tour \tofix{ref}. They describe and illustrate the key features of the library.
+\textit{Assemblers} getting familiar with Milena and \textit{designers}, should
+take a look at the Quick Reference Guide \tofix{ref!}.
+It is a more detailed explanations of the library's features.
+
+\textit{Assemblers} and \textit{designers} may be also interested by all the
+examples provided with the documentation and the tutorial. The source code is
+available in \hpath{milena/doc/examples} \tofix{ref} and is usually pointed
+out and commented by the documentation.
+
+Taking a look at the test suite is also a good idea. The tests usually focus on
+a single functionality and handle several use cases which may overlap your needs.
+The test suite is located in \hpath{milena/tests} \tofix{ref?}.
+
+Still not enough information? More information about all the routines is
+available in the User HTML documentation \tofix{ref}.
+It mainly targets \textit{designers} and \textit{providers}.
+The latter may also be interested by the Developer HTML documentation
+(not available yet).
+
+
+
+%**************************
+\doxysection{tuto1obtainingthelib}{Obtaining the library}
+
+There are two ways of getting Milena on the web:
+\begin{itemize}
+ \item Download a tarball/package from the website,
+ \item Checkout the SVN repository.
+\end{itemize}
+
+Downloading a package or a tarball is the best choice for a new user. Except
+for nightly builds which are packages generated every night from the SVN repository,
+packages and tarballs contain only a released version of Milena. It guaranties a
+certain quality: no building issues, no bugs (ok, maybe some...), \ldots
+
+This tutorial is based on the latest released version of Milena. Therefore,
+if you decide to use the SVN version, you may notice different behaviors or results
+compared to what it is described in this document.
+
+Using the SVN version implies some drawbacks: the code might crash, not
+compile or produce incorrect results.
+Besides, The SVN version is always up to date and you may find new functionalities,
+bug fixes and new syntax improvements.
+This version targets users familiar with build systems and compilation issues.
+We strongly advise you to not use it for production use.
+
+
+
+%**************************
+\doxysection{tuto1downloading}{Downloading the library}
+
+
+
+%download page.
+
+%--------------------------
+\doxysubsection{tuto1downloadingsvn}{Downloading from SVN}
+
+First, be sure that SVN is already installed on your system.
+Open a terminal and type:
+
+\begin{verbatim}
+$ svn --version --quiet
+1.4.6
+\end{verbatim}
+
+You should see your version of SVN installed. If you read 'Command not found'
+then you need to install SVN.
+
+Usually, systems providing packages reference SVN's package as 'subversion'.
+
+To install SVN on Debian or Ubuntu, run:
+
+\begin{verbatim}
+$ sudo apt-get install subversion
+\end{verbatim}
+
+For other distributions, please refer to the user documentation of your system.
+
+Once you have SVN installed, go to the directory where you would like to
+download Olena and create a new directory.
+
+\begin{verbatim}
+$ cd $HOME
+$ mkdir olena
+$ cd olena
+\end{verbatim}
+
+Then 'checkout' (download) the repository with the following command.
+
+\begin{verbatim}
+$ svn co https://svn.lrde.epita.fr/svn/oln/trunk
+\end{verbatim}
+
+Enter the 'trunk' directory.
+
+\begin{verbatim}
+$ cd trunk
+\end{verbatim}
+
+You are now ready to configure the directory and install Milena as described
+in section \ref{tuto2}.
+We invite you to take a look at the description of the directory structure
+(section \ref{tuto1dirstruct}).
+If you encounter any issues in the installation process or if you have any
+question, do not forget to join the mailing lists (section \ref{tuto1mailinglists})
+and/or use the other documentations resources (section ref{tuto1documentation}).
+
+
+
+
+
+%--------------------------
+\doxysubsection{tuto1downloadingpackages}{Downloading packaged releases}
+
+%details.
+
+Milena's packages can be downloaded from:
+
+\href{http://www.lrde.epita.fr/Olena/Download}{http://www.lrde.epita.fr/Olena/Download}
+
+On this page you will find the latest and past releases.
+Currently, we provide only '.tar.gz' and 'tar.bz2' archives.
+
+Once downloaded, you just need to uncompress the archive.
+
+For the '.tar.gz' archive:
+\begin{verbatim}
+$ tar zxvf olena.tar.gz
+\end{verbatim}
+
+For the '.tar.bz2' archive:
+\begin{verbatim}
+$ tar jxvf olena.tar.bz2
+\end{verbatim}
+
+Then, enter the new created directory:
+\begin{verbatim}
+$ cd olena
+\end{verbatim}
+
+
+You are now ready to configure the directory and install Milena as described
+in section \ref{tuto2}.
+We invite you to take a look at the description of the directory structure
+(section \ref{tuto1dirstruct}).
+If you encounter any issues in the installation process or if you have any
+question, do not forget to join the mailing lists (section
+\ref{tuto1mailinglists}) and/or use the other documentations resources
+(section \ref{tuto1documentation})).
+
+
+
+%**************************
+\doxysection{tuto1mailinglists}{Join the mailing lists}
+
+Regardless your use of Olena, we strongly advise you to join our mailing lists.
+This is the best way to keep up to date about new releases, bug
+notifications/fixes and future updates.
+This is also a good opportunity to tell us what you would like to find in
+Milena and what could be improved.
+
+Currently four mailing-lists are available:
+
+\begin{tabular}{l l}
+\textbf{Olena} & Discussion about the project Olena \\
+\textbf{Olena-bugs} & Bugs from Olena projects \\
+\textbf{Olena-core} & Internal list for the Olena project \\
+\textbf{Olena-patches} & patches for the Olena project \\
+\end{tabular}
+
+You can subscribe to these mailing lists at the following address:
+
+\begin{center}
+\begin{verbatim}
+https://www.lrde.epita.fr/mailman/listinfo/
+\end{verbatim}
+\end{center}
+
+Just click on the name of the mailing list you want to subscribe to and fill
+out the form.
+
+
+
+%**************************
+\doxysection{tuto1dirstruct}{Directory structure}
+
+Milena's directory is composed of several subdirectories. In order to help
+you finding what you need, you will find a description of all these
+subdirectories.
+
+
+\vspace{0.5cm}
+List of \hpath{milena}'s subdirectories:
+\begin{itemize}
+
+\item \dir{apps} --- A full example of a 3D mesh visualisation tool. It
+ uses milena.
+
+\item \dir{doc} --- THE directory you must know. Contains all the
+ documentation material.
+
+\item \dir{img} --- A set of common test images. They are used in the
+ test suite. Feel free to use it in your programs.
+
+\item \dir{mesh} --- A set of 3D meshes. They can be used with the full
+ example located in \hpath{milena/apps}.
+
+\item \dir{mln} --- The core of the library. Contains all the library headers.
+
+\item \dir{tests} --- The test suite. Is it subdivided in sub directories.
+ The directory hierarchy respects \hpath{milena/mln}'s.
+
+\item \dir{tools} --- Small tools written with milena. They can be used as examples.
+
+\end{itemize}
+
+
+\vspace{0.5cm}
+List of \hpath{mln}'s subdirectories:
+\begin{itemize}
+ \item \dir{accu} --- Set of Accumulators.
+ \item \dir{algebra} --- Algebraic structures like vectors or matrices.
+ \item \dir{arith} --- Arithmetical operators.
+ \item \dir{binarization} --- Routines to binarize an image.
+ \item \dir{border} --- Image border related routines.
+ \item \dir{canvas} --- Generic canvas. They define generic ways of browsing
+ an image, compute data, \dots.
+ \item \dir{convert} --- Automatic conversion mechanism.
+ \item \dir{core} --- Core of the library. Here you can find the image types,
+ the site set types and basic concepts.
+ \item \dir{data} --- Routines that modify image data.
+ \item \dir{debug} --- Debug related routines.
+ \item \dir{display} --- Display images on the screen.
+ \item \dir{draw} --- Draw geometric objects in an image.
+ \item \dir{essential} --- Set of essential headers for 1,2,3-D manipulations.
+ \item \dir{estim} --- Compute data on image values.
+ \item \dir{extension} --- Image extension manipulation.
+% \item \dir{extract} --- FIXME: extract will be removed and replaced by thru().
+ \item \dir{fun} --- Set of functions applying on sites, values, \ldots
+ \item \dir{geom} --- Functions related to image geometry.
+ \item \dir{graph} --- Graph related routines.
+ \item \dir{histo} --- Histogram related functions.
+ \item \dir{io} --- I/O related routines.
+ \item \dir{labeling} --- Labeling related routines.
+% \item \dir{level} --- Point-wise operators on levels.
+ \item \dir{linear} --- Linear operators.
+ \item \dir{literal} --- Generic image values such as zero, black, white \ldots
+ \item \dir{logical} --- Logical operators.
+ \item \dir{make} --- Small routines to construct images, windows, \ldots
+ \item \dir{math} --- Mathematical functions.
+ \item \dir{metal} --- Metallic macros/structures. Static library helping
+ developing doing static tests.
+ \item \dir{morpho} --- Mathematical morphology.
+ \item \dir{norm} --- Norm computation.
+ \item \dir{opt} --- Optional routines. Routines which may work on a
+ specific image type only.
+ \item \dir{pw} --- Point-wise image related routines.
+ \item \dir{registration} -- Registration related routine.
+ \item \dir{set} --- Set related routines.
+ \item \dir{subsampling} --- Sub-sampling related algorithms.
+ \item \dir{tag} --- Tag traits.
+ \item \dir{test} --- Definition of predicates.
+ \item \dir{topo} --- Complex related structures.
+ \item \dir{trace} --- Debug trace mechanism.
+ \item \dir{trait} --- Internal traits mechanism.
+ \item \dir{transform} --- Algorithms based on the data::transform.
+ \item \dir{util} --- Various utilitarian classes.
+ \item \dir{value} --- Set of value types which can be used in an image.
+ \item \dir{win} --- Set of various window kinds.
+\end{itemize}
+
+
+The source code and the material of the documentation is available in \hpath{
+milena/doc}.
+List of \hpath{doc}'s subdirectories:
+\begin{itemize}
+\item \dir{examples} --- All the source code of the documentation examples.
+\item \dir{benchmark} --- Some benchmarks.
+\item \dir{tools} --- Small tools used for generating documentation /
+ building examples.
+
+\item \dir{tutorial} --- Tutorial sources.
+\item \dir{white\_paper} --- White paper sources.
+%\item \dir{technical} --- Technical documentation. (DEPRECATED)
+\item \dir{ref\_guide} --- Reference guide sources.
+\item \dir{figures} --- Reference figures for documentation generation.
+\item \dir{outputs} --- Reference outputs for documentation examples.
+
+\end{itemize}
+
+
+
+
+%**************************
+\doxysection{tuto1documentation}{Documentation}
+
+This tutorial is not the only documentation of Milena. Other documents are available:
+
+\begin{itemize}
+ \item \dir{White paper} --- A small document of few pages presenting the key
+ features of the library. It intents to give a big picture of the library.
+
+ \item \dir{Quick tour} --- It aims at giving an overview of Milena's possibilities.
+ It does not only give the concepts but illustrate them with small sample
+ codes.
+
+ \item \dir{Quick reference guide} --- Presents in details all the main
+ functionalities of Milena.
+ Hints and full examples are also provided. The sample codes are commented
+ and each concept in the library is detailed. This is the reference document for any
+ \textit{assembler} and \textit{algorithm designer}.
+
+ \item \dir{HTML user doc} --- The full documentation of the library. The full
+ API is described in details. Each part of the library is classified by
+ categories and the source code is directly accessible from the documentation.
+ This is the reference document for any \textit{algorithm designer} and/or
+ \textit{provider of data structures}.
+
+ \item \dir{Header files} --- Every object or algorithm is declared in a '.hh' file.
+ The documentation is provided as comments in these file.
+\end{itemize}
+
+
+%**************************
+\doxysection{tuto1community}{Community and Support}
+
+Even though Milena is currently developed by the LRDE in EPITA, we are open
+for new contributors.
+
+\begin{itemize}
+ \item If you are a user, please send us feedback about the library.
+ Did you find what you wanted? Do you miss something?
+
+ \item Please report bugs and defects in the API. Mailing lists are the best
+ way for reporting that (section \ref{tuto1mailinglists}).
+
+ \item Developers, if you write cool open source programs or algorithms with Milena,
+ send them to us. We may ship your code with Olena and/or add it to
+ our download page.
+
+ \item Educators, if you use Olena for your courses and you are ready to
+ share your materials, you can send it to us through our mailing-lists.
+
+ \item We are also interested in partnership or commercial use of Milena.
+ If you are interested, contact us directly (\ref{tuto1contacts}).
+
+\end{itemize}
+
+
+%**************************
+\doxysection{tuto1projectstatus}{Project status}
+
+If you want to stay tuned to Milena's development, the best way is probably
+the mailing-lists (section \ref{tuto1mailinglists}).
+
+There are other ways to get to know what is the status of the project.
+
+\begin{itemize}
+\item Olena's trac\\
+ \href{https://trac.lrde.org/olena}{https://trac.lrde.org/olena} \\
+ Here is the road-map, the current open tickets/bugs/improvements which
+ are taken in consideration. A source browser is also available.
+
+\item Olena's Buildfarm \\
+ \href{https://buildfarm.lrde.org/buildfarm/oln/}{https://buildfarm.lrde.org/buildfarm/oln/} \\
+ The official build-farm. Every night and after each commit, tests
+ are compiled and run. The build-farm can show you whether it is safe
+ to update your svn copy of Milena or not\ldots
+
+\item Test failures \\
+ \href{http://www.lrde.epita.fr/dload/olena/test-failures-daily.html}{http://www.lrde.epita.fr/dload/olena/test-failures-daily.html} \\
+ Through this page, you can see exactly which tests do not compile or pass.
+ This page is updated every night.
+
+\end{itemize}
+
+
+%**************************
+\doxysection{tuto1briefhistory}{A brief history of Milena}
+
+The Olena project aims at building a scientific computation platform oriented
+towards image processing, image recognition, and artificial vision.
+This environment is composed of a high performance generic library (Milena),
+a set of tools for shell scripts, together with, in the more distant future,
+an interpreter (a la Octave, MatLab etc.) and a visual programming environment.
+
+The Olena project started in 2000 from a small prototype on 2-D images.
+From November 2001 to April 2004, this prototype evolved from version 0.1 to 0.10.
+More image types were supported and the level of genericity expected from the
+library was partially obtained. During these three years, the prototype was used
+to experiment with genericity and to try to meet our objectives.
+In February 2007, Olena 0.11 was released to conform modern C++ compilers.
+At that time, the code was not enough readable though and the compilation time
+was too long.
+
+Since June 2007 up to now, The library of the Olena platform is called Milena
+and the library has been rewritten. The programming paradigm has been
+simplified: the code is more readable and the compilation time is acceptable.
+The level of genericity still meets our objectives though.
+
+Milena is now getting ready for being considered as stable and distributable.
+The core of the library is getting frozen and we aim at enriching the library,
+its documentation and the related tools.
+
+
+%**************************
+\doxysection{tuto1contacts}{Contacts}
+
+If you want to reach us directly, you can contact one of the following people:
+
+\begin{itemize}
+ \item Thierry Geraud - Project Manager - thierry.geraud(a)lrde.epita.fr
++ \item Jonathan Fabrizio - jonathan.fabrizio(a)lrde.epita.fr
++ \item Yann Jacquelet - yann.jacquelet(a)lrde.epita.fr
++ \item Guillaume Lazzara - guillaume.lazzara(a)lrde.epita.fr
++ \item Roland Levillain - roland.levillain(a)lrde.epita.fr
+\end{itemize}
+
+
+
+\vspace{2cm}
+\begin{center}
+ \tutotocnext{tuto2}
+\end{center}
+
+
+
+%====================================
+\doxychapter{tuto2}{Installation}
+
+%pre-requis/compatibility
+This section describes the installation process of Milena.
+Do not forget that Milena is a library, not a program. Therefore, no program
+will be installed.
+
+Milena's examples and tests are compiled on the following platforms:
+\begin{itemize}
+ \item Apple Tiger Darwin 8, PowerPC, GCC 4.0.1
+ \item Apple Leopard Darwin 10.5, X86-64, GCC 4.0.1, 4.2
+ \item Linux, i486, GCC 3.3, 4.1, 4.2, 4.3
+ \item Linux, x86-64, GCC 4.1
+\end{itemize}
+
+We guaranty that Milena compiles on these platforms, e.g. Linux and Unix
+platforms. It may compiles on other platforms though but we have not tested.
+If you did, and you succeeded, please let us know in order to update this
+section.
+
+Milena is known NOT to work with GCC-2.95.
+
+
+Milena is actively developed under Unix systems. As a result, the build system
+is based on the Autotools.
+Autotools make sure that every dependencies are resolved before compiling
+or installing a program.
+
+Milena is different from usual libraries in a way that nothing needs to be
+compiled to use it. The library itself is composed of headers which must be
+included when you need them.
+Then, your application will be compiled with the parts of the library used in
+that program. That's all.
+
+So, why do we have a build system? It is useful for installing the library on
+your system, generating the doc and compiling the test suite and the examples.
+
+
+
+%**************************
+\doxysection{tuto2bootstrap}{Bootstrap (SVN Sources)}
+
+If you got the sources from a package/tarball, you can skip this section. Go
+to section \ref{tuto2configure}.
+
+If you downloaded the sources from the SVN repository, you must launch a
+script before configuring the build directory.
+
+Run the following:
+\begin{verbatim}
+$ cd /my/path/to/olena
+$ ./bootstrap
+\end{verbatim}
+
+Running 'bootstrap' can take a while. Some files are generated during this
+process.
+When it's done, you are ready to configure the build directory.
+
+
+
+%**************************
+\doxysection{tuto2configure}{Configure}
+
+First, make sure you are at the root directory of the milena source:
+
+\begin{verbatim}
+$ cd /my/path/to/olena
+\end{verbatim}
+
+First, create and enter a build directory:
+\begin{verbatim}
+$ mkdir build
+$ cd build
+\end{verbatim}
+
+We are now about to configure the build directory. This process will create
+the necessary files to compile documentation, examples and tools and prepare the
+installation.
+
+Note that once the configuration ends the build directory cannot be
+moved elsewhere without following the following steps again.
+
+\textbf{Important Note}: the installation path prefix must be chosen at this step.
+By default, Milena will be installed in /usr/local but you may like to install
+it elsewhere. To do so, pass the option \textit{-{}-prefix=/installation/path/prefix}
+to the configure script (see below). Replace '/installation/path/prefix' with the
+wanted installation path prefix.
+
+now, you can run:
+\begin{verbatim}
+$ ../configure
+\end{verbatim}
+OR
+\begin{verbatim}
+$ ../configure --prefix=/installation/path/prefix
+\end{verbatim}
+
+The configure script will perform various tests. If there is no dependency
+issues, the last lines shown before the prompt are:
+
+\begin{verbatim}
+config.status: creating config.h
+config.status: executing depfiles commands
+$
+\end{verbatim}
+
+And if you type the following command, a '0' is printed out.
+\begin{verbatim}
+$ echo $?
+0
+$
+\end{verbatim}
+
+The build directory is now configured, the library can be installed.
+
+
+
+%**************************
+\doxysection{tuto2install}{Install}
+
+First, be sure to be in the build directory. If you followed the previous
+steps, the build directory should be in the Milena sources root directory.
+
+\begin{verbatim}
+$ cd /my/path/to/olena/build
+\end{verbatim}
+
+If you did not change the default install path prefix, set to
+\hpath{/usr/local}, you will need to have administrator privileges to
+perform the installation. Then, you may type:
+\begin{verbatim}
+$ sudo make install
+\end{verbatim}
+You will be prompted for the administrator password.
+
+Otherwise, if you set the install path prefix to a directory own by your
+user, simply type:
+\begin{verbatim}
+$ make install
+\end{verbatim}
+
+When the installation is finished, you are done. Milena is installed on your
+system. But maybe you would like to build the examples? This is described
+in section \ref{tuto2optionalcomp}.
+
+A description of the installation content is also available in section
+\ref{tuto2installcontent}.
+
+
+
+%**************************
+\doxysection{tuto2optionalcomp}{Optional compilation}
+
+The library itself does not need to be compiled, therefore installing
+Milena does not require compilation.
+
+Though, some examples and tools are provided with the library and must be
+compiled if you want to use them.
+
+\doxysubsection{tuto2examples}{Examples}
+
+Examples are part of the documentation. The sources are located in
+\hpath{milena/doc/examples}.
+
+To compile the examples simply run:
+\begin{verbatim}
+$ cd /my/path/to/olena/build/milena/doc/examples
+$ make
+\end{verbatim}
+
+These examples can produce outputs and images. May be you would like
+to run all the examples and take a look at the outputs? To do so, run:
+\begin{verbatim}
+$ cd /my/path/to/olena/build/milena/doc/examples
+$ make examples
+\end{verbatim}
+
+Text and image outputs will be respectively stored in
+\hpath{build/milena/doc/outputs} and \hpath{build/milena/doc/figures}.
+
+
+
+\doxysubsection{tuto2tools}{Tools}
+
+Few tools are provided with Milena. They can be considered as full program
+examples.
+
+Currently two tools are available: \\
+
+\begin{tabular}{l l}
+area\_flooding.cc & \tofix{description} \\
+\hline
+seed2tiling.cc & \tofix{description} \\
+\end{tabular}
+
+%
+\bigskip
+%
+
+To build these tools, run:
+\begin{verbatim}
+$ cd /my/path/to/olena/build/milena/tools
+$ make
+\end{verbatim}
+
+
+\doxysubsection{tuto2tests}{Tests}
+
+The test suite used for Milena's development is shipped with the library.
+It is usually useless for simple users and tends to be used by developers
+extending the library.
+
+In order to build and run it, just do the following:
+\begin{verbatim}
+$ cd /my/path/to/olena/build/milena/tests
+$ make check
+\end{verbatim}
+
+Running the test suite is memory and CPU consuming and will take a while.
+
+
+%**************************
+\doxysection{tuto2installcontent}{Installation content}
+
+Once installed, Milena's files are located in the installed path prefix
+you passed to the configure script or in the default path /usr/local.
+
+In the installation path prefix, Milena's files are located in:
+
+\begin{itemize}
+ \item include/mln/ --- The library. All the headers are located here.
+ \item share/olena/images --- Mesh sample files which may be used with
+ example programs.
+ \item share/olena/doc --- HTML and PDF documentation.
+\end{itemize}
+
+\vspace{2cm}
+\begin{center}
+ \tutotoc{tuto1}{tuto3}
+\end{center}
+
+
+%====================================
+\doxychapter{tuto3}{Getting started with Milena}
+
+%**************************
+\doxysection{tuto3getfamiliargen}{Getting familiar with genericity}
+
+One of Milena's main features is its genericity. In order to understand how to
+take benefit of it, let's see what genericity really means for us and how it is
+illustrated in the library.
+
+A \B{Generic algorithm} is written once, without duplicates, and works on
+different kinds of input.
+
+Let's have a look to a small example. In any image processing library, we may be
+interested in a small routine to fill an image with data. A common
+implementation would look like this one:
+
+\doxyrawcode{tuto3/fill_non_generic}
+
+See milena/doc/examples/tuto3/fill\_non\_generic.cc.
+
+
+In this example, there are a lot of \B{implicit} assumptions about the input:
+\begin{itemize}
+ \item The input image has to be 2D;
+ \item Its definition domain has to be a rectangle starting at (0,0);
+ \item Data cannot be of a different type than \type{unsigned char};
+ \item Image data need to be stored as a 2D array in RAM.
+\end{itemize}
+So, what would happen if we would like to use it for 3D images, use rgb8 as
+value or even work on a region of interest?
+
+This implementation would require to be re-implemented and the user would have to
+deal with the various versions of the fill routine. For the developer, it is error
+prone, redundant and hard to maintain. For the user, it is confusing and forces
+to always think about what he is manipulating.
+According to our definition, this algorithm is clearly \B{not} generic.
+
+This is not acceptable and that's why Milena is developed considering
+genericity and user/developer friendliness.
+
+With Milena, the previous example would be written as follow:
+
+\doxycode{fill}
+
+In this version, the routine can take any kind of image types as arguments. So
+it is for the values: the expected type depends on the value used in the
+given image.
+The \code{for\_all} loop is also significantly generic to support any kind of
+images since the iterator guarantees it will pass through every sites.
+
+This code is more generic and remains really close to the common description of
+the generic algorithm.
+
+As a result, with this algorithm we can fill an image,...
+\doxycode[3]{fill}
+\doxyfigure[2]{fill}{3cm}
+
+... Or fill only a region of interest (a set of points).
+\doxycode[2]{fill}
+\doxyfigure[1]{fill}{3cm}
+
+
+
+%**************************
+\doxysection{tuto3firstgenalgo}{First generic algorithm}
+In this section, we will introduce several routines/tools which are useful while
+writing generic algorithms. It is more important to focus on these
+routines/tools than what this program actually does.
+
+
+Here is the full example:
+
+\doxycode[1]{tuto3_first_routine}
+Let's see the different parts of the algorithm.
+
+
+\doxycode[2]{tuto3_first_routine}
+The prototype is restrictive enough, readable and still generic.
+We use concepts to statically check that the generic type passed as
+parameter is what the routine expects. The ``exact'' image type is \type{I}. For
+instance an image of type \type{image2d} inherits from \type{Image$<$image2d$>$}. So
+an \type{image2d} is an \type{Image$<$I$>$}.
+Note that the return type of this function is defined by a macro.
+\code{mln\_concrete} is a macro hiding tricky mechanisms (traits) used in Milena.
+The important point to remember is that a generic function should not return
+\type{I} directly but \code{mln\_concrete(I)} instead.
+
+
+\doxycode[3]{tuto3_first_routine}
+Like any Milena's routine, note that we use \code{trace}. This debugging tool
+will be detailed in section \ref{tuto3debughints}.
+
+
+\doxycode[4]{tuto3_first_routine}
+Since the function take some arguments as concept objects, these object cannot
+be used as such. Indeed, concepts are empty shells only used for dispatching and
+concept checking, that's the reason why they are parameterized with their exact
+type. The exact type let us know what is the real type of the object. To get an
+object with the exact type, simply call \code{exact()}.
+Of course, it is always a good idea to add few preconditions to help during
+debug.
+
+
+\doxycode[5]{tuto3_first_routine}
+In this portion of code, the image is labeled and the number of sites per label
+is computed. This code does not depend on the image type at all. Again, a macro
+\code{mln\_ch\_value} (``mln change value'') helps us. \code{labeling::blobs} is
+a routine returning an image of the same kind as the input image but with a
+different value. \code{mln\_ch\_value} enables the possibility of doing that,
+whatever the image type \type{I} and whatever its value type, it returns the
+same image type with a different value type.
+
+
+\doxycode[6]{tuto3_first_routine}
+The output image is declared here. Like any variable, it must be initialized at
+some point. To do so, \code{initialize()} is provided. It is a generic routine
+which can initialize the geometry of any image kind with another image of the
+same kind.
+After this call, \var{output} has a valid domain and is valid. It can be used in
+an algorithm, here \code{data::fill}, to have its values modified.
+Note that the value passed to \code{data::fill} is also generic. The library
+includes few generic common values from which any value type can convert to.
+\code{literal::one} is one of them. It is a generic one value which can convert
+to every value type in the library.
+
+
+\doxycode[7]{tuto3_first_routine}
+In this part, every region from the labeled image, of which cardinality is lower
+than 10 sites, is set to \val{literal::zero} in \var{output}.
+Once again, a generic value is used in order to avoid constraints on the image
+value type.
+
+
+\doxycode[8]{tuto3_first_routine}
+Don't forget to close the trace before exiting the function. Then return the
+result.
+
+
+
+%FIXME: add an example to show how a routine behavior depends on its arguments.
+% => cf. des images etendues ou non et un parcours de voisinage.
+
+
+%**************************
+\doxysection{tuto3compilhints}{Compilation}
+
+\doxysubsection{tuto3howtocompile}{Include path}
+
+If Milena has been installed in a custom directory, e.g. not /usr/include or
+/usr/local/include, the path to the library headers must be passed to the
+compiler.
+
+With g++ and MinGW, the option is \B{-I$<$path$>$}.
+\begin{verbatim}
+$ g++ -Ipath/to/mln my_program.cc
+\end{verbatim}
+
+For other compilers, please look at the documentation and search for ``include
+path''.
+
+
+\doxysubsection{tuto3liblink}{Library linking}
+As it is usually expected when using a library, no library linking is needed for
+the library itself.
+Milena is a ``header only'' library and is compiled ``on demand'' with your
+program.
+
+If you use specific input/output you may need to link your program with the
+right graphic library. For more information, please refer to section
+\doxyref{inputoutput} in the Quick Reference Guide.
+
+
+\doxysubsection{tuto3compildndebug}{Disable Debug}
+By default, Olena enables a lot of internal pre and post conditions. Usually,
+this is a useful feature and it should be enabled. It can heavily slow down a
+program though and these tests can be disabled by compiling using -DNDEBUG:
+
+\begin{verbatim}
+$ g++ -DNDEBUG -Ipath/to/mln my_program.cc
+\end{verbatim}
+
+\doxysubsection{tuto3compoptimflags}{Compiler optimization flags}
+
+In this section you will find remarks about the compiler optimization flags and
+their impact on the compilation and execution time.
+
+
+\doxysubsubsection{tuto3compoptimgcc}{GCC}
+
+\begin{itemize}
+ \item \B{-O0}, combined with -DNDEBUG, it leads to the fastest compilation
+ time. The execution is somewhat slow though since dispatch functions and one
+ line members are not inlined by the compiler.
+ \item \B{-O1}, best compromise between compilation time and execution time.
+ \item \B{-O2}, \B{-O3}, combined with -DNDEBUG, it leads to the best execution
+ time. However these optimizations dramatically slow down the compilation and
+ requires much more memory at compile time.
+\end{itemize}
+
+\doxysubsubsection{tuto3compoptimother}{Other compilers}
+
+Currently, we have not tested different optimization flags with other
+compilers. If you did, please report us your results.
+
+
+
+%**************************
+\doxysection{tuto3debughints}{Debug hints}
+
+\doxysubsection{tuto3gdbhints}{Using assertions and GDB}
+As said above, Milena already includes a lot of post and pre conditions.
+Thus, if you made a mistake in your code there is a high probability that it
+will be detected at run time. If an assertion fails, we advice you to compile
+with the following options:
+
+\begin{verbatim}
+$ g++ -ggdb -Ipath/to/mln my_program.cc
+\end{verbatim}
+
+Note that you \B{MUST NOT} compile with \var{-DNDEBUG} since assertions will be
+disabled.
+Once compiled, restart the program with GDB.
+
+\begin{verbatim}
+$ gdb ./my_program
+\end{verbatim}
+
+In the GDB console, run it again.
+\begin{verbatim}
+(gdb) run <any parameter you may want to pass to the program>
+\end{verbatim}
+
+When an assertion fails, in the GDB console simply type:
+\begin{verbatim}
+(gdb) bt
+\end{verbatim}
+
+The full backtrace will be printed out and you will be able to find from where
+the error come from. The filenames, the line numbers and the parameters values
+are printed out in the backtrace as you can see in the following example:
+
+\begin{verbatim}
+#0 0xffffe410 in __kernel_vsyscall ()
+#1 0xb7d00640 in raise () from /lib/i686/cmov/libc.so.6
+#2 0xb7d02018 in abort () from /lib/i686/cmov/libc.so.6
+#3 0xb7cf95be in __assert_fail () from /lib/i686/cmov/libc.so.6
+#4 0x0804e094 in mln::image2d<bool>::has (this=0xbff32f34, p=@0xbff32f3c)
+ at /lrde/stockholm/lazzara/svn/olena/git/oln/milena/mln/core/image/image2d.hh:442
+#5 0x0804e6d7 in mln::image2d<bool>::operator() (this=0xbff32f34, p=@0xbff32f3c)
+ at /lrde/stockholm/lazzara/svn/olena/git/oln/milena/mln/core/image/image2d.hh:460
+#6 0x080490b0 in main () at test.cc:18
+\end{verbatim}
+
+
+
+\doxysubsection{tuto3traces}{Traces}
+Sometimes, compiling for GDB without optimization flags and with debug
+assertions enabled could lead to execution time dramatically high.
+If the function parameter values are not necessary for debugging,
+a good alternative is the trace system provided in Milena.
+Each time a routine is called, a trace log is written.
+
+This trace allows to follow the stack trace at runtime. It also provides the
+time passed in each function call if the call last at least 10ms.
+
+In order to enable traces in a program, set the related global variable to
+true:
+\begin{verbatim}
+...
+trace::quiet = true;
+...
+\end{verbatim}
+
+Since it's a global variable, at anytime in the source code, the trace can be
+enabled/disabled.
+
+Traces are enabled:
+\doxycode[1]{tuto3_trace}
+\code{labeleling::blobs} is run and the debug is then disabled.
+\doxycode[2]{tuto3_trace}
+
+The previous code will produce the following trace:
+
+\begin{verbatim}
+labeling::blobs {
+ core::initialize {}
+ data::fill {
+ data::fill_with_value {
+ data::impl::fill_with_value_one_block {
+ data::memset_ {
+ data::impl::memset_ {}
+ } data::memset_
+ } data::impl::fill_with_value_one_block
+ } data::fill_with_value
+ } data::fill
+} labeling::blobs - 0.08s
+\end{verbatim}
+
+As you can see, \code{labeling::blobs} is located just after having set
+\var{trace::quiet} to \val{true} so its trace is part of the output.
+\code{geom::bbox}'s trace is not part of the output though since traces have
+been disabled just before it is called.
+
+
+\doxysubsection{tuto3debugroutines}{Debug routines}
+Milena also provides a lot of debug tools. Here is a small list of the tools:
+\begin{itemize}
+ \item mln::debug::println, print an image in the console.
+ \doxycode[1]{tuto3_println}
+ \doxymoutput[1]{tuto3_println}
+
+ \item mln::debug::println\_with\_border, print an image in the console withs
+ its border.
+ \doxycode[2]{tuto3_println}
+ \doxymoutput[2]{tuto3_println}
+
+ \item mln::labeling::colorize, colorize a label image with random colors.
+ \doxycode[1]{tuto3_colorize}
+
+ \begin{center}
+ \begin{tabular}{c c c}
+ \doxyfigure[1]{tuto3_colorize}{3cm} & ~\huge{$\rightarrow$}~ &
+ \doxyfigure[2]{tuto3_colorize}{3cm} \\
+ \end{tabular}
+ \end{center}
+
+
+ \item mln::labeling::superpose, Superpose two images.
+
+ \item mln::labeling::filename, easily format debug file names.
+
+\end{itemize}
+
+
+%A very simple processing chain; the target is the end-user!
+%
+%OR (?)
+%this chain plus a sample tiny generic algorithm
+%
+%** misc
+%/!\ step by step...
+%compilation time w.r.t compilation options (O1, DNDEBUG).
+
+\vspace{2cm}
+\begin{center}
+ \tutotoc{tuto2}{tuto4}
+\end{center}
+
+
+%====================================
+\doxychapter{tuto4}{Data representation}
+
+This chapter aims at explaining how images are stored and which objects compose
+an image in Milena. We will start to talk about the localization of a pixel and
+then the image itself which stores the values.
+
+
+%**************************
+\doxysection{tuto4sites}{Sites}
+
+A pixel is an element having both information, localization and
+value. In Milena, we make a difference between a pixel, a pixel value and a pixel
+location. Thus, in order to refer to a pixel location, we have the site concept.
+A site can be any kind of localization element.
+For instance, in an image defined on a 2D regular grid, it is a 2D point with
+\var{row} and \var{col} coordinates.
+
+\doxycode{tuto4_point2d}
+
+Output:
+\doxyoutput{tuto4_point2d}
+
+The image site type is defined by its underlying site set.
+
+
+%**************************
+\doxysection{tuto4sitesets}{Site sets}
+
+Site sets are mainly used to define image domains. They hold all the available
+sites in an image, consequently they do not store any values.
+
+Site sets can used as standalone containers.
+
+A list of available site sets is available in section \ref{siteset}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% MOVE PARTS OF THE NEXT CHAPTERS RIGHT HERE. %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%--------------------------
+\doxysubsection{tuto4createsiteset}{Creating a site set}
+
+In this section, we will detail how to create common site sets.
+
+The most used site set is \type{mln::box}. The main reason is that
+common images have this kind of domain. Since it is a plain set only
+two sites are needed to define a box: the top left corner, \var{pmin},
+and the bottom right corner, \var{pmax}.
+
+By default, \var{pmin} is set to \val{(0,0)} so a box can be
+constructed from given \var{pmax} coordinates:
+
+\doxycode[1]{tuto4_site_set_create}
+
+This box is defined from \val{(0,0)} to \val{(4,4)} :
+
+\doxymoutput[1]{tuto4_site_set_create}
+
+A box can also starts from a site different from \val{(0,0)}.
+
+\doxycode[4]{tuto4_site_set_create}
+
+This box is defined from \val{(0,0)} to \val{(4,4)} :
+
+\doxymoutput[3]{tuto4_site_set_create}
+
+
+Another common site set is \type{p\_array}. It contains only sites which have been added to it.
+
+\doxycode[2]{tuto4_site_set_create}
+
+This site only contains :
+
+\doxymoutput[2]{tuto4_site_set_create}
+
+
+%--------------------------
+\doxysubsection{tuto4accesstosites}{Getting access to sites}
+
+
+
+%**************************
+\doxysection{tuto4images}{Images}
+
+In milena, an image is seen as a composition of both a site set and a function
+mapping a site to a value.
+
+%--------------------------
+\doxysubsection{tuto4createimate}{Creating an image}
+
+In this section, we will detail how to create common images.
+
+%--------------------------
+\doxysubsection{tuto4readimage}{Reading an image from a file}
+
+%--------------------------
+\doxysubsection{tuto4accessdata}{Accessing data}
+
+
+
+\vspace{2cm}
+\begin{center}
+ \tutotoc{tuto3}{tuto5}
+\end{center}
+
+
+
+%====================================
+\doxychapter{tuto5}{Load and save images}
+
+After this step you should know how to:
+\begin{itemize}
+\item load an image,
+\item save an image.
+\end{itemize}
+
+\vspace{2cm}
+Currently, Olena supports the following input image formats:
+\begin{itemize}
+ \item PBM
+ \item PFM
+ \item PGM
+ \item PNM
+ \item PPM
+\end{itemize}
+
+This support is provided through two headers for each type, \header{save.hh} and
+\header{load.hh}.
+They are located in \hpath{mln/io/$<$image-format$>$/}.
+
+Once the right header is included, the image can be loaded:
+
+\doxycode{ima-load}
+
+If you wan to save an image, simply call the save routine in the proper namespace:
+\doxycode{ima-save}
+
+According to the image value type, the proper file format must be chosen.
+The supported file formats and their associated image value types are listed
+in section \doxyref{imaio}.
+
+\vspace{2cm}
+\tutotoc{tuto4}{tuto6}
+
+
+
+%====================================
+\doxychapter{tuto6}{Create your first image}
+
+After this step you should know how to:
+ \begin{itemize}
+ \item create an image,
+ \item display an image in console mode.
+ \end{itemize}
+
+\doxysee{tuto2_first_image.cc}
+
+
+\vspace{2cm}
+First, declare an array of bool which will represent the image grid. Each each
+cell in this grid is a site and each cell contains a value, \val{true} or
+\val{false}.
+\doxycode[1]{tuto2_first_image}
+
+From that grid, simply call make::image to get an image initialized with that
+data.
+\doxycode[2]{tuto2_first_image}
+This way of initializing an image is the most common one. However, there are
+several other ways described in section \doxyref{imacreate}.
+
+
+To be sure that the data is correctly initialized, it is possible to display the
+image in the standard output using debug::println.
+\doxycode[3]{tuto2_first_image}
+Output:
+\doxyoutput{tuto2_first_image}
+
+Finally, you may want to save the image. Since we use bool as image value, the
+PBM format is the best choice. Therefore, we use io::pbm::save.
+\doxycode[4]{tuto2_first_image}
+
+The output image looks like the following: \\
+
+\doxyfigure{tuto2_first_image}{3cm}
+
+In this first step we used a boolean image. Many other value types are available
+though. A more detailed description can be found in section
+\doxyref{imapossvalues}.
+
+\vspace{2cm}
+\begin{center}
+ \tutotoc{tuto5}{tuto7}
+\end{center}
+
+
+%====================================
+\doxychapter{tuto7}{Read and write images}
+
+After this step you should know how to:
+ \begin{itemize}
+ \item modify/initialize image values,
+ \item copy and paste data to an image.
+ \end{itemize}
+
+
+\doxysee{tuto3_rw_image.cc}
+
+\vspace{2cm}
+First create an empty color image with a \var{box2d} of 40x40 as domain.
+\doxycode[1]{tuto3_rw_image}
+
+If you want to initialize the image with the color red, simply call data::fill as follows:
+\doxycode[2]{tuto3_rw_image}
+
+Updating a site value is also possible using \code{operator()} or the
+\code{opt::at()} routine. Here we create a blue square of 10x10 pixels from site
+(20, 20) to (30, 30).
+\doxycode[3]{tuto3_rw_image}
+\doxycode[4]{tuto3_rw_image}
+
+The corresponding image: \\
+
+\doxyfigure[1]{tuto3_rw_image}{3cm}
+
+An image can also be initialized/modified thanks to another image.
+Let's load a new image.
+\doxycode[5]{tuto3_rw_image}
+\var{lena} looks like: \\
+
+\doxyimg{small-enlarged}{3cm}
+
+If we want to initialize \var{ima} with \var{lena}, we can use \code{data::fill}:
+\doxycode[6]{tuto3_rw_image}
+Output: \\
+
+\doxyfigure[2]{tuto3_rw_image}{3cm} \\
+Note that to fill an image with some data, the image domain \must be smaller
+or equal to the data.
+
+Likewise, it is possible to paste data from an image to another:
+\doxycode[7]{tuto3_rw_image}
+Output: \\
+
+\doxyfigure[3]{tuto3_rw_image}{3cm}
+
+More details can be found in sections \doxyref{imaaccessmodval}, \doxyref{fillop} and \doxyref{pasteop} in
+the reference guide.
+
+\vspace{2cm}
+\begin{center}
+ \tutotoc{tuto6}{tuto8}
+\end{center}
+
+
+%====================================
+\doxychapter{tuto8}{Regions of interest}
+
+After this step you should know how to:
+ \begin{itemize}
+ \item take benefit of Olena's genericity,
+ \item work only on a region of interest in an image.
+ \end{itemize}
+
+\doxysee{tuto4_genericity_and_algorithms.cc}
+\vspace{2cm}
+
+In the previous step, we used the routine \code{data::fill} in order to change
+the values of an image. It was convenient since we did not need to write any
+loop by hand. The problem was that we could not specify which region to fill
+with data. This point leads us to talk about the genericity in Olena.
+All along this example we will use the routine \code{data::fill} to illustrate
+the possibilities in Olena but note that every image types passed to the
+routine in this example could be passed to any algorithm in the library
+expecting an image.
+
+One main feature of Olena is to be able to easily work on regions of interest in
+images. According to the way a region of interest is defined, a specific image
+type is associated. Therefore, each algorithm knows exactly what it is working
+on and can behave differently in order to be the most efficient as possible.
+
+
+All along this step, we will use the following image \var{lena} declared as
+follow:
+
+\doxycode[1]{tuto4_genericity_and_algorithms}
+\doxyimg{small-enlarged}{3cm}
+
+\code{data::fill} has the following prototype:
+\doxyrawcode{fill-proto}
+So keep in mind that the first argument we will try to construct in each
+example is an image. Note that this image \must be writable, e.g. non-const.
+
+
+%**************************
+\doxysection{tuto4imadomainsiteset}{Image domain restricted by a site set}
+
+Here, we would like to fill a small square with green in \var{lena}. We want
+this square to be of size 20x20 and to be located at (20,20).
+First, we just need to declare this square which is actually a site set, a
+\type{box2d}.
+\doxycode[2]{tuto4_genericity_and_algorithms}
+
+Then, we just need to tell \code{data::fill} that we would like to fill the
+image \var{lena} but only in this restricted part of the image domain.
+\doxycode[3]{tuto4_genericity_and_algorithms}
+Operator '$|$' can be read 'restricted to'. So below, we wrote 'image \var{lena}
+restricted to the region of interest \var{roi}'. Actually this is not directly
+\var{lena} which is restricted but its domain.
+
+Note the use of \code{rw()} which is mandatory due to C++ limitations. In C++,
+the image created by \code{lena $|$ roi} is \code{const}, e.g. read-only, though
+\code{data::fill} expect a \code{non-const} image, e.g. read-write. \code{rw()}
+is a workaround to make it read-write.
+
+\begin{center}
+ \begin{tabular}{c c c}
+ \doxyimg{small-enlarged}{3cm} & ~\huge{$\rightarrow$}~ & \doxyfigure[1]{tuto4_genericity_and_algorithms}{3cm} \\
+ \multicolumn{3}{c}{Fill with blue a region of interest defined by a
+ \type{box2d}.} \\
+ \end{tabular}
+\end{center}
+
+
+%**************************
+\doxysection{tuto4imadomainfun}{Image domain restricted by a function}
+
+Sometimes it may not be easy to construct a site set to restrict an image. For
+instance, if we would like to fill with green one point out of two in the whole
+image, we \textbf{do not want} to write anyloop or construct any site set by hand:
+\doxycode[4]{tuto4_genericity_and_algorithms}
+\doxycode[5]{tuto4_genericity_and_algorithms}
+
+A shorter way to get exactly the same result, is to define that behavior by a
+function. In Milena, a function \code{fun::p2b::chess} is available and does
+exactly what we want. Like if it was a site set, simply restrict the image with
+the function.
+
+%
+%Paste code of p2b::chess?
+%
+
+\doxycode[6]{tuto4_genericity_and_algorithms}
+\begin{center}
+ \begin{tabular}{c c c}
+ \doxyimg{small-enlarged}{3cm} & ~\huge{$\rightarrow$}~ & \doxyfigure[2]{tuto4_genericity_and_algorithms}{3cm} \\
+ \multicolumn{3}{c}{Fill with green a region of interest defined by a
+ \type{Function}.} \\
+ \end{tabular}
+\end{center}
+
+Note that the functions provided by default in Olena are actually functors.
+Thus, they must be constructed like any object which why it is written
+\code{lena $|$ fun::p2v::chess()} and not \code{lena $|$ fun::p2v::chess}.
+
+
+%FIXME: Talk about C functions once it is possible in Milena.
+
+
+%**************************
+\doxysection{tuto4imadomainmask}{Image domain restricted by a mask}
+
+Sometimes instead of having a site site or a function defining the regions of
+interest we want to work on, we may have a binary image, e.g. a mask. When a
+site has its value set to true, it means it will be considered as part of the
+masked image domain. Otherwise, it will not.
+
+We construct a mask, \var{mask}. It is initialized with the same geometry properties as
+\var{lena}
+(domain, extension...).
+\doxycode[7]{tuto4_genericity_and_algorithms}
+
+Then, we cannot restrict directly \var{lena} with \var{mask}. These two images
+have the same domain, so \code{lena $|$ mask.domain()} would not do anything.
+\var{mask} is a classical image, there is not specific type for mask images.
+Therefore, we need to express that we want that binary image to be considered as
+a mask.
+\doxycode[8]{tuto4_genericity_and_algorithms}
+\code{pw::value(mask)} makes explicit the fact that \var{mask} is actually a
+mask. It means, that for each site of \var{mask}, if its value is set to
+\val{true}, then the value associated to this site in \var{lena} must be set
+to green.
+In this example, we use two images for two different use case: \var{lena} store
+the result and the modifications make by the algorithm and \var{mask} allows the
+algorithm to know whether it must treat a site or not.
+
+\begin{center}
+ \begin{tabular}{c c c c}
+ \doxyimg{small-enlarged}{3cm} &
+ \doxyfigure[3]{tuto4_genericity_and_algorithms}{3cm} &
+ ~\huge{$\rightarrow$}~ &
+ \doxyfigure[4]{tuto4_genericity_and_algorithms}{3cm} \\
+ \multicolumn{4}{c}{Fill with green a region of interest defined by a mask
+ image.} \\
+ \end{tabular}
+\end{center}
+
+
+%**************************
+\doxysection{tuto4imadomainpredicate}{Image domain restricted by a predicate}
+
+Restricting by a predicate is exactly like restricting with a function. We want
+to talk about that separately in order to present the small routines available.
+They enable the user to write quick and efficient predicate/function.
+
+The two routines are :
+\begin{itemize}
+ \item pw::value(Image), as seen in a previous section, it is a way to express
+ 'for each site value in Image'.
+ \item pw::cst(Value), it is a way to specify a value to which a site value can
+ be compared.
+\end{itemize}
+
+Let's see a common use case.
+First, we binarize lena according to specific criterions, only site values with
+specific colors are set to true in \var{lena\_bw}. Others are set to false. This
+image will be used in order to label the components.
+Let's consider a labeled image \var{label}. Each component of \var{lena} is labeled with a unique index.
+Now, we consider that that our region of interest is a component with id 16.
+Then we want to express 'for each site \var{fill} its value in \var{lena} if its
+value in \var{label} is equal to 16'.
+\doxycode[9]{tuto4_genericity_and_algorithms}
+
+
+\doxycode[10]{tuto4_genericity_and_algorithms}
+
+\begin{center}
+ \begin{tabular}{c c c c}
+ \doxyimg{small-enlarged}{3cm} &
+ \doxyfigure[5]{tuto4_genericity_and_algorithms}{3cm} &
+ ~\huge{$\rightarrow$}~ &
+ \doxyfigure[6]{tuto4_genericity_and_algorithms}{3cm} \\
+ \multicolumn{4}{c}{Fill with green a region of interest defined by its
+ label.} \\
+ \end{tabular}
+\end{center}
+
+
+%Disabled until thru_image/fun_image provide working read/write access.
+%
+%%**************************
+%\doxysection{tuto4component}{Image component restricted to a domain}
+%
+%%FIXME: be more verbose?
+%
+%It is also possible to restrict an image to one of its component and apply
+%various operators upon it. In the following code, the green component of
+%this color image is extracted and filled with the maximum value allowed.
+%Other components such as red and blue are left unchanged.
+%
+%\doxycode[11]{tuto4_genericity_and_algorithms}
+%
+%\begin{center}
+% \begin{tabular}{c c c c}
+% \doxyimg{small-enlarged}{3cm} &
+%% \doxyfigure[7]{tuto4_genericity_and_algorithms}{3cm} &
+% ~\huge{$\rightarrow$}~ &
+% \doxyfigure[8]{tuto4_genericity_and_algorithms}{3cm} \\
+% \multicolumn{4}{c}{Set the image green component to its maximum value.} \\
+% \end{tabular}
+%\end{center}
+%
+%
+%Thanks to Milena's genericity, it is also possible to combine this operator
+%with others. Here the green component is extracted from a region of interest
+%and only that part is modified.
+%
+%\doxycode[12]{tuto4_genericity_and_algorithms}
+%
+%\begin{center}
+% \begin{tabular}{c c c c}
+% \doxyimg{small-enlarged}{3cm} &
+% ~\huge{$\rightarrow$}~ &
+% \doxyfigure[9]{tuto4_genericity_and_algorithms}{3cm} \\
+% \multicolumn{4}{c}{Set the green component of a region of interest
+% to its maximum value.} \\
+% \end{tabular}
+%\end{center}
+
+
+
+\vspace{2cm}
+\begin{center}
+ \tutotocprev{tuto7}
+\end{center}
+
+
+%\end{htmlonly}
+
+
+\end{document}
diff --cc scribo/ChangeLog
index 9506589,9ce6390..5f23386
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@@ -1,119 -1,684 +1,800 @@@
+ 2010-03-18 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Cleanup binarization tools.
+
+ * binarization/binarize.hh,
+ * binarization/simple.hh,
+ * binarization/sauvola_threshold.hh,
+ * src/binarization/simple.cc,
+ * src/binarization/sauvola_pgm.cc,
+ * src/binarization/sauvola_ms.cc,
+ * src/binarization/sauvola.cc: Rename as...
+
+
+ * binarization/local_threshold.hh,
+ * binarization/global_threshold_auto.hh,
+ * binarization/sauvola_threshold_image.hh,
+ * src/binarization/pgm_global_threshold_auto.cc,
+ * src/binarization/pgm_sauvola.cc,
+ * src/binarization/pgm_sauvola_ms.cc,
+ * src/binarization/ppm_sauvola.cc: ... this.
+
+ * binarization/global_threshold.hh,
+ * binarization/sauvola_ms_split.hh,
+ * src/binarization/ppm_fg_sauvola_ms.cc,
+ * src/binarization/ppm_sauvola_ms.cc,
+ * src/binarization/ppm_sauvola_ms_split.cc: New.
+
+ * binarization/internal/first_pass_functor.hh: Fix an include.
+
+ * binarization/sauvola.hh: Update code according to last renaming.
+
+ * binarization/sauvola_ms.hh: Invert threshold test and add
+ documentation.
+
+ * src/binarization/Makefile.am: Add new targets.
+
+ * tests/Makefile.am,
+ * tests/binarization/Makefile.am,
+ * tests/binarization/global_threshold.cc,
+ * tests/binarization/local_threshold.cc: New tests.
+
+ 2010-03-17 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Update AFP's toolchain according to last changes in core classes.
+
+ * core/object_groups.hh: Add duplicate().
+
+ * primitive/group/apply.hh: Preserve components ids.
+
+ * draw/groups_bboxes.hh,
+ * filter/object_groups_with_holes.hh,
+ * primitive/regroup/from_single_left_link.hh: New.
+
+ * src/text_in_photo_ppm_fast.cc: Make it work with the new core
+ classes. Fix component ids issues when relabeling.
+
+ 2010-03-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a new example for finding text in pictures.
+
+ * src/Makefile.am: Add new target.
+
+ * src/text_in_photo_pbm_fast.cc: New.
+
+ 2010-03-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ First draft of the dematerialization wizard.
+
+ * demo/shared/icons/Symbols-Delete-icon.png,
+ * demo/shared/icons/accept-icon.png,
+ * demo/shared/icons/close.gif,
+ * demo/shared/icons/crop-icon.png,
+ * demo/shared/icons/image-add-icon.png,
+ * demo/shared/icons/image-edit-icon.png,
+ * demo/shared/icons/image-multi-icon.png,
+ * demo/shared/icons/image-next-icon.png,
+ * demo/shared/icons/image-remove-icon.png,
+ * demo/shared/icons/next-icon.png,
+ * demo/shared/icons/page-down-icon.png,
+ * demo/shared/icons/page-search-icon.png,
+ * demo/shared/icons/rotate_ccw.png,
+ * demo/shared/icons/rotate_cw.png,
+ * demo/shared/icons/search-add-icon.png,
+ * demo/shared/icons/search-remove-icon.png,
+ * demo/shared/shared.qrc,
+ * demo/shared/src/bak/crop_item.cc,
+ * demo/shared/src/bak/crop_item.hh,
+ * demo/shared/src/bak/image_viewer.cc,
+ * demo/shared/src/bak/image_viewer.hh,
+ * demo/shared/src/bak/types.hh,
+ * demo/shared/src/browse_widget.cc,
+ * demo/shared/src/browse_widget.hh,
+ * demo/shared/src/crop_item.cc,
+ * demo/shared/src/crop_item.hh,
+ * demo/shared/src/image_viewer.cc,
+ * demo/shared/src/image_viewer.hh,
+ * demo/shared/src/internal.bak/interactive_scene.cc,
+ * demo/shared/src/internal.bak/interactive_scene.hh,
+ * demo/shared/src/internal.bak/selection_rectangle.cc,
+ * demo/shared/src/internal.bak/selection_rectangle.hh,
+ * demo/shared/src/internal/interactive_scene.cc,
+ * demo/shared/src/internal/interactive_scene.hh,
+ * demo/shared/src/internal/selection_rectangle.cc,
+ * demo/shared/src/internal/selection_rectangle.hh,
+ * demo/shared/src/to_mln_image.hh,
+ * demo/shared/src/types.hh,
+ * demo/shared/ui/browse_widget.ui,
+ * demo/shared/ui/crop_widget.ui,
+ * demo/shared/ui/image_viewer.ui,
+ * demo/shared/ui/interactive_scene.cc,
+ * demo/shared/ui/interactive_scene.hh,
+ * demo/shared/ui/rotate_widget.ui,
+ * demo/wizard/images/dematerialization.png,
+ * demo/wizard/src/crop_page.cc,
+ * demo/wizard/src/crop_page.hh,
+ * demo/wizard/src/crop_widget.cc,
+ * demo/wizard/src/crop_widget.hh,
+ * demo/wizard/src/doc_type.hh,
+ * demo/wizard/src/doc_type_page.cc,
+ * demo/wizard/src/doc_type_page.hh,
+ * demo/wizard/src/doc_type_widget.cc,
+ * demo/wizard/src/doc_type_widget.hh,
+ * demo/wizard/src/load_page.cc,
+ * demo/wizard/src/load_page.hh,
+ * demo/wizard/src/load_widget.cc,
+ * demo/wizard/src/load_widget.hh,
+ * demo/wizard/src/main.cc,
+ * demo/wizard/src/main_window.cc,
+ * demo/wizard/src/main_window.hh,
+ * demo/wizard/src/mln_widgets.cc,
+ * demo/wizard/src/preprocessing_page.cc,
+ * demo/wizard/src/preprocessing_page.hh,
+ * demo/wizard/src/preprocessing_task.hh,
+ * demo/wizard/src/preprocessing_widget.cc,
+ * demo/wizard/src/preprocessing_widget.hh,
+ * demo/wizard/src/process_page.cc,
+ * demo/wizard/src/process_page.hh,
+ * demo/wizard/src/process_widget.cc,
+ * demo/wizard/src/process_widget.hh,
+ * demo/wizard/src/rotate_page.cc,
+ * demo/wizard/src/rotate_page.hh,
+ * demo/wizard/src/rotate_widget.cc,
+ * demo/wizard/src/rotate_widget.hh,
+ * demo/wizard/src/runner.cc,
+ * demo/wizard/src/runner.hh,
+ * demo/wizard/src/test.cc,
+ * demo/wizard/ui/doc_type_widget.ui,
+ * demo/wizard/ui/load_widget.ui,
+ * demo/wizard/ui/main_window.ui,
+ * demo/wizard/ui/preprocessing_widget.ui,
+ * demo/wizard/wizard.pro,
+ * demo/wizard/wizard.qrc: New.
+
+ 2010-03-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Update examples.
+
+ * src/text_in_photo_ppm_fast.cc,
+ * src/debug/show_links_bottom_aligned.cc,
+ * src/debug/show_links_top_aligned.cc: Update calls to routines.
+
+ * src/preprocessing/trash.cc,
+ * src/text_in_photo_ppm_fast_2.cc,
+ * src/preprocessing/split_bg_fg_ms.cc,
+ * src/preprocessing/denoising.cc: Removed.
+
+ * src/preprocessing/denoise.cc,
+ * src/preprocessing/homogeneous_contrast.ccm,
+ * src/preprocessing/subsample.cc: New.
+
+ * src/preprocessing/Makefile.am: Add new files as target.
+
+ * src/preprocessing/split_bg_fg.cc: Fix usage.
+
+ * src/text_in_article.cc: Update processing chain.
+
+ 2010-03-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve text line merging algorithm.
+
+ * text/merging.hh: Change merge rules and improve integration with
+ Scribo line structures.
+
+ 2010-03-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a reconstruction algorithm.
+
+ * primitive/internal/rd.hh: New.
+
+ 2010-03-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes.
+
+ * binarization/sauvola_ms.hh: Add a missing include.
+
+ * binarization/sauvola_threshold.hh: Remove debug and useless
+ comments.
+
+ * preprocessing/unskew.hh: Fix invalid guards.
+
+ * primitive/extract/components.hh: Fill image extension.
+
+ * primitive/extract/lines_pattern.hh: Adjust and fill image
+ extension.
+
+ * primitive/extract/lines_v_thick.hh: Fix traces.
+
+ 2010-03-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add new preprocessing routines.
+
+ * preprocessing/denoise.hh,
+ * preprocessing/denoise_bg.hh,
+ * preprocessing/denoise_fg.hh,
+ * preprocessing/homogeneous_contrast.hh,
+ * preprocessing/rotate_90.hh: New routines.
+
+ * fun/v2b/label_to_bool.hh: New function.
+
+ * tests/preprocessing/Makefile.am,
+ * tests/preprocessing/rotate_90.cc: New test.
+
+ 2010-03-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Update code according to last changes in Scribo core classes.
+
+ * draw/bounding_box_links.hh,
+ * primitive/internal/init_link_array.hh,
+ * primitive/internal/is_link_valid.hh,
+ * primitive/link/internal/link_single_dmax_base.hh,
+ * src/afp/link.hh: Update the use of object_link class.
+
+ * draw/bounding_boxes.hh,
+ * filter/objects_with_holes.hh,
+ * src/afp/regroup.hh: Update for_all macro.
+
+ * estim/object_groups_v_thickness.hh,
+ * filter/object_groups_small.hh,
+ * filter/object_groups_v_thickness.hh,
+ * text/recognition.hh: Update access to component_set.
+
+ * filter/object_links_bbox_h_ratio.hh,
+ * filter/object_links_bbox_overlap.hh,
+ * filter/object_links_bbox_ratio.hh,
+ * filter/object_links_bottom_aligned.hh,
+ * filter/object_links_non_aligned_simple.hh,
+ * filter/object_links_top_aligned.hh,
+ * primitive/group/apply.hh,
+ * primitive/group/from_single_link.hh,
+ * primitive/link/merge_double_link.hh,
+ * primitive/link/with_single_right_link_bottom.hh,
+ * primitive/link/with_single_right_link_dmax_ratio.hh,
+ * primitive/link/with_single_right_link_top.hh: Improve routine
+ prototypes.
+
+ * primitive/link/internal/link_functor_base.hh: Make use of
+ separators if exist.
+
+ 2010-03-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve debug routines in Scribo.
+
+ * debug/bboxes_enlarged_image.hh,
+ * debug/looks_like_a_text_line_image.hh,
+ * debug/mean_and_base_lines_image.hh: New routines.
+
+ * debug/alignment_decision_image.hh,
+ * debug/decision_image.hh,
+ * debug/save_bboxes_image.hh: Update code according to last
+ changes in core classes.
+
+ * debug/usage.hh: Make the description optional.
+
+ 2010-03-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve core classes in Scribo.
+
+ * core/component_info.hh,
+ * core/component_set.hh: Add new methods and an output operator.
+
+ * core/line_info.hh: Add new methods and improve stats computation.
+
+ * core/line_set.hh: Add new methods.
+
+ * core/macros.hh: Add more specific macros.
+
+ * core/tag/component.hh,
+ * core/tag/line.hh: Add output operators.
+
+ 2010-03-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Share internal data in groups and links structures.
+
+ * core/object_groups.hh,
+ * core/object_links.hh: Share internal data using a tracked
+ pointer.
+
+ 2010-03-02 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * text/merging.hh (scribo): Update code with lastest Theo's
+ changes.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a small tool to recognize text in a binary image.
+
+ * src/text/Makefile.am: New target.
+
+ * src/text/pbm_recognition.cc: New.
+
+ * text/recognition.hh: Add an overload taking an image as
+ argument.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a subsampling algorithm.
+
+ * subsampling/integral.hh: New. Compute a subsample image and an
+ integral image at the same time.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a first draft of a text line merging algorithm.
+
+ * text/merging.hh: New.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add and update examples.
+
+ * src/Makefile.am,
+ * src/binarization/Makefile.am,
+ * src/preprocessing/Makefile.am: Add new targets.
+
+ * src/preprocessing/denoising.cc: New.
+
+ * src/preprocessing/split_bg_fg.cc: Fix usage.
+
+ * src/text_in_article.cc,
+ * src/text_in_photo_ppm_fast.cc: Update code according last
+ changes in core classes.
+
+ * src/text_in_photo_ppm_fast_2.cc: New example.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes.
+
+ * binarization/sauvola_ms.hh: Remove a useless include.
+
+ * debug/usage.hh: Move description output.
+
+ * io/xml/save_text_lines.hh: Fix invalid xml output.
+
+ * primitive/link/internal/link_ms_dmax_ratio_base.hh,
+ * primitive/link/internal/link_single_dmax_ratio_base.hh: update
+ distance criterion.
+
+ * scribo.mk: Change compilation flags.
+
+ * src/afp/components.hh: Merge data in only one array.
+
+ * tests/filter/Makefile.am,
+ * tests/filter/objects_with_holes.cc: New test.
+
+ * text/clean.hh: use upsampling::hq4x instead of upsampling::hq2x.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Keep updating code according to last changed in core classes.
+
+ * debug/decision_image.hh,
+ * debug/save_linked_bboxes_image.hh,
+ * draw/bounding_boxes.hh,
+ * estim/object_groups_v_thickness.hh,
+ * filter/common/objects_photo.hh,
+ * filter/internal/compute.hh,
+ * filter/object_groups_size_ratio.hh,
+ * filter/object_groups_small.hh,
+ * filter/object_groups_v_thickness.hh,
+ * filter/object_links_bbox_overlap.hh,
+ * filter/object_links_bottom_aligned.hh,
+ * filter/object_links_non_aligned_simple.hh,
+ * filter/objects_thick.hh,
+ * filter/objects_thin.hh,
+ * filter/objects_with_holes.hh,
+ * primitive/group/apply.hh,
+ * primitive/group/from_double_link.hh,
+ * primitive/group/from_single_link.hh,
+ * primitive/link/internal/link_single_dmax_base.hh,
+ * primitive/link/with_single_left_link.hh,
+ * primitive/link/with_single_right_link.hh,
+ * src/afp/link.hh,
+ * src/afp/regroup.hh,
+ * text/recognition.hh: Update the use of core classes. Replace the
+ use of object_image with component_set.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve core classes.
+
+ * core/component_info.hh,
+ * core/component_set.hh,
+ * core/line_info.hh,
+ * core/line_set.hh,
+ * core/object_groups.hh: Add more methods and constructors.
+
+ * core/macros.hh: Add a new macro.
+
+ * core/tag/line.hh: Add more enums.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * io/xml/save_text_lines.hh: New. Add partial support for
+ PageContent XML format.
+
+ 2010-03-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Introduce new Scribo core classes and start using them.
+
+ * core/component_info.hh,
+ * core/component_set.hh,
+ * core/line_info.hh,
+ * core/line_set.hh,
+ * core/macros.hh,
+ * core/object_groups.hh,
+ * core/object_links.hh,
+ * core/tag/anchor.hh,
+ * core/tag/component.hh,
+ * core/tag/line.hh: New core classes.
+
+ * core/object_image.hh: Remove.
+
+ * core/anchors.hh
+ * primitive/extract/objects.hh: Rename as...
+
+ * primitive/link/internal/compute_anchor.hh,
+ * primitive/extract/components.hh: ... this.
+
+ * draw/bounding_box_links.hh,
+ * filter/object_links_bbox_h_ratio.hh,
+ * filter/object_links_bbox_ratio.hh,
+ * filter/objects_small.hh,
+ * fun/v2b/objects_small_filter.hh,
+ * primitive/group/apply.hh,
+ * primitive/group/from_single_link.hh,
+ * primitive/internal/find_root.hh,
+ * primitive/internal/init_link_array.hh,
+ * primitive/link/compute.hh,
+ * primitive/link/internal/find_link.hh,
+ * primitive/link/internal/find_several_links.hh,
+ * primitive/link/internal/link_functor_base.hh,
+ * primitive/link/internal/link_several_dmax_base.hh,
+ * primitive/link/internal/link_single_dmax_base.hh,
+ * primitive/link/internal/link_single_dmax_ratio_base.hh,
+ * primitive/link/merge_double_link.hh,
+ * primitive/link/with_single_left_link_dmax_ratio.hh,
+ * primitive/link/with_single_right_link_bottom.hh,
+ * primitive/link/with_single_right_link_dmax_ratio.hh,
+ * primitive/link/with_single_right_link_top.hh: Make use of
+ the new core classes.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add anchor support in debug routines.
+
+ * debug/alignment_decision_image.hh,
+ * debug/links_decision_image.hh,
+ * debug/save_linked_bboxes_image.hh,
+ * draw/bounding_box_links.hh: Make use of anchor points to
+ draw debug outputs.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add new link filters.
+
+ * filter/object_links_non_aligned_simple.hh: Handle new
+ cases.
+
+ * filter/object_links_left_aligned.hh,
+ * filter/object_links_right_aligned.hh: New filters.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve object linking backend.
+
+ * primitive/internal/find_left_link.hh,
+ * primitive/internal/find_right_link.hh,
+ * primitive/internal/is_invalid_link.hh: Remove.
+
+ * primitive/link/internal/compute_anchor.hh,
+ * primitive/link/internal/link_ms_dmax_base.hh,
+ * primitive/link/internal/link_ms_dmax_ratio_base.hh,
+ * primitive/link/internal/link_single_dmax_base.hh,
+ * primitive/link/internal/link_single_dmax_ratio_base.hh,
+ * primitive/link/with_single_down_link.hh,
+ * primitive/link/with_single_left_link.hh,
+ * primitive/link/with_single_left_link_dmax_ratio.hh,
+ * primitive/link/with_single_right_link.hh,
+ * primitive/link/with_single_right_link_dmax_ratio.hh,
+ * primitive/link/with_single_up_link.hh: Introduce the
+ anchor concept and make use of it.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * filter/objects_with_holes.hh: New component filter.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * draw/bounding_boxes.hh: Do not draw box centers anymore.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add dedicated routines for AFP's use case.
+
+ * src/afp/components.hh,
+ * src/afp/link.hh,
+ * src/afp/regroup.hh: New.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add new tools in Scribo.
+
+ * src/preprocessing/Makefile.am,
+ * src/filter/Makefile.am,
+ * src/debug/Makefile.am: Add new targets.
+
+ * src/debug/show_info_median_inter_characters.cc,
+ * src/debug/show_info_x_height.cc,
+ * src/debug/show_links_single_down.cc,
+ * src/debug/show_links_single_down_left_aligned.cc,
+ * src/debug/show_links_single_down_right_aligned.cc,
+ * src/debug/show_links_single_up.cc,
+ * src/debug/show_links_single_up_left_aligned.cc,
+ * src/debug/show_links_single_up_right_aligned.cc,
+ * src/filter/objects_with_holes.cc,
+ * src/filter/objects_with_holes_pgm.cc,
+ * src/pbm_lines_in_doc.cc,
+ * src/preprocessing/split_bg_fg_ms.cc,
+ * src/text_in_article.cc,
+ * src/text_in_photo_ppm_fast.cc: New tools.
+
+ * src/debug/show_left_right_links_validation.cc: Rename as...
+ * src/debug/show_links_left_right_links_validation.cc: ...this.
+
+ * src/debug/show_links_bbox_h_ratio.cc: Add a missing argument.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * src/text_in_photo_ppm.cc: Improve output.
+
+ 2010-02-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Cleanup and avoid warnings in Sauvola related files.
+
+ * binarization/sauvola_ms.hh,
+ * binarization/sauvola_threshold.hh,
+ * canvas/integral_browsing.hh,
+ * src/binarization/sauvola_ms.cc,
+ * src/binarization/sauvola_pgm.cc,x
+ * subsampling/integral_single_image.hh: Cleanup and avoir
+ warnings.
+
+ 2009-12-15 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a new test for object_image.
+
+ * tests/Makefile.am,
+ * tests/core/Makefile.am: Update build system.
+
+ * tests/core/object_image.cc: New test.
+
+ 2009-12-15 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * primitive/extract/objects.hh: Compute and store mass centers.
+
+ 2009-12-14 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix object links filters.
+
+ * filter/object_links_bottom_aligned.hh,
+ * filter/object_links_center_aligned.hh,
+ * filter/object_links_non_aligned_simple.hh,
+ * filter/object_links_top_aligned.hh: Pass the proper dimension as
+ routine argument.
+
+ 2009-12-14 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Cleanup Sauvola's binarization code.
+
+ * binarization/sauvola_threshold.hh,
+ * binarization/sauvola.hh: Use fun::v2v::rgb_to_int_u8.
+
+ * binarization/sauvola_ms.hh: New. Sauvola multi-scale routine.
+
+ * src/binarization/sauvola.cc: Make the window size a program
+ argument.
+
+ * src/binarization/sauvola_ms.cc: Use Sauvola multi-scale routine.
+
+ 2009-12-14 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * core/object_image.hh: Make use of mln::labeled_image_base.
+
+ 2009-12-14 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve linking routines.
+
+ * core/anchors.hh: New. Add anchor types.
+
+ * filter/objects_thin.hh: Use filter::internal::compute.
+
+ * primitive/link/internal/find_several_links.hh,
+ * primitive/link/internal/find_link.hh,
+ * primitive/link/compute.hh: Update functor interface in order to
+ specify anchors.
+
+ * primitive/link/compute_several.hh: Fix an invalid namespace.
+
+ * primitive/link/internal/anchors_3.hh: Move...
+
+ * primitive/link/internal/compute_anchor.hh: ... here.
+
+ * primitive/link/internal/link_functor_base.hh: Use anchor type.
+
+ * primitive/link/internal/link_several_dmax_base.hh: New.
+
+ * primitive/link/internal/link_center_dmax_base.hh,
+ * primitive/link/internal/link_center_dmax_ratio_base.hh: Removed.
+
+ * primitive/link/with_several_right_links_overlap.hh: Fix includes.
+
+ * primitive/link/with_single_right_link_bottom.hh,
+ * primitive/link/with_single_right_link_top.hh,
+ * primitive/link/with_single_left_link.hh,
+ * primitive/link/with_single_right_link.hh: Use
+ link_single_dmax_base functor.
+
+ * src/debug/show_links_several_right_overlap.cc,
+ * src/debug/show_links_single_left.cc,
+ * src/debug/show_links_single_left_dmax_ratio.cc,
+ * src/debug/show_links_single_right.cc,
+ * src/debug/show_links_single_right_dmax_ratio.cc: Update functor
+ interface.
+
+ 2009-12-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve Sauvola Multi-scale.
+
+ * binarization/internal/first_pass_functor.hh: Use
+ sauvola_threshold routine.
+
+ * binarization/sauvola_threshold.hh: Remove debug and fix invalid
+ read in integral image.
+
+ * canvas/integral_browsing.hh,
+ * subsampling/integral_single_image.hh: Fix stats computation.
+
+ * src/binarization/sauvola_ms.cc: Fix window parameter and make
+ debug output optional.
+
+ 2009-12-04 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Optimize Sauvola's multiscale binarization.
+
+ * core/init_integral_image.hh: New.
+
+ * src/binarization/sauvola_ms.cc: Optimize and make it more
+ robust.
+
+ * canvas/integral_browsing.hh: New canvas to browse and compute
+ data in an integral image.
+
+ * binarization/internal/first_pass_functor.hh: New functor to be
+ used in the integral browsing.
+
+ * binarization/sauvola_threshold.hh: Add new overloads.
+
+ * subsampling/integral_single_image.hh: Subsample an image and
+ compute integral images at the same time.
+
+2010-04-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Get C++ compiler flags for Scribo from configure.
+
+ * scribo.mk (SCRIBO_CXXFLAGS): New.
+ (AM_CXXFLAGS): Set to $(SCRIBO_CXXFLAGS).
+ * tests/tests.mk (SCRIBO_TESTS_CXXFLAGS): New.
+ (AM_CXXFLAGS): Set to $(SCRIBO_TESTS_CXXFLAGS).
+
+2010-06-03 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Clean up a bit Scribo's Makefiles.
+
+ * Makefile.am,
+ * demo/Makefile.am,
+ * src/Makefile.am,
+ * src/binarization/Makefile.am,
+ * src/debug/Makefile.am,
+ * src/filter/Makefile.am,
+ * src/misc/Makefile.am,
+ * src/multi_scale/Makefile.am,
+ * src/preprocessing/Makefile.am,
+ * src/primitive/Makefile.am,
+ * src/primitive/extract/Makefile.am,
+ * src/primitive/find/Makefile.am,
+ * src/primitive/group/Makefile.am,
+ * src/table/Makefile.am,
+ * src/text/Makefile.am,
+ * tests/Makefile.am,
+ * tests/filter/Makefile.am,
+ * tests/preprocessing/Makefile.am,
+ * tests/table/Makefile.am,
+ * tests/text/Makefile.am,
+ * tests/unit_test/Makefile.am:
+ Here.
+
+2010-05-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add missing copyright headers in Scribo.
+
+ * scribo/Doxyfile,
+ * scribo/Doxyfile_tex,
+ * scribo/demo/Makefile.am:
+ Here.
+
+2010-04-27 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Help g++ 3.3 compile Scribo code.
+
+ * text/clean.hh (scribo::text::clean): Help g++ 3.3 type-check a
+ pointer on template function.
+
+2010-04-26 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Clean Scribo's tests' outputs.
+
+ * tests/preprocessing/Makefile.am (MOSTLYCLEANFILES): New.
+ Add unskew.pbm
+
+2010-04-21 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix the Scribo distribution.
+
+ * tests/unit_test/Makefile.am (EXTRA_DIST):
+ Add build_unit_test.sh and disabled_tests.
+
+2010-04-21 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have Scribo's unit tests pass.
+
+ * tests/unit_test/disabled_tests:
+ Add scribo/primitive/link/compute_several.hh and
+ scribo/primitive/link/internal/find_several_links.hh, as they
+ do not pass the unit tests.
+ * tests/unit_test/unit-tests.mk: Regen.
+
+2010-04-21 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Update Scribo's unit tests generator.
+
+ * tests/unit_test/build_unit_test.sh: Catch up with Milena's
+ version of this script.
+ * tests/unit_test/Makefile.am (regen-am, $(srcdir)/unit-tests.mk):
+ Adjust.
+ * tests/unit_test/disabled_tests: New.
+
+2010-04-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Help g++ 4.1 compile Scribo.
+
+ * binarization/sauvola_threshold.hh: Help g++ 4.1 find an
+ unambiguous overload of std::pow.
+
+2010-03-31 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have Scribo compile again.
+
+ * core/object_image.hh (object_image): Add prefix `mln::'.
+ * primitive/link/internal/anchors_3.hh: Include mln/util/array.hh.
+ Add missing `mln::' prefixes.
+ * src/binarization/sauvola_ms.cc:
+ s/influence_zone_geodesic/influence_zone_geodesic_saturated/.
+ * table/internal/connect_lines.hh: Likewise.
+ Remove a duplicated header inclusion.
+ * src/debug/Makefile.am
+ (bin_PROGRAMS, show_links_several_right_overlap_SOURCES): Disable
+ show_links_several_right_overlap.
+ * src/primitive/group/Makefile.am
+ (bin_PROGRAMS, group_from_rag_SOURCES): Disable group_from_rag.
+
+2010-03-02 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Regen SCRIBO's Makefile helpers.
+
+ * headers.mk, tests/unit_test/unit-tests.mk: Here.
+
2009-11-03 Guillaume Lazzara <z(a)lrde.epita.fr>
Add a new example in Scribo.
diff --cc scribo/demo/Makefile.am
index 9fcd083,0000000..5030e1e
mode 100644,000000..100644
--- a/scribo/demo/Makefile.am
+++ b/scribo/demo/Makefile.am
@@@ -1,25 -1,0 +1,26 @@@
- # Copyright (C) 2009, 2010 EPITA Research and Development Laboratory (LRDE).
++# Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
++# (LRDE).
+#
+# This file is part of Olena.
+#
+# Olena is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, version 2 of the License.
+#
+# Olena 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 Olena. If not, see <http://www.gnu.org/licenses/>.
+
+include $(top_srcdir)/scribo/scribo.mk
+
+.PHONY : demo
+
+Makefile.demo:
+ qmake-qt4 $(srcdir)/demo/demo.pro -o Makefile.demo
+
+demo: Makefile.demo
+ make -f Makefile.demo all
diff --cc scribo/scribo.mk
index 1912e42,13520d4..c08bbec
--- a/scribo/scribo.mk
+++ b/scribo/scribo.mk
@@@ -1,4 -1,4 +1,5 @@@
- # Copyright (C) 2009, 2010 EPITA Research and Development Laboratory (LRDE).
-# Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE).
++# Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
++# (LRDE).
#
# This file is part of Olena.
#
diff --cc scribo/src/binarization/Makefile.am
index 4adf1a6,ccedd77..6a073cc
--- a/scribo/src/binarization/Makefile.am
+++ b/scribo/src/binarization/Makefile.am
@@@ -1,4 -1,4 +1,5 @@@
--# Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE).
++# Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
++# (LRDE).
#
# This file is part of Olena.
#
@@@ -17,12 -20,63 +18,65 @@@
include $(top_srcdir)/scribo/scribo.mk
bin_PROGRAMS = \
- sauvola \
- sauvola_ms \
- sauvola_pgm \
- simple
-
- sauvola_SOURCES = sauvola.cc
- sauvola_ms_SOURCES = sauvola_ms.cc
- sauvola_pgm_SOURCES = sauvola_pgm.cc
- simple_SOURCES = simple.cc
+ pgm_global_threshold_auto \
+ pgm_sauvola \
+ pgm_sauvola_ms \
+ ppm_sauvola \
+ ppm_fg_sauvola_ms \
+ ppm_sauvola_ms \
+ ppm_sauvola_ms_split
+
++
+ pgm_global_threshold_auto_SOURCES = pgm_global_threshold_auto.cc
+ pgm_sauvola_SOURCES = pgm_sauvola.cc
+ pgm_sauvola_ms_SOURCES = pgm_sauvola_ms.cc
+ ppm_sauvola_SOURCES = ppm_sauvola.cc
+ ppm_fg_sauvola_ms_SOURCES = ppm_fg_sauvola_ms.cc
+ ppm_sauvola_ms_SOURCES = ppm_sauvola_ms.cc
+ ppm_sauvola_ms_split_SOURCES = ppm_sauvola_ms_split.cc
+
+
+ if HAVE_MAGICKXX
+ bin_PROGRAMS += \
+ fg_sauvola_ms \
+ sauvola \
+ sauvola_debug \
+ sauvola_ms \
+ sauvola_ms_static \
+ sauvola_ms_split
+
+ fg_sauvola_ms_SOURCES = fg_sauvola_ms.cc
+ fg_sauvola_ms_CPPFLAGS = $(AM_CPPFLAGS) \
+ $(MAGICKXX_CPPFLAGS)
+ fg_sauvola_ms_LDFLAGS = $(AM_LDFLAGS) \
+ $(MAGICKXX_LDFLAGS)
+
+ sauvola_SOURCES = sauvola.cc
+ sauvola_CPPFLAGS = $(AM_CPPFLAGS) \
+ $(MAGICKXX_CPPFLAGS)
+ sauvola_LDFLAGS = $(AM_LDFLAGS) \
+ $(MAGICKXX_LDFLAGS)
+
+ sauvola_debug_SOURCES = sauvola_debug.cc
+ sauvola_debug_CPPFLAGS = $(AM_CPPFLAGS) \
+ $(MAGICKXX_CPPFLAGS)
+ sauvola_debug_LDFLAGS = $(AM_LDFLAGS) \
+ $(MAGICKXX_LDFLAGS)
+
+
+ sauvola_ms_SOURCES = sauvola_ms.cc
+ sauvola_ms_CPPFLAGS = $(AM_CPPFLAGS) \
+ $(MAGICKXX_CPPFLAGS)
+ sauvola_ms_LDFLAGS = $(AM_LDFLAGS) \
+ $(MAGICKXX_LDFLAGS)
+
+
+ sauvola_ms_split_SOURCES = sauvola_ms_split.cc
+ sauvola_ms_split_CPPFLAGS = $(AM_CPPFLAGS) \
+ $(MAGICKXX_CPPFLAGS)
+ sauvola_ms_split_LDFLAGS = $(AM_LDFLAGS) \
+ $(MAGICKXX_LDFLAGS)
+
+
+ endif HAVE_MAGICKXX
++
diff --cc scribo/src/debug/Makefile.am
index 7ec5669,bb55bfb..6695113
--- a/scribo/src/debug/Makefile.am
+++ b/scribo/src/debug/Makefile.am
@@@ -1,4 -1,4 +1,5 @@@
--# Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE).
++# Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
++# (LRDE).
#
# This file is part of Olena.
#
diff --cc scribo/tests/Makefile.am
index 163ecae,61570c8..11e7cf5
--- a/scribo/tests/Makefile.am
+++ b/scribo/tests/Makefile.am
@@@ -16,7 -16,11 +16,9 @@@
include $(srcdir)/tests.mk
-## Process this file through Automake to create Makefile.in.
-
SUBDIRS = \
+ binarization \
+ core \
filter \
preprocessing \
table \
diff --cc scribo/tests/preprocessing/Makefile.am
index dc139fa,4a6790c..f6ff62a
--- a/scribo/tests/preprocessing/Makefile.am
+++ b/scribo/tests/preprocessing/Makefile.am
@@@ -17,10 -20,10 +17,12 @@@
include $(top_srcdir)/scribo/tests/tests.mk
check_PROGRAMS = \
- unskew
+ unskew \
+ rotate_90
unskew_SOURCES = unskew.cc
+ rotate_90_SOURCES = rotate_90.cc
TESTS = $(check_PROGRAMS)
+
+MOSTLYCLEANFILES = unskew.pbm
hooks/post-receive
--
Olena, a generic and efficient image processing platform
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch exp/scribo-z has been updated
via 15c7c9c6fc5f10005d6965cd819f9d13dac7a8f7 (commit)
from 79001a91319044fdabf9504d8a4b745824e3e91b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
15c7c9c Add text::clean_inplace.
-----------------------------------------------------------------------
Summary of changes:
scribo/ChangeLog | 10 ++++++
scribo/text/clean.hh | 31 ++----------------
scribo/text/{clean.hh => clean_inplace.hh} | 45 +++++++++++++---------------
scribo/text/recognition.hh | 2 +-
4 files changed, 36 insertions(+), 52 deletions(-)
copy scribo/text/{clean.hh => clean_inplace.hh} (74%)
hooks/post-receive
--
Olena, a generic and efficient image processing platform
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch exp/scribo-z has been updated
via 79001a91319044fdabf9504d8a4b745824e3e91b (commit)
from ff4fcc5ac88a15114fa027286af119fb49ae5a08 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
79001a9 Revamp and fix a bug in io::magick::*.
-----------------------------------------------------------------------
Summary of changes:
milena/ChangeLog | 11 +++++++++++
milena/mln/io/magick/load.hh | 32 ++++++++++++++++++++------------
milena/mln/io/magick/save.hh | 33 ++++++++++++++++++---------------
milena/tests/io/magick/save.cc | 9 ++++-----
4 files changed, 53 insertions(+), 32 deletions(-)
hooks/post-receive
--
Olena, a generic and efficient image processing platform
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch exp/scribo-z has been updated
via ff4fcc5ac88a15114fa027286af119fb49ae5a08 (commit)
from 033b24976414aed9461ea4cb7e60e29fe95ff5b3 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
ff4fcc5 Small Fixes in Scribo build system.
-----------------------------------------------------------------------
Summary of changes:
scribo/ChangeLog | 8 ++++++++
scribo/demo/Makefile.am | 4 ++++
scribo/src/Makefile.am | 12 +++++++-----
3 files changed, 19 insertions(+), 5 deletions(-)
hooks/post-receive
--
Olena, a generic and efficient image processing platform
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch exp/scribo-z has been updated
via 033b24976414aed9461ea4cb7e60e29fe95ff5b3 (commit)
via ef48505d020f4fd2ba1e89482bf3a2e3a69d2b7c (commit)
via be8a9483d08855d6475aafbcf6d7b99b4c2e7546 (commit)
via 76ed491e0693668ef068eef740ea697eb17e9017 (commit)
via 5d3b9dacc3b50f37a4fb09dd53d45c53dcdd59c4 (commit)
via 5824c18c8dc04d028fac6a873aeaed17ae00ed07 (commit)
via d7850dbc2fb6879dceacc355cf5f37f460e09313 (commit)
via f8b5117d9ebdbb13855bdb4d4dcc1581e7bc82b1 (commit)
via 9f19274a760e12dc9b2cbe7bdf5bfc9c466af5b8 (commit)
from 5ca84d197b8742460dfda8b9435a02a79603ab0a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
033b249 Add new tests.
ef48505 configure.ac: Set HAVE_QT correctly.
be8a948 Fix conversion routines towards qimage.
76ed491 bench/fastest.cc: New. Add a bench for the best fastest iteration.
5d3b9da Add algorithms to retrieve white spaces.
5824c18 mln/accu/count_value.hh: Add properties.
d7850db Improve text recognition.
f8b5117 binarization/sauvola_ms.hh: Fix an invalid test.
9f19274 upsampling/eagle.hh: Add a new upsampling algorithm.
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 4 +
configure.ac | 4 +-
milena/ChangeLog | 23 +
milena/mln/accu/count_value.hh | 26 +-
milena/mln/convert/to_qimage.hh | 53 +-
milena/mln/convert/to_qimage_nocopy.hh | 2 +-
milena/sandbox/ChangeLog | 5 +
milena/sandbox/bench/fastest.cc | 351 ++++++++
milena/tests/convert/Makefile.am | 25 +-
milena/tests/convert/to_qimage.cc | 76 ++
milena/tests/convert/to_qimage_nocopy.cc | 56 ++
milena/tests/subsampling/Makefile.am | 12 +-
milena/tests/subsampling/antialiased.cc | 74 ++
scribo/ChangeLog | 25 +-
scribo/binarization/sauvola_ms.hh | 2 +-
scribo/sandbox/ChangeLog | 9 +
scribo/sandbox/white_spaces/white_spaces.cc | 792 ------------------
scribo/sandbox/z/white_spaces/hom_sep.cc | 133 +++
.../sandbox/z/white_spaces/white_space_closing.cc | 123 +++
scribo/sandbox/z/white_spaces/white_spaces.cc | 842 ++++++++++++++++++++
scribo/text/clean.hh | 3 +-
scribo/text/recognition.hh | 32 +-
scribo/upsampling/eagle.hh | 145 ++++
23 files changed, 1988 insertions(+), 829 deletions(-)
create mode 100644 milena/sandbox/bench/fastest.cc
create mode 100644 milena/tests/convert/to_qimage.cc
create mode 100644 milena/tests/convert/to_qimage_nocopy.cc
create mode 100644 milena/tests/subsampling/antialiased.cc
create mode 100644 scribo/sandbox/ChangeLog
delete mode 100644 scribo/sandbox/white_spaces/white_spaces.cc
create mode 100644 scribo/sandbox/z/white_spaces/hom_sep.cc
create mode 100644 scribo/sandbox/z/white_spaces/white_space_closing.cc
create mode 100644 scribo/sandbox/z/white_spaces/white_spaces.cc
create mode 100644 scribo/upsampling/eagle.hh
hooks/post-receive
--
Olena, a generic and efficient image processing platform