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