Olena-patches
Threads by month
- ----- 2025 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- 9625 discussions
13 Aug '10
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch exp/scribo-z has been updated
via 2434455d28293575f4bacc80f3e7bb3cd648c3c0 (commit)
via 565a8acd20101cf22d58b674d4d1695d8e9926c6 (commit)
via 7671c7df2acc25243c83131813db612be8a654b2 (commit)
via 15a057175710227bdea5a9702dcbf5bd64704a9d (commit)
from 53a57b1d3275c5b9fb41db4b706342d6a7df992d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
2434455 Merge branch 'exp/scribo-z' into next
-----------------------------------------------------------------------
Summary of changes:
milena/ChangeLog | 28 +++++
milena/mln/io/magick/load.hh | 202 ++++++++++++++++++------------------
milena/mln/io/magick/save.hh | 144 ++++++++++++++-----------
milena/sandbox/ChangeLog | 44 ++++----
milena/tests/io/magick/Makefile.am | 8 +-
milena/tests/io/magick/load.cc | 72 +++++++++++--
milena/tests/io/magick/save.cc | 86 +++++++++++++--
scribo/ChangeLog | 7 ++
8 files changed, 381 insertions(+), 210 deletions(-)
hooks/post-receive
--
Olena, a generic and efficient image processing platform
1
0
13 Aug '10
This is a merge commit message of the following branches:
Merge: 565a8ac... 53a57b1...
Conflicts:
milena/mln/io/magick/load.hh
milena/mln/io/magick/save.hh
milena/tests/io/magick/save.cc
scribo/src/Makefile.am
ChangeLog | 117 +
Makefile.am | 4 +-
bootstrap | 11 +-
build-aux/autotroll.mk | 108 +
build-aux/build_unit_test.sh | 201 ++-
configure.ac | 286 +++-
m4/autotroll.m4 | 565 +++++
m4/boost.m4 | 1038 +++++++++
m4/oln-with-lib.m4 | 5 +-
m4/pkg.m4 | 155 ++
milena/ChangeLog | 802 +++++++-
milena/doc/figures/fill-subdomain-2.ppm | Bin 206 -> 206 bytes
milena/doc/figures/fill-subdomain-3.ppm | Bin 206 -> 206 bytes
milena/doc/figures/labeling-compute-2.ppm | Bin 206 -> 206 bytes
milena/doc/figures/tuto3_colorize-2.ppm | Bin 191 -> 191 bytes
.../figures/tuto4_genericity_and_algorithms-5.ppm | Bin 12406 -> 12406 bytes
milena/doc/tutorial.tex | 4 +
milena/headers.mk | 27 +-
milena/img/BUG_lean_ascii.pgm.gz | Bin 75726 -> 0 bytes
milena/img/picasso.ppm | Bin 0 -> 244671 bytes
milena/mln/accu/center.hh | 14 +-
milena/mln/accu/count_value.hh | 30 +-
milena/mln/accu/internal/base.hh | 4 +-
milena/mln/accu/label_used.hh | 5 +-
milena/mln/accu/math/sum.hh | 3 +-
milena/mln/accu/pair.hh | 26 +
milena/mln/accu/stat/variance.hh | 4 +-
milena/mln/accu/tuple.hh | 13 +-
milena/mln/border/thickness.hh | 4 +
milena/mln/canvas/labeling/blobs.hh | 22 +-
milena/mln/canvas/labeling/video.hh | 8 +-
milena/mln/convert/from_to.hxx | 45 +
milena/mln/convert/impl/from_float_to_value.hh | 10 +
milena/mln/convert/impl/from_unsigned_to_value.hh | 10 +
milena/mln/convert/to_qimage.hh | 300 +++
milena/mln/convert/to_qimage_nocopy.hh | 180 ++
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/alias/window2d.hh | 3 +-
milena/mln/core/concept/function.hh | 43 +
milena/mln/core/concept/gpoint.hh | 2 +-
milena/mln/core/image/image1d.hh | 6 +-
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 | 164 ++-
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 | 311 +++-
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 | 69 +
milena/mln/fun/v2v/saturate.hh | 9 +-
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/max_col.hh | 8 +-
milena/mln/geom/max_row.hh | 8 +-
milena/mln/geom/min_col.hh | 8 +-
milena/mln/geom/min_row.hh | 8 +-
milena/mln/geom/nslices.hh | 68 +
milena/mln/geom/nslis.hh | 68 -
milena/mln/geom/rotate.hh | 107 +-
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 | 114 +
milena/mln/io/dicom/load.hh | 17 +-
milena/mln/io/dump/all.hh | 1 +
milena/mln/io/dump/get_header.hh | 128 ++
milena/mln/io/dump/save.hh | 3 +
milena/mln/io/fld/load.hh | 13 +-
milena/mln/io/fld/max_components.hh | 32 +-
milena/mln/io/magick/load.hh | 4 +-
milena/mln/io/magick/save.hh | 8 +-
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 | 136 ++
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 | 60 +-
milena/mln/labeling/colorize.hh | 75 +-
milena/mln/labeling/compute.hh | 415 ++++-
milena/mln/labeling/flat_zones.hh | 34 +-
milena/mln/labeling/pack.hh | 2 +-
milena/mln/labeling/relabel.hh | 23 +-
milena/mln/labeling/value.hh | 16 +-
milena/mln/labeling/value_and_compute.hh | 241 ++
milena/mln/linear/ch_convolve.hh | 9 +-
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 | 458 ++++
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 | 803 +++++++
milena/mln/value/rgb.hh | 67 +-
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 | 601 +++++
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/bench/fastest.cc | 351 +++
milena/sandbox/bin/labeling/colorize.cc | 24 +
milena/sandbox/bin/pgm_to_pbm.cc | 39 +
milena/sandbox/bin/ppm_negate.cc | 43 +
.../green/bench/transform/distance/Makefile.am | 150 ++
.../green/bench/transform/distance/distance.cc | 775 +++++++
.../sandbox/green/demo/annotating/bic/Makefile.am | 150 ++
milena/sandbox/green/demo/annotating/bic/bic.cc | 87 +
.../sandbox/green/demo/annotating/hsv/Makefile.am | 152 ++
milena/sandbox/green/demo/annotating/hsv/hsv.cc | 607 +++++
.../sandbox/green/demo/annotating/lep/Makefile.am | 150 ++
milena/sandbox/green/demo/annotating/lep/lep.cc | 92 +
.../green/demo/annotating/nb_color/Makefile.am | 150 ++
.../green/demo/annotating/nb_color/nb_color.cc | 101 +
.../green/demo/annotating/project/Makefile.am | 150 ++
.../green/demo/annotating/project/project.cc | 210 ++
.../green/demo/annotating/rgb_64/Makefile.am | 150 ++
.../sandbox/green/demo/annotating/rgb_64/rgb_64.cc | 47 +
.../green/demo/annotating/rgb_64_9/Makefile.am | 150 ++
.../green/demo/annotating/rgb_64_9/rgb_64_9.cc | 97 +
.../green/demo/annotating/stddev_color/Makefile.am | 150 ++
.../demo/annotating/stddev_color/stddev_color.cc | 124 ++
.../demo/annotating/stddev_color_16/Makefile.am | 150 ++
.../annotating/stddev_color_16/stddev_color_16.cc | 178 ++
.../green/demo/clustering/kmean_rgb/Makefile.am | 148 ++
.../green/demo/clustering/kmean_rgb/kmean_rgb.cc | 91 +
.../demo/labeling/regional_maxima/Makefile.am | 2 +
.../labeling/regional_maxima/regional_maxima.cc | 906 ++++++--
.../demo/labeling/regional_maxima/thresholds.txt | 42 +
milena/sandbox/green/doc/annotating/class.txt | 42 +
.../green/doc/annotating/syntheseMillet2008.txt | 283 +++
milena/sandbox/green/doc/annotating/testMillet2008 | 69 +
.../doc/regional_maxima/cmp_method/h0_input.pgm.gz | Bin 0 -> 18078 bytes
.../doc/regional_maxima/cmp_method/h2_mean.pgm.gz | Bin 0 -> 374 bytes
.../doc/regional_maxima/cmp_method/h2_merge.pgm.gz | Bin 0 -> 4491 bytes
.../doc/regional_maxima/cmp_method/h3_mean.pgm.gz | Bin 0 -> 391 bytes
.../doc/regional_maxima/cmp_method/h3_merge.pgm.gz | Bin 0 -> 10188 bytes
.../doc/regional_maxima/cmp_method/h4_mean.pgm.gz | Bin 0 -> 367 bytes
.../doc/regional_maxima/cmp_method/h4_merge.pgm.gz | Bin 0 -> 18078 bytes
.../doc/regional_maxima/cmp_method/h5_mean.pgm.gz | Bin 0 -> 372 bytes
.../doc/regional_maxima/cmp_method/h5_merge.pgm.gz | Bin 0 -> 12777 bytes
.../doc/regional_maxima/cmp_method/i2_mean.ppm.gz | Bin 0 -> 566650 bytes
.../doc/regional_maxima/cmp_method/i2_merge.ppm.gz | Bin 0 -> 1586150 bytes
.../doc/regional_maxima/cmp_method/i3_mean.ppm.gz | Bin 0 -> 573407 bytes
.../doc/regional_maxima/cmp_method/i3_merge.ppm.gz | Bin 0 -> 3050979 bytes
.../doc/regional_maxima/cmp_method/i4_mean.ppm.gz | Bin 0 -> 663621 bytes
.../doc/regional_maxima/cmp_method/i4_merge.ppm.gz | Bin 0 -> 3387044 bytes
.../doc/regional_maxima/cmp_method/i5_mean.ppm.gz | Bin 0 -> 653140 bytes
.../doc/regional_maxima/cmp_method/i5_merge.ppm.gz | Bin 0 -> 3217839 bytes
.../doc/regional_maxima/cmp_method/l2_input.pgm.gz | Bin 0 -> 423612 bytes
.../doc/regional_maxima/cmp_method/l3_input.pgm.gz | Bin 0 -> 420801 bytes
.../doc/regional_maxima/cmp_method/l4_input.pgm.gz | Bin 0 -> 486206 bytes
.../doc/regional_maxima/cmp_method/l5_input.pgm.gz | Bin 0 -> 479055 bytes
.../regional_maxima/cmp_method/reponse_theo.eml | 106 +
.../doc/regional_maxima/cmp_method/s2_histo.txt | 31 +
.../doc/regional_maxima/cmp_method/s3_histo.txt | 31 +
.../doc/regional_maxima/cmp_method/s4_histo.txt | 31 +
.../doc/regional_maxima/cmp_method/s5_histo.txt | 31 +
.../doc/regional_maxima/cmp_method/synthese.txt | 223 ++
.../doc/regional_maxima/cmp_quant/h0_input.pgm.gz | Bin 0 -> 18078 bytes
.../regional_maxima/cmp_quant/h5_mean_q2.pgm.gz | Bin 0 -> 247 bytes
.../regional_maxima/cmp_quant/h5_mean_q3.pgm.gz | Bin 0 -> 280 bytes
.../regional_maxima/cmp_quant/h5_mean_q4.pgm.gz | Bin 0 -> 319 bytes
.../regional_maxima/cmp_quant/h5_mean_q5.pgm.gz | Bin 0 -> 375 bytes
.../regional_maxima/cmp_quant/h5_mean_q6.pgm.gz | Bin 0 -> 392 bytes
.../regional_maxima/cmp_quant/h5_mean_q7.pgm.gz | Bin 0 -> 383 bytes
.../regional_maxima/cmp_quant/h5_mean_q8.pgm.gz | Bin 0 -> 470 bytes
.../regional_maxima/cmp_quant/h5_merge_q2.pgm.gz | Bin 0 -> 18081 bytes
.../regional_maxima/cmp_quant/h5_merge_q3.pgm.gz | Bin 0 -> 18081 bytes
.../regional_maxima/cmp_quant/h5_merge_q4.pgm.gz | Bin 0 -> 16358 bytes
.../regional_maxima/cmp_quant/h5_merge_q5.pgm.gz | Bin 0 -> 12780 bytes
.../regional_maxima/cmp_quant/h5_merge_q6.pgm.gz | Bin 0 -> 9694 bytes
.../regional_maxima/cmp_quant/h5_merge_q7.pgm.gz | Bin 0 -> 6211 bytes
.../regional_maxima/cmp_quant/h5_merge_q8.pgm.gz | Bin 0 -> 1564 bytes
.../regional_maxima/cmp_quant/i5_mean_q2.ppm.gz | Bin 0 -> 112779 bytes
.../regional_maxima/cmp_quant/i5_mean_q3.ppm.gz | Bin 0 -> 191264 bytes
.../regional_maxima/cmp_quant/i5_mean_q4.ppm.gz | Bin 0 -> 298062 bytes
.../regional_maxima/cmp_quant/i5_mean_q5.ppm.gz | Bin 0 -> 653143 bytes
.../regional_maxima/cmp_quant/i5_mean_q6.ppm.gz | Bin 0 -> 807617 bytes
.../regional_maxima/cmp_quant/i5_mean_q7.ppm.gz | Bin 0 -> 813222 bytes
.../regional_maxima/cmp_quant/i5_mean_q8.ppm.gz | Bin 0 -> 861711 bytes
.../regional_maxima/cmp_quant/i5_merge_q2.ppm.gz | Bin 0 -> 3387047 bytes
.../regional_maxima/cmp_quant/i5_merge_q3.ppm.gz | Bin 0 -> 3387047 bytes
.../regional_maxima/cmp_quant/i5_merge_q4.ppm.gz | Bin 0 -> 3355365 bytes
.../regional_maxima/cmp_quant/i5_merge_q5.ppm.gz | Bin 0 -> 3217842 bytes
.../regional_maxima/cmp_quant/i5_merge_q6.ppm.gz | Bin 0 -> 3033730 bytes
.../regional_maxima/cmp_quant/i5_merge_q7.ppm.gz | Bin 0 -> 2295150 bytes
.../regional_maxima/cmp_quant/i5_merge_q8.ppm.gz | Bin 0 -> 1319396 bytes
.../regional_maxima/cmp_quant/l5_input_q2.pgm.gz | Bin 0 -> 83951 bytes
.../regional_maxima/cmp_quant/l5_input_q3.pgm.gz | Bin 0 -> 143817 bytes
.../regional_maxima/cmp_quant/l5_input_q4.pgm.gz | Bin 0 -> 220346 bytes
.../regional_maxima/cmp_quant/l5_input_q5.pgm.gz | Bin 0 -> 479058 bytes
.../regional_maxima/cmp_quant/l5_input_q6.pgm.gz | Bin 0 -> 593359 bytes
.../regional_maxima/cmp_quant/l5_input_q7.pgm.gz | Bin 0 -> 600121 bytes
.../regional_maxima/cmp_quant/l5_input_q8.pgm.gz | Bin 0 -> 630760 bytes
.../doc/regional_maxima/cmp_quant/s5_histo_q2.txt | 3 +
.../doc/regional_maxima/cmp_quant/s5_histo_q3.txt | 8 +
.../doc/regional_maxima/cmp_quant/s5_histo_q4.txt | 18 +
.../doc/regional_maxima/cmp_quant/s5_histo_q5.txt | 33 +
.../doc/regional_maxima/cmp_quant/s5_histo_q6.txt | 33 +
.../doc/regional_maxima/cmp_quant/s5_histo_q7.txt | 32 +
.../doc/regional_maxima/cmp_quant/s5_histo_q8.txt | 75 +
.../doc/regional_maxima/cmp_quant/synthese.txt | 205 ++
.../mp00411c/colormap_all_q4.txt.gz | Bin 0 -> 187 bytes
.../mp00411c/colormap_all_q5.txt.gz | Bin 0 -> 420 bytes
.../mp00411c/colormap_thick_q4.txt.gz | Bin 0 -> 159 bytes
.../mp00411c/colormap_thick_q5.txt.gz | Bin 0 -> 352 bytes
.../mp00411c/colormap_thin_q4.txt.gz | Bin 0 -> 173 bytes
.../mp00411c/colormap_thin_q5.txt.gz | Bin 0 -> 366 bytes
.../regional_maxima/mp00411c/histo_all_q4.dump.gz | Bin 0 -> 1233 bytes
.../regional_maxima/mp00411c/histo_all_q5.dump.gz | Bin 0 -> 4779 bytes
.../mp00411c/histo_thick_q4.dump.gz | Bin 0 -> 781 bytes
.../mp00411c/histo_thick_q5.dump.gz | Bin 0 -> 2532 bytes
.../regional_maxima/mp00411c/histo_thin_q4.dump.gz | Bin 0 -> 901 bytes
.../regional_maxima/mp00411c/histo_thin_q5.dump.gz | Bin 0 -> 2976 bytes
.../doc/regional_maxima/mp00411c/iz_all_q4.dump.gz | Bin 0 -> 659040 bytes
.../doc/regional_maxima/mp00411c/iz_all_q5.dump.gz | Bin 0 -> 1505619 bytes
.../regional_maxima/mp00411c/iz_thick_q4.dump.gz | Bin 0 -> 482831 bytes
.../regional_maxima/mp00411c/iz_thick_q5.dump.gz | Bin 0 -> 1414258 bytes
.../regional_maxima/mp00411c/iz_thin_q4.dump.gz | Bin 0 -> 647722 bytes
.../regional_maxima/mp00411c/iz_thin_q5.dump.gz | Bin 0 -> 1458415 bytes
.../mp00411c/labeled_all_q4.dump.gz | Bin 0 -> 149 bytes
.../mp00411c/labeled_all_q5.dump.gz | Bin 0 -> 343 bytes
.../mp00411c/labeled_thick_q4.dump.gz | Bin 0 -> 149 bytes
.../mp00411c/labeled_thick_q5.dump.gz | Bin 0 -> 309 bytes
.../mp00411c/labeled_thin_q4.dump.gz | Bin 0 -> 149 bytes
.../mp00411c/labeled_thin_q5.dump.gz | Bin 0 -> 308 bytes
.../regional_maxima/mp00411c/mean3_all_q4.ppm.gz | Bin 0 -> 985276 bytes
.../regional_maxima/mp00411c/mean3_all_q5.ppm.gz | Bin 0 -> 1961577 bytes
.../regional_maxima/mp00411c/mean3_thick_q4.ppm.gz | Bin 0 -> 865034 bytes
.../regional_maxima/mp00411c/mean3_thick_q5.ppm.gz | Bin 0 -> 1831699 bytes
.../regional_maxima/mp00411c/mean3_thin_q4.ppm.gz | Bin 0 -> 958289 bytes
.../regional_maxima/mp00411c/mean3_thin_q5.ppm.gz | Bin 0 -> 1872271 bytes
.../regional_maxima/mp00411c/mean4_all_q4.ppm.gz | Bin 0 -> 772605 bytes
.../regional_maxima/mp00411c/mean4_all_q5.ppm.gz | Bin 0 -> 1852455 bytes
.../regional_maxima/mp00411c/mean4_thick_q4.ppm.gz | Bin 0 -> 559850 bytes
.../regional_maxima/mp00411c/mean4_thick_q5.ppm.gz | Bin 0 -> 1727247 bytes
.../regional_maxima/mp00411c/mean4_thin_q4.ppm.gz | Bin 0 -> 760428 bytes
.../regional_maxima/mp00411c/mean4_thin_q5.ppm.gz | Bin 0 -> 1781495 bytes
.../doc/regional_maxima/mp00411c/mp00411c.ppm.gz | Bin 0 -> 5316204 bytes
.../doc/regional_maxima/mp00411c/mp00411c.sh.gz | Bin 0 -> 636 bytes
.../regional_maxima/mp00411c/mp00411c_thick.pbm.gz | Bin 0 -> 190478 bytes
.../regional_maxima/mp00411c/mp00411c_thin.pbm.gz | Bin 0 -> 248730 bytes
.../regional_maxima/mp00411c/opened_all_q4.dump.gz | Bin 0 -> 1159 bytes
.../regional_maxima/mp00411c/opened_all_q5.dump.gz | Bin 0 -> 4531 bytes
.../mp00411c/opened_thick_q4.dump.gz | Bin 0 -> 747 bytes
.../mp00411c/opened_thick_q5.dump.gz | Bin 0 -> 2351 bytes
.../mp00411c/opened_thin_q4.dump.gz | Bin 0 -> 848 bytes
.../mp00411c/opened_thin_q5.dump.gz | Bin 0 -> 2772 bytes
.../regional_maxima/mp00411c/proj1_all_q4.pgm.gz | Bin 0 -> 343 bytes
.../regional_maxima/mp00411c/proj1_all_q5.pgm.gz | Bin 0 -> 779 bytes
.../regional_maxima/mp00411c/proj1_thick_q4.pgm.gz | Bin 0 -> 312 bytes
.../regional_maxima/mp00411c/proj1_thick_q5.pgm.gz | Bin 0 -> 612 bytes
.../regional_maxima/mp00411c/proj1_thin_q4.pgm.gz | Bin 0 -> 339 bytes
.../regional_maxima/mp00411c/proj1_thin_q5.pgm.gz | Bin 0 -> 718 bytes
.../regional_maxima/mp00411c/proj2_all_q4.pgm.gz | Bin 0 -> 338 bytes
.../regional_maxima/mp00411c/proj2_all_q5.pgm.gz | Bin 0 -> 750 bytes
.../regional_maxima/mp00411c/proj2_thick_q4.pgm.gz | Bin 0 -> 315 bytes
.../regional_maxima/mp00411c/proj2_thick_q5.pgm.gz | Bin 0 -> 606 bytes
.../regional_maxima/mp00411c/proj2_thin_q4.pgm.gz | Bin 0 -> 331 bytes
.../regional_maxima/mp00411c/proj2_thin_q5.pgm.gz | Bin 0 -> 693 bytes
.../regional_maxima/mp00411c/proj3_all_q4.ppm.gz | Bin 0 -> 230 bytes
.../regional_maxima/mp00411c/proj3_all_q5.ppm.gz | Bin 0 -> 401 bytes
.../regional_maxima/mp00411c/proj3_thick_q4.ppm.gz | Bin 0 -> 224 bytes
.../regional_maxima/mp00411c/proj3_thick_q5.ppm.gz | Bin 0 -> 343 bytes
.../regional_maxima/mp00411c/proj3_thin_q4.ppm.gz | Bin 0 -> 229 bytes
.../regional_maxima/mp00411c/proj3_thin_q5.ppm.gz | Bin 0 -> 359 bytes
.../regional_maxima/mp00411c/proj4_all_q4.ppm.gz | Bin 0 -> 252 bytes
.../regional_maxima/mp00411c/proj4_all_q5.ppm.gz | Bin 0 -> 447 bytes
.../regional_maxima/mp00411c/proj4_thick_q4.ppm.gz | Bin 0 -> 221 bytes
.../regional_maxima/mp00411c/proj4_thick_q5.ppm.gz | Bin 0 -> 369 bytes
.../regional_maxima/mp00411c/proj4_thin_q4.ppm.gz | Bin 0 -> 234 bytes
.../regional_maxima/mp00411c/proj4_thin_q5.ppm.gz | Bin 0 -> 415 bytes
.../doc/regional_maxima/mp00411c/quant_q4.ppm.gz | Bin 0 -> 2590062 bytes
.../doc/regional_maxima/mp00411c/quant_q5.ppm.gz | Bin 0 -> 3775184 bytes
.../regional_maxima/mp00411c/stats3_all_q4.txt.gz | Bin 0 -> 292 bytes
.../regional_maxima/mp00411c/stats3_all_q5.txt.gz | Bin 0 -> 701 bytes
.../mp00411c/stats3_thick_q4.txt.gz | Bin 0 -> 244 bytes
.../mp00411c/stats3_thick_q5.txt.gz | Bin 0 -> 584 bytes
.../regional_maxima/mp00411c/stats3_thin_q4.txt.gz | Bin 0 -> 262 bytes
.../regional_maxima/mp00411c/stats3_thin_q5.txt.gz | Bin 0 -> 606 bytes
.../regional_maxima/mp00411c/stats4_all_q4.txt.gz | Bin 0 -> 284 bytes
.../regional_maxima/mp00411c/stats4_all_q5.txt.gz | Bin 0 -> 704 bytes
.../mp00411c/stats4_thick_q4.txt.gz | Bin 0 -> 234 bytes
.../mp00411c/stats4_thick_q5.txt.gz | Bin 0 -> 580 bytes
.../regional_maxima/mp00411c/stats4_thin_q4.txt.gz | Bin 0 -> 255 bytes
.../regional_maxima/mp00411c/stats4_thin_q5.txt.gz | Bin 0 -> 591 bytes
.../doc/regional_maxima/mp00411c/synthese.txt.gz | Bin 0 -> 4062 bytes
.../green/exp/annotating/achromastism/Makefile.am | 153 ++
.../exp/annotating/achromastism/achromastism.cc | 113 +
.../exp/annotating/achromastism/text-color.txt | 15 +
.../green/exp/annotating/achromastism/text-img.txt | 40 +
.../exp/annotating/achromastism/text-only.txt | 8 +
.../sandbox/green/exp/annotating/bench/Makefile.am | 153 ++
milena/sandbox/green/exp/annotating/bench/bench.cc | 1213 ++++++++++
.../sandbox/green/exp/annotating/error/Makefile.am | 153 ++
milena/sandbox/green/exp/annotating/error/error.cc | 700 ++++++
.../sandbox/green/exp/annotating/histo/Makefile.am | 153 ++
milena/sandbox/green/exp/annotating/histo/histo.cc | 306 +++
.../sandbox/green/exp/annotating/hsv/Makefile.am | 153 ++
milena/sandbox/green/exp/annotating/hsv/hsv.cc | 652 ++++++
.../sandbox/green/exp/annotating/hue/Makefile.am | 153 ++
milena/sandbox/green/exp/annotating/hue/hue.cc | 291 +++
.../green/exp/annotating/hue/text-color.txt | 15 +
.../sandbox/green/exp/annotating/hue/text-img.txt | 40 +
.../sandbox/green/exp/annotating/hue/text-only.txt | 8 +
.../green/exp/annotating/nb_color/Makefile.am | 151 ++
.../green/exp/annotating/nb_color/nb_color.cc | 131 ++
.../green/exp/annotating/saturation/Makefile.am | 153 ++
.../green/exp/annotating/saturation/saturation.cc | 119 +
.../green/exp/annotating/saturation/text-color.txt | 15 +
.../green/exp/annotating/saturation/text-img.txt | 40 +
.../green/exp/annotating/saturation/text-only.txt | 8 +
.../green/exp/annotating/stddev_color/Makefile.am | 151 ++
.../exp/annotating/stddev_color/stddev_color.cc | 153 ++
.../exp/annotating/stddev_color_16/Makefile.am | 151 ++
.../annotating/stddev_color_16/stddev_color_16.cc | 195 ++
.../sandbox/green/exp/annotating/value/Makefile.am | 153 ++
.../green/exp/annotating/value/text-color.txt | 15 +
.../green/exp/annotating/value/text-img.txt | 40 +
.../green/exp/annotating/value/text-only.txt | 8 +
milena/sandbox/green/exp/annotating/value/value.cc | 316 +++
.../green/exp/labeling/regional_maxima/Makefile.am | 151 ++
.../labeling/regional_maxima/regional_maxima.cc | 156 ++
milena/sandbox/green/mln/accu/stat/histo1d.hh | 66 +-
milena/sandbox/green/mln/clustering/kmean_rgb.hh | 973 ++++++++
milena/sandbox/green/mln/display/display_histo.hh | 98 +-
milena/sandbox/green/mln/display/project_histo.hh | 443 ++++-
milena/sandbox/green/mln/fun/p2b/achromatic.hh | 112 +
.../sandbox/green/mln/fun/p2b/component_equals.hh | 99 +
milena/sandbox/green/mln/fun/v2v/achromatism.hh | 64 +
.../sandbox/green/mln/fun/v2v/hue_concentration.hh | 100 +
milena/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh | 71 +
.../green/mln/fun/v2v/rgb_to_achromatism_map.hh | 77 +
milena/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh | 149 ++
milena/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh | 96 +
.../green/mln/fun/v2v/rgb_to_saturation_map.hh | 83 +
.../sandbox/green/mln/fun/v2v/rgb_to_value_map.hh | 75 +
milena/sandbox/green/mln/img_path.hh | 221 ++-
milena/sandbox/green/mln/math/ceil.hh | 64 +
milena/sandbox/green/mln/math/floor.hh | 64 +
milena/sandbox/green/mln/value/hsv.hh | 424 ++++
.../green/tools/annotating/histo/Makefile.am | 150 ++
.../sandbox/green/tools/annotating/histo/histo.cc | 143 ++
.../sandbox/green/tools/annotating/iz/Makefile.am | 150 ++
milena/sandbox/green/tools/annotating/iz/iz.cc | 373 ++++
.../green/tools/annotating/opening/Makefile.am | 150 ++
.../green/tools/annotating/opening/opening.cc | 111 +
.../green/tools/annotating/regmax/Makefile.am | 150 ++
.../green/tools/annotating/regmax/regmax.cc | 328 +++
.../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/accu/Makefile.am | 15 +-
milena/tests/convert/Makefile.am | 25 +-
milena/tests/convert/to_qimage.cc | 76 +
milena/tests/convert/to_qimage_nocopy.cc | 56 +
milena/tests/core/alias/box3d.cc | 5 +-
milena/tests/core/image/image3d.cc | 11 +-
milena/tests/core/other/box_runstart_piter.cc | 57 +-
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/rotate.cc | 16 +-
milena/tests/geom/translate.cc | 5 +-
milena/tests/geom/vertical_symmetry.cc | 49 +
milena/tests/io/magick/save.cc | 5 +-
milena/tests/io/pbms/load.cc | 3 +-
milena/tests/io/pgms/load.cc | 3 +-
milena/tests/io/ppms/load.cc | 3 +-
milena/tests/labeling/blobs_and_compute.cc | 17 +-
milena/tests/labeling/colorize.cc | 6 +-
milena/tests/labeling/flat_zones.cc | 4 +-
milena/tests/labeling/foreground.cc | 4 +-
milena/tests/labeling/relabel.cc | 6 +-
milena/tests/subsampling/Makefile.am | 12 +-
milena/tests/subsampling/antialiased.cc | 74 +
milena/tests/topo/skeleton/crest.cc | 10 +-
.../transform/bench_closest_point_geodesic.cc | 9 +-
milena/tests/unit_test/Makefile.am | 18 +-
.../cond_tests_boost-preprocessor_boost-tuple | 1 +
milena/tests/unit_test/cond_tests_cfitsio | 2 +
milena/tests/unit_test/cond_tests_gdcm | 3 +
milena/tests/unit_test/cond_tests_magickxx | 3 +
milena/tests/unit_test/cond_tests_qt | 2 +
milena/tests/unit_test/cond_tests_tiff | 2 +
milena/tests/unit_test/disabled_tests | 10 -
milena/tests/unit_test/unit-tests.mk | 146 ++-
scribo/ChangeLog | 2326 +++++++++++++++++++-
scribo/Makefile.am | 9 +-
scribo/README | 52 +
scribo/all.hh | 51 -
scribo/binarization/binarize.hh | 180 --
scribo/binarization/sauvola.hh | 192 --
scribo/binarization/sauvola_threshold.hh | 478 ----
scribo/binarization/simple.hh | 166 --
scribo/core/all.hh | 49 -
scribo/core/central_sites.hh | 94 -
scribo/core/concept/link_functor.hh | 53 -
scribo/core/erase_objects.hh | 87 -
scribo/core/internal/link_functor_base.hh | 119 -
scribo/core/macros.hh | 38 -
scribo/core/object_groups.hh | 140 --
scribo/core/object_image.hh | 38 -
scribo/core/object_links.hh | 130 --
scribo/debug/alignment_decision_image.hh | 170 --
scribo/debug/all.hh | 49 -
scribo/debug/decision_image.hh | 176 --
scribo/debug/links_decision_image.hh | 127 --
scribo/debug/save_bboxes_image.hh | 87 -
scribo/debug/save_label_image.hh | 83 -
scribo/debug/save_linked_bboxes_image.hh | 269 ---
scribo/debug/save_object_diff.hh | 98 -
scribo/debug/save_table_image.hh | 131 --
scribo/debug/several_links_decision_image.hh | 185 --
scribo/debug/usage.hh | 82 -
scribo/demo/Makefile.am | 12 +-
scribo/demo/demat/demat.pro | 42 +
scribo/demo/demat/demat.qrc | 4 +
scribo/demo/demat/src/doc_type.hh | 51 +
scribo/demo/demat/src/main.cc | 31 +
scribo/demo/demat/src/main_window.cc | 266 +++
scribo/demo/demat/src/main_window.hh | 96 +
scribo/demo/demat/src/mln_widgets.cc | 11 +
scribo/demo/demat/src/preprocessing_task.hh | 62 +
scribo/demo/demat/src/process_args.hh | 47 +
scribo/demo/demat/src/runner.cc | 327 +++
scribo/demo/demat/src/runner.hh | 94 +
scribo/demo/demat/ui/main_window.ui | 381 ++++
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 | 49 +
scribo/demo/review/src/mainwindow.cc | 572 +++++
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 | 396 ++++
scribo/demo/shared/src/crop_item.hh | 119 +
scribo/demo/shared/src/image_viewer.cc | 410 ++++
scribo/demo/shared/src/image_viewer.hh | 148 ++
scribo/demo/shared/src/image_viewer.hxx | 31 +
.../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 | 94 +
.../demo/shared/src/internal/interactive_scene.hh | 85 +
.../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 | 296 +++
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/tip/gui.pro | 19 +
scribo/demo/tip/gui.qrc | 9 +
scribo/demo/tip/icons/next.png | Bin 0 -> 3337 bytes
scribo/demo/tip/icons/ok.png | Bin 0 -> 3953 bytes
scribo/demo/tip/icons/photos.png | Bin 0 -> 3750 bytes
scribo/demo/tip/icons/prev.png | Bin 0 -> 3334 bytes
scribo/demo/tip/icons/remove.png | Bin 0 -> 3704 bytes
scribo/demo/tip/src/custom_delegate.cc | 105 +
scribo/demo/tip/src/custom_delegate.hh | 81 +
scribo/demo/tip/src/launch_dialog.cc | 94 +
scribo/demo/tip/src/launch_dialog.hh | 63 +
scribo/demo/tip/src/main.cc | 46 +
scribo/demo/tip/src/main_window.cc | 526 +++++
scribo/demo/tip/src/main_window.hh | 119 +
scribo/demo/tip/ui/launch_dialog.ui | 117 +
scribo/demo/tip/ui/main_window.ui | 656 ++++++
scribo/demo/ui/mainwindow.ui | 340 ---
scribo/demo/viewer/Makefile.am | 70 +
scribo/demo/viewer/README | 33 +
scribo/demo/viewer/browser_widget.cc | 78 +
scribo/demo/viewer/browser_widget.hh | 42 +
scribo/demo/viewer/common.hh | 38 +
scribo/demo/viewer/domitem.cc | 98 +
scribo/demo/viewer/domitem.hh | 75 +
scribo/demo/viewer/dommodel.cc | 198 ++
scribo/demo/viewer/dommodel.hh | 85 +
scribo/demo/viewer/help_dialog.cc | 55 +
scribo/demo/viewer/help_dialog.hh | 32 +
scribo/demo/viewer/image_region.cc | 139 ++
scribo/demo/viewer/image_region.hh | 76 +
scribo/demo/viewer/image_region.hxx | 100 +
scribo/demo/viewer/image_scene.cc | 90 +
scribo/demo/viewer/image_scene.hh | 44 +
scribo/demo/viewer/image_view.cc | 78 +
scribo/demo/viewer/image_view.hh | 40 +
scribo/demo/viewer/image_widget.cc | 48 +
scribo/demo/viewer/image_widget.hh | 41 +
scribo/demo/viewer/key_widget.cc | 90 +
scribo/demo/viewer/key_widget.hh | 45 +
scribo/demo/viewer/main.cc | 37 +
scribo/demo/viewer/property_widget.cc | 73 +
scribo/demo/viewer/property_widget.hh | 41 +
scribo/demo/viewer/step_widget.cc | 122 +
scribo/demo/viewer/step_widget.hh | 57 +
scribo/demo/viewer/viewer.cc | 504 +++++
scribo/demo/viewer/viewer.hh | 88 +
scribo/demo/viewer/viewer.hxx | 31 +
scribo/demo/viewer/xml_widget.cc | 53 +
scribo/demo/viewer/xml_widget.hh | 41 +
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 | 71 +
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 | 28 +
scribo/demo/wizard/src/main_window.cc | 144 ++
scribo/demo/wizard/src/main_window.hh | 72 +
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 | 93 +
scribo/demo/wizard/src/preprocessing_widget.hh | 65 +
scribo/demo/wizard/src/process_page.cc | 68 +
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/result_page.cc | 43 +
scribo/demo/wizard/src/result_page.hh | 60 +
scribo/demo/wizard/src/result_widget.cc | 43 +
scribo/demo/wizard/src/result_widget.hh | 58 +
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 | 296 +++
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 | 71 +
scribo/demo/wizard/wizard.qrc | 5 +
scribo/draw/all.hh | 47 -
scribo/draw/bounding_box_links.hh | 417 ----
scribo/draw/bounding_boxes.hh | 109 -
scribo/estim/object_groups_v_thickness.hh | 102 -
scribo/filter/all.hh | 53 -
scribo/filter/common/objects_photo.hh | 98 -
scribo/filter/internal/compute.hh | 147 --
scribo/filter/object_groups_size_ratio.hh | 104 -
scribo/filter/object_groups_small.hh | 98 -
scribo/filter/object_groups_v_thickness.hh | 97 -
scribo/filter/object_links_bbox_h_ratio.hh | 99 -
scribo/filter/object_links_bbox_overlap.hh | 133 --
scribo/filter/object_links_bbox_ratio.hh | 112 -
scribo/filter/object_links_bbox_w_ratio.hh | 97 -
scribo/filter/object_links_bottom_aligned.hh | 120 -
scribo/filter/object_links_center_aligned.hh | 113 -
scribo/filter/object_links_non_aligned.hh | 138 --
scribo/filter/object_links_non_aligned_simple.hh | 186 --
scribo/filter/object_links_non_h_aligned.hh | 109 -
scribo/filter/object_links_non_v_aligned.hh | 122 -
scribo/filter/object_links_top_aligned.hh | 121 -
scribo/filter/objects_h_thick.hh | 196 --
scribo/filter/objects_h_thin.hh | 192 --
scribo/filter/objects_large.hh | 198 --
scribo/filter/objects_size_ratio.hh | 120 -
scribo/filter/objects_small.hh | 160 --
scribo/filter/objects_thick.hh | 191 --
scribo/filter/objects_thin.hh | 193 --
scribo/filter/objects_v_thick.hh | 196 --
scribo/filter/objects_v_thin.hh | 193 --
scribo/fun/v2b/objects_small_filter.hh | 129 --
scribo/headers.mk | 340 ++--
scribo/make/all.hh | 49 -
scribo/make/debug_filename.hh | 102 -
scribo/make/influence_zone_graph.hh | 116 -
scribo/make/text.hh | 180 --
scribo/preprocessing/all.hh | 46 -
scribo/preprocessing/split_bg_fg.hh | 340 ---
scribo/preprocessing/unskew.hh | 115 -
scribo/primitive/all.hh | 51 -
scribo/primitive/extract/all.hh | 67 -
scribo/primitive/extract/canvas.hh | 131 --
scribo/primitive/extract/cells.hh | 126 --
scribo/primitive/extract/lines_discontinued.hh | 152 --
scribo/primitive/extract/lines_h_discontinued.hh | 133 --
scribo/primitive/extract/lines_h_pattern.hh | 113 -
scribo/primitive/extract/lines_h_single.hh | 203 --
scribo/primitive/extract/lines_h_thick.hh | 129 --
.../primitive/extract/lines_h_thick_and_single.hh | 152 --
scribo/primitive/extract/lines_pattern.hh | 137 --
scribo/primitive/extract/lines_thick.hh | 138 --
scribo/primitive/extract/lines_v_discontinued.hh | 131 --
scribo/primitive/extract/lines_v_pattern.hh | 106 -
scribo/primitive/extract/lines_v_single.hh | 199 --
scribo/primitive/extract/lines_v_thick.hh | 129 --
.../primitive/extract/lines_v_thick_and_single.hh | 150 --
scribo/primitive/extract/objects.hh | 138 --
scribo/primitive/group/all.hh | 57 -
scribo/primitive/group/apply.hh | 126 --
scribo/primitive/group/from_double_link.hh | 129 --
scribo/primitive/group/from_graph.hh | 180 --
scribo/primitive/group/from_single_link.hh | 108 -
scribo/primitive/internal/all.hh | 60 -
scribo/primitive/internal/find_graph_link.hh | 111 -
scribo/primitive/internal/find_left_link.hh | 108 -
scribo/primitive/internal/find_right_link.hh | 108 -
scribo/primitive/internal/find_root.hh | 71 -
scribo/primitive/internal/have_link_valid.hh | 79 -
scribo/primitive/internal/init_link_array.hh | 71 -
scribo/primitive/internal/is_invalid_link.hh | 100 -
scribo/primitive/internal/is_link_valid.hh | 79 -
scribo/primitive/internal/update_graph_link.hh | 102 -
scribo/primitive/internal/update_link_array.hh | 105 -
scribo/primitive/link/all.hh | 60 -
scribo/primitive/link/compute.hh | 115 -
scribo/primitive/link/compute_several.hh | 117 -
scribo/primitive/link/internal/anchors_3.hh | 147 --
scribo/primitive/link/internal/find_link.hh | 116 -
.../primitive/link/internal/find_several_links.hh | 124 --
.../link/internal/link_center_dmax_base.hh | 179 --
.../link/internal/link_center_dmax_ratio_base.hh | 175 --
.../primitive/link/internal/link_functor_base.hh | 518 -----
.../primitive/link/internal/link_ms_dmax_base.hh | 165 --
.../link/internal/link_ms_dmax_ratio_base.hh | 168 --
scribo/primitive/link/merge_double_link.hh | 123 -
scribo/primitive/link/with_graph.hh | 125 --
scribo/primitive/link/with_rag.hh | 99 -
scribo/primitive/link/with_several_graphes.hh | 128 --
scribo/primitive/link/with_several_left_links.hh | 166 --
.../link/with_several_right_closest_links.hh | 215 --
scribo/primitive/link/with_several_right_links.hh | 169 --
.../link/with_several_right_links_overlap.hh | 152 --
scribo/primitive/link/with_single_left_link.hh | 159 --
.../link/with_single_left_link_dmax_ratio.hh | 167 --
scribo/primitive/link/with_single_right_link.hh | 158 --
.../link/with_single_right_link_bottom.hh | 161 --
.../link/with_single_right_link_dmax_ratio.hh | 167 --
.../primitive/link/with_single_right_link_top.hh | 161 --
scribo/sandbox/ChangeLog | 9 +
scribo/sandbox/green/ChangeLog | 264 +++
scribo/sandbox/green/README | 219 ++
scribo/sandbox/green/README.green | 416 ++++
scribo/sandbox/green/README.img | 124 ++
scribo/sandbox/green/README.result | 143 ++
.../green/bench/clustering/distance/Makefile.am | 153 ++
.../green/bench/clustering/distance/distance.cc | 842 +++++++
.../green/demo/clustering/kmean1d/Makefile.am | 153 ++
.../green/demo/clustering/kmean1d/kmean1d.cc | 258 +++
.../green/demo/clustering/kmean2d/Makefile.am | 153 ++
.../green/demo/clustering/kmean2d/kmean2d.cc | 278 +++
.../green/demo/clustering/kmean3d/Makefile.am | 153 ++
.../green/demo/clustering/kmean3d/kmean3d.cc | 265 +++
.../green/demo/clustering/kmean_rgb/Makefile.am | 153 ++
.../green/demo/clustering/kmean_rgb/kmean_rgb.cc | 239 ++
scribo/sandbox/green/gaussian.sh | 12 +
scribo/sandbox/green/gaussian2d.sh | 21 +
scribo/sandbox/green/mln/accu/stat/histo1d.hh | 337 +++
scribo/sandbox/green/mln/accu/stat/histo2d.hh | 346 +++
scribo/sandbox/green/mln/accu/stat/histo3d_hsl.hh | 388 ++++
scribo/sandbox/green/mln/accu/stat/histo3d_rgb.hh | 345 +++
scribo/sandbox/green/mln/clustering/k_mean.hh | 785 +++++++
scribo/sandbox/green/mln/clustering/kmean1d.hh | 1082 +++++++++
scribo/sandbox/green/mln/clustering/kmean2d.hh | 1344 +++++++++++
scribo/sandbox/green/mln/clustering/kmean3d.hh | 1345 +++++++++++
scribo/sandbox/green/mln/clustering/kmean_rgb.hh | 1042 +++++++++
scribo/sandbox/green/mln/display/display_histo.hh | 180 ++
scribo/sandbox/green/mln/display/project_histo.hh | 536 +++++
scribo/sandbox/green/mln/fun/p2b/achromatic.hh | 112 +
.../sandbox/green/mln/fun/p2b/component_equals.hh | 99 +
scribo/sandbox/green/mln/fun/v2v/achromatism.hh | 64 +
.../sandbox/green/mln/fun/v2v/hue_concentration.hh | 100 +
.../green/mln/fun/v2v/int_u16_to_int_u14.hh | 71 +
scribo/sandbox/green/mln/fun/v2v/log.hh | 70 +
scribo/sandbox/green/mln/fun/v2v/rg_to_rgb.hh | 119 +
scribo/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh | 71 +
scribo/sandbox/green/mln/fun/v2v/rgb8_to_rgbn.hh | 119 +
.../green/mln/fun/v2v/rgb_to_achromatism_map.hh | 77 +
scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh | 149 ++
scribo/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh | 96 +
scribo/sandbox/green/mln/fun/v2v/rgb_to_rg.hh | 109 +
.../green/mln/fun/v2v/rgb_to_saturation_map.hh | 83 +
.../sandbox/green/mln/fun/v2v/rgb_to_value_map.hh | 75 +
scribo/sandbox/green/mln/img_path.hh | 239 ++
scribo/sandbox/green/mln/io/plot/save_image_sh.hh | 1090 +++++++++
scribo/sandbox/green/mln/math/ceil.hh | 64 +
scribo/sandbox/green/mln/math/floor.hh | 64 +
scribo/sandbox/green/mln/value/hsv.hh | 424 ++++
scribo/sandbox/green/mln/value/rg.hh | 175 ++
scribo/sandbox/green/ok/mln/accu/histo/histo1d.hh | 334 +++
scribo/sandbox/green/ok/mln/accu/histo/histo2d.hh | 346 +++
scribo/sandbox/green/ok/mln/accu/histo/histo3d.hh | 349 +++
scribo/sandbox/green/ok/mln/img_path.hh | 239 ++
.../sandbox/green/ok/test/accu/histo/gaussian.sh | 12 +
scribo/sandbox/green/ok/test/accu/histo/histo1d | Bin 0 -> 802920 bytes
scribo/sandbox/green/ok/test/accu/histo/histo1d.cc | 726 ++++++
scribo/sandbox/green/test_labelling.cc | 336 +++
scribo/sandbox/green/test_labelling_2.cc | 342 +++
scribo/sandbox/green/test_labelling_3.cc | 463 ++++
.../green/tests/accu/stat/histo1d/Makefile.am | 153 ++
.../green/tests/accu/stat/histo1d/histo1d.cc | 507 +++++
.../green/tests/accu/stat/histo3d_hsl/Makefile.am | 153 ++
.../tests/accu/stat/histo3d_hsl/histo3d_hsl.cc | 391 ++++
.../green/tests/accu/stat/histo3d_rgb/Makefile.am | 153 ++
.../tests/accu/stat/histo3d_rgb/histo3d_rgb.cc | 397 ++++
.../green/tests/clustering/k_mean/Makefile.am | 153 ++
.../green/tests/clustering/k_mean/k_mean.cc | 547 +++++
.../green/tests/clustering/kmean1d/Makefile.am | 148 ++
.../green/tests/clustering/kmean1d/kmean1d.cc | 483 ++++
.../green/tests/io/plot/save_image_sh/Makefile.am | 153 ++
.../tests/io/plot/save_image_sh/save_image_sh.cc | 774 +++++++
.../green/use/accu/stat/histo1d/Makefile.am | 153 ++
.../sandbox/green/use/accu/stat/histo1d/histo1d.cc | 49 +
.../green/use/accu/stat/histo2d/Makefile.am | 153 ++
.../sandbox/green/use/accu/stat/histo2d/histo2d.cc | 58 +
.../green/use/accu/stat/histo3d_hsl/Makefile.am | 153 ++
.../green/use/accu/stat/histo3d_hsl/histo3d_hsl.cc | 59 +
.../green/use/accu/stat/histo3d_rgb/Makefile.am | 153 ++
.../green/use/accu/stat/histo3d_rgb/histo3d_rgb.cc | 57 +
.../green/use/clustering/k_mean/Makefile.am | 153 ++
.../sandbox/green/use/clustering/k_mean/k_mean.cc | 55 +
.../green/use/clustering/kmean1d/Makefile.am | 153 ++
.../green/use/clustering/kmean1d/kmean1d.cc | 50 +
.../green/use/clustering/kmean2d/Makefile.am | 153 ++
.../green/use/clustering/kmean2d/kmean2d.cc | 61 +
.../green/use/clustering/kmean3d/Makefile.am | 153 ++
.../green/use/clustering/kmean3d/kmean3d.cc | 63 +
.../green/use/clustering/kmean_rgb/Makefile.am | 153 ++
.../green/use/clustering/kmean_rgb/kmean_rgb.cc | 63 +
.../green/use/fun/v2v/rg_to_rgb/Makefile.am | 153 ++
.../green/use/fun/v2v/rg_to_rgb/rg_to_rgb.cc | 68 +
.../green/use/fun/v2v/rgb8_to_rgbn/Makefile.am | 153 ++
.../green/use/fun/v2v/rgb8_to_rgbn/rgb8_to_rgbn.cc | 57 +
.../green/use/fun/v2v/rgb_to_rg/Makefile.am | 153 ++
.../green/use/fun/v2v/rgb_to_rg/rgb_to_rg.cc | 58 +
.../green/use/io/plot/save_image_sh/Makefile.am | 153 ++
.../use/io/plot/save_image_sh/save_image_sh.cc | 53 +
scribo/sandbox/green/use/value/rg/Makefile.am | 153 ++
scribo/sandbox/green/use/value/rg/rg.cc | 58 +
scribo/sandbox/z/white_spaces/hom_sep.cc | 133 ++
.../sandbox/z/white_spaces/white_space_closing.cc | 123 +
scribo/sandbox/z/white_spaces/white_spaces.cc | 842 +++++++
scribo/scribo.mk | 9 +-
scribo/scribo/all.hh | 53 +
scribo/scribo/binarization/all.hh | 55 +
scribo/scribo/binarization/global_threshold.hh | 90 +
.../scribo/binarization/global_threshold_auto.hh | 168 ++
.../binarization/internal/first_pass_functor.hh | 173 ++
scribo/scribo/binarization/local_threshold.hh | 218 ++
scribo/scribo/binarization/sauvola.hh | 234 ++
scribo/scribo/binarization/sauvola_ms.hh | 988 +++++++++
scribo/scribo/binarization/sauvola_ms_split.hh | 168 ++
.../scribo/binarization/sauvola_threshold_image.hh | 616 ++++++
.../binarization/sauvola_threshold_image_debug.hh | 421 ++++
scribo/scribo/canvas/integral_browsing.hh | 422 ++++
scribo/scribo/convert/from_qimage.hh | 93 +
scribo/scribo/core/all.hh | 49 +
scribo/scribo/core/central_sites.hh | 94 +
scribo/scribo/core/component_info.hh | 203 ++
scribo/scribo/core/component_set.hh | 606 +++++
scribo/scribo/core/concept/dmax_functor.hh | 50 +
scribo/scribo/core/concept/link_functor.hh | 53 +
scribo/scribo/core/def/lbl_type.hh | 48 +
scribo/scribo/core/erase_objects.hh | 86 +
scribo/scribo/core/init_integral_image.hh | 96 +
scribo/scribo/core/line_info.hh | 937 ++++++++
scribo/scribo/core/line_set.hh | 421 ++++
scribo/scribo/core/macros.hh | 64 +
scribo/scribo/core/object_groups.hh | 262 +++
scribo/scribo/core/object_links.hh | 258 +++
scribo/scribo/core/tag/anchor.hh | 68 +
scribo/scribo/core/tag/component.hh | 121 +
scribo/scribo/core/tag/line.hh | 216 ++
scribo/scribo/debug/alignment_decision_image.hh | 185 ++
scribo/scribo/debug/all.hh | 49 +
scribo/scribo/debug/bboxes_enlarged_image.hh | 136 ++
scribo/scribo/debug/char_space_image.hh | 113 +
scribo/scribo/debug/decision_image.hh | 183 ++
scribo/scribo/debug/highlight_text_area.hh | 305 +++
scribo/scribo/debug/line_info_image.hh | 123 +
scribo/scribo/debug/links_decision_image.hh | 111 +
.../scribo/debug/looks_like_a_text_line_image.hh | 130 ++
scribo/scribo/debug/mean_and_base_lines_image.hh | 149 ++
scribo/scribo/debug/save_bboxes_image.hh | 174 ++
scribo/scribo/debug/save_comp_diff.hh | 105 +
scribo/scribo/debug/save_label_image.hh | 83 +
scribo/scribo/debug/save_linked_bboxes_image.hh | 277 +++
scribo/scribo/debug/save_table_image.hh | 131 ++
.../scribo/debug/several_links_decision_image.hh | 179 ++
scribo/scribo/debug/text_areas_image.hh | 133 ++
scribo/scribo/debug/usage.hh | 84 +
scribo/scribo/draw/all.hh | 47 +
scribo/scribo/draw/bounding_box_links.hh | 340 +++
scribo/scribo/draw/bounding_boxes.hh | 117 +
scribo/scribo/draw/groups_bboxes.hh | 93 +
scribo/scribo/estim/object_groups_v_thickness.hh | 106 +
scribo/scribo/filter/all.hh | 50 +
scribo/scribo/filter/common/objects_photo.hh | 98 +
scribo/scribo/filter/internal/alignment_angle.hh | 156 ++
scribo/scribo/filter/internal/component_aligned.hh | 114 +
scribo/scribo/filter/internal/compute.hh | 147 ++
scribo/scribo/filter/object_groups_size_ratio.hh | 105 +
scribo/scribo/filter/object_groups_small.hh | 100 +
scribo/scribo/filter/object_groups_v_thickness.hh | 99 +
scribo/scribo/filter/object_groups_with_holes.hh | 341 +++
scribo/scribo/filter/object_links_bbox_h_ratio.hh | 95 +
scribo/scribo/filter/object_links_bbox_overlap.hh | 128 ++
scribo/scribo/filter/object_links_bbox_ratio.hh | 111 +
scribo/scribo/filter/object_links_bbox_w_ratio.hh | 95 +
.../scribo/filter/object_links_bottom_aligned.hh | 115 +
.../scribo/filter/object_links_center_aligned.hh | 109 +
scribo/scribo/filter/object_links_left_aligned.hh | 118 +
.../filter/object_links_non_aligned_simple.hh | 131 ++
scribo/scribo/filter/object_links_right_aligned.hh | 118 +
scribo/scribo/filter/object_links_top_aligned.hh | 114 +
scribo/scribo/filter/objects_h_thick.hh | 192 ++
scribo/scribo/filter/objects_h_thin.hh | 196 ++
scribo/scribo/filter/objects_large.hh | 106 +
scribo/scribo/filter/objects_size_ratio.hh | 125 ++
scribo/scribo/filter/objects_small.hh | 150 ++
scribo/scribo/filter/objects_thick.hh | 191 ++
scribo/scribo/filter/objects_thin.hh | 191 ++
scribo/scribo/filter/objects_v_thick.hh | 192 ++
scribo/scribo/filter/objects_v_thin.hh | 196 ++
scribo/scribo/filter/objects_with_holes.hh | 466 ++++
scribo/scribo/fun/v2b/label_to_bool.hh | 66 +
scribo/scribo/fun/v2b/objects_large_filter.hh | 128 ++
scribo/scribo/fun/v2b/objects_small_filter.hh | 128 ++
scribo/scribo/io/text_boxes/save.hh | 102 +
scribo/scribo/io/xml/save.hh | 253 +++
scribo/scribo/make/all.hh | 49 +
scribo/scribo/make/debug_filename.hh | 102 +
scribo/scribo/make/influence_zone_graph.hh | 116 +
scribo/scribo/postprocessing/all.hh | 48 +
scribo/scribo/postprocessing/fill_object_holes.hh | 408 ++++
scribo/scribo/preprocessing/all.hh | 63 +
scribo/scribo/preprocessing/crop.hh | 84 +
.../preprocessing/crop_without_localization.hh | 99 +
scribo/scribo/preprocessing/denoise.hh | 106 +
scribo/scribo/preprocessing/denoise_bg.hh | 159 ++
scribo/scribo/preprocessing/denoise_fg.hh | 118 +
scribo/scribo/preprocessing/deskew.hh | 439 ++++
scribo/scribo/preprocessing/deskew_crop.hh | 187 ++
.../scribo/preprocessing/homogeneous_contrast.hh | 119 +
scribo/scribo/preprocessing/rotate_90.hh | 163 ++
scribo/scribo/preprocessing/split_bg_fg.hh | 341 +++
scribo/scribo/primitive/all.hh | 51 +
scribo/scribo/primitive/extract/all.hh | 68 +
scribo/scribo/primitive/extract/canvas.hh | 131 ++
scribo/scribo/primitive/extract/cells.hh | 126 ++
scribo/scribo/primitive/extract/components.hh | 147 ++
.../primitive/extract/horizontal_separators.hh | 95 +
.../scribo/primitive/extract/lines_discontinued.hh | 152 ++
.../primitive/extract/lines_h_discontinued.hh | 133 ++
scribo/scribo/primitive/extract/lines_h_pattern.hh | 126 ++
scribo/scribo/primitive/extract/lines_h_single.hh | 202 ++
scribo/scribo/primitive/extract/lines_h_thick.hh | 129 ++
.../primitive/extract/lines_h_thick_and_single.hh | 151 ++
scribo/scribo/primitive/extract/lines_pattern.hh | 298 +++
scribo/scribo/primitive/extract/lines_thick.hh | 137 ++
.../primitive/extract/lines_v_discontinued.hh | 131 ++
scribo/scribo/primitive/extract/lines_v_pattern.hh | 109 +
scribo/scribo/primitive/extract/lines_v_single.hh | 198 ++
scribo/scribo/primitive/extract/lines_v_thick.hh | 129 ++
.../primitive/extract/lines_v_thick_and_single.hh | 150 ++
scribo/scribo/primitive/extract/separators.hh | 98 +
.../primitive/extract/vertical_separators.hh | 95 +
scribo/scribo/primitive/group/all.hh | 58 +
scribo/scribo/primitive/group/apply.hh | 138 ++
scribo/scribo/primitive/group/from_double_link.hh | 125 ++
scribo/scribo/primitive/group/from_graph.hh | 180 ++
scribo/scribo/primitive/group/from_single_link.hh | 111 +
scribo/scribo/primitive/internal/all.hh | 57 +
.../scribo/primitive/internal/find_graph_link.hh | 115 +
scribo/scribo/primitive/internal/find_root.hh | 74 +
.../scribo/primitive/internal/have_link_valid.hh | 79 +
scribo/scribo/primitive/internal/is_link_valid.hh | 81 +
scribo/scribo/primitive/internal/rd.hh | 192 ++
.../scribo/primitive/internal/update_graph_link.hh | 102 +
scribo/scribo/primitive/link/all.hh | 61 +
scribo/scribo/primitive/link/compute.hh | 132 ++
scribo/scribo/primitive/link/compute_several.hh | 117 +
.../primitive/link/internal/compute_anchor.hh | 252 +++
.../scribo/primitive/link/internal/dmax_default.hh | 83 +
.../primitive/link/internal/dmax_functor_base.hh | 102 +
.../link/internal/dmax_width_and_height.hh | 98 +
.../primitive/link/internal/dmax_width_only.hh | 95 +
scribo/scribo/primitive/link/internal/find_link.hh | 114 +
.../primitive/link/internal/find_several_links.hh | 137 ++
.../primitive/link/internal/link_functor_base.hh | 516 +++++
.../link/internal/link_several_dmax_base.hh | 291 +++
.../link/internal/link_single_dmax_base.hh | 167 ++
.../link/internal/link_single_dmax_ratio_base.hh | 189 ++
scribo/scribo/primitive/link/merge_double_link.hh | 125 ++
scribo/scribo/primitive/link/with_graph.hh | 121 +
scribo/scribo/primitive/link/with_rag.hh | 103 +
.../scribo/primitive/link/with_several_graphes.hh | 127 ++
.../primitive/link/with_several_left_links.hh | 141 ++
.../link/with_several_right_closest_links.hh | 207 ++
.../primitive/link/with_several_right_links.hh | 143 ++
.../link/with_several_right_links_overlap.hh | 154 ++
.../scribo/primitive/link/with_single_down_link.hh | 181 ++
.../scribo/primitive/link/with_single_left_link.hh | 160 ++
.../link/with_single_left_link_dmax_ratio.hh | 221 ++
.../primitive/link/with_single_right_link.hh | 159 ++
.../link/with_single_right_link_bottom.hh | 162 ++
.../link/with_single_right_link_dmax_ratio.hh | 215 ++
.../primitive/link/with_single_right_link_top.hh | 163 ++
.../scribo/primitive/link/with_single_up_link.hh | 181 ++
.../primitive/regroup/from_single_left_link.hh | 144 ++
.../regroup/from_single_left_link_wrt_h_ratio.hh | 153 ++
scribo/scribo/primitive/remove/separators.hh | 114 +
scribo/scribo/subsampling/bilinear.hh | 119 +
scribo/scribo/subsampling/integral.hh | 420 ++++
scribo/scribo/subsampling/integral_single_image.hh | 460 ++++
scribo/scribo/table/align_lines_horizontaly.hh | 106 +
scribo/scribo/table/align_lines_verticaly.hh | 102 +
scribo/scribo/table/all.hh | 56 +
scribo/scribo/table/connect_horizontal_lines.hh | 99 +
scribo/scribo/table/connect_vertical_lines.hh | 97 +
scribo/scribo/table/erase.hh | 99 +
scribo/scribo/table/extract.hh | 118 +
scribo/scribo/table/internal/align_lines.hh | 199 ++
scribo/scribo/table/internal/all.hh | 55 +
scribo/scribo/table/internal/connect_lines.hh | 125 ++
scribo/scribo/table/internal/repair_lines.hh | 197 ++
scribo/scribo/table/rebuild.hh | 158 ++
scribo/scribo/table/repair_horizontal_lines.hh | 91 +
scribo/scribo/table/repair_vertical_lines.hh | 97 +
scribo/scribo/text/all.hh | 48 +
scribo/scribo/text/clean.hh | 127 ++
scribo/scribo/text/clean_inplace.hh | 147 ++
scribo/scribo/text/extract_lines.hh | 137 ++
scribo/scribo/text/look_like_text_lines.hh | 116 +
scribo/scribo/text/merging.hh | 922 ++++++++
scribo/scribo/text/recognition.hh | 269 +++
scribo/scribo/toolchain/nepomuk/text_extraction.hh | 163 ++
scribo/scribo/toolchain/text_in_doc.hh | 294 +++
scribo/scribo/upsampling/bs2x.hh | 147 ++
scribo/scribo/upsampling/eagle.hh | 149 ++
scribo/src/Makefile.am | 91 +-
scribo/src/README | 39 +
scribo/src/afp/components.hh | 228 ++
scribo/src/afp/link.hh | 178 ++
scribo/src/afp/regroup.hh | 119 +
scribo/src/binarization/Makefile.am | 80 +-
scribo/src/binarization/fg_sauvola_ms.cc | 108 +
.../src/binarization/pgm_global_threshold_auto.cc | 63 +
scribo/src/binarization/pgm_sauvola.cc | 80 +
scribo/src/binarization/pgm_sauvola_ms.cc | 111 +
scribo/src/binarization/ppm_fg_sauvola_ms.cc | 128 ++
scribo/src/binarization/ppm_sauvola.cc | 79 +
scribo/src/binarization/ppm_sauvola_ms.cc | 117 +
scribo/src/binarization/ppm_sauvola_ms_split.cc | 125 ++
scribo/src/binarization/sauvola.cc | 43 +-
scribo/src/binarization/sauvola_debug.cc | 116 +
scribo/src/binarization/sauvola_ms.cc | 398 +---
scribo/src/binarization/sauvola_ms_debug.cc | 147 ++
scribo/src/binarization/sauvola_ms_split.cc | 123 +
scribo/src/binarization/sauvola_pgm.cc | 63 -
scribo/src/binarization/simple.cc | 61 -
scribo/src/contest/Makefile.am | 23 +
scribo/src/contest/hdibco-2010/Makefile.am | 25 +
.../src/contest/hdibco-2010/sauvola_ms_hdibco.cc | 85 +
scribo/src/debug/Makefile.am | 39 +-
scribo/src/debug/highlight_text_area.cc | 97 +
.../src/debug/show_info_median_inter_characters.cc | 84 +
scribo/src/debug/show_info_x_height.cc | 79 +
.../src/debug/show_left_right_links_validation.cc | 122 -
scribo/src/debug/show_links_bbox_h_ratio.cc | 24 +-
scribo/src/debug/show_links_bbox_overlap.cc | 19 +-
scribo/src/debug/show_links_bottom_aligned.cc | 30 +-
scribo/src/debug/show_links_center_aligned.cc | 19 +-
.../show_links_left_right_links_validation.cc | 119 +
scribo/src/debug/show_links_non_h_aligned.cc | 25 +-
scribo/src/debug/show_links_several_right.cc | 27 +-
.../src/debug/show_links_several_right_overlap.cc | 79 +-
scribo/src/debug/show_links_single_down.cc | 158 ++
.../debug/show_links_single_down_left_aligned.cc | 101 +
.../debug/show_links_single_down_right_aligned.cc | 102 +
scribo/src/debug/show_links_single_left.cc | 40 +-
.../src/debug/show_links_single_left_dmax_ratio.cc | 48 +-
scribo/src/debug/show_links_single_right.cc | 41 +-
.../debug/show_links_single_right_dmax_ratio.cc | 40 +-
scribo/src/debug/show_links_single_up.cc | 160 ++
.../src/debug/show_links_single_up_left_aligned.cc | 103 +
.../debug/show_links_single_up_right_aligned.cc | 101 +
scribo/src/debug/show_links_top_aligned.cc | 34 +-
scribo/src/debug/show_objects_large.cc | 27 +-
scribo/src/debug/show_objects_large_small.cc | 41 +-
scribo/src/debug/show_objects_small.cc | 27 +-
scribo/src/debug/show_objects_thick.cc | 26 +-
scribo/src/debug/show_objects_thin.cc | 24 +-
scribo/src/filter/Makefile.am | 6 +-
scribo/src/filter/objects_large.cc | 30 +-
scribo/src/filter/objects_small.cc | 22 +-
scribo/src/filter/objects_thick.cc | 30 +-
scribo/src/filter/objects_thin.cc | 30 +-
scribo/src/filter/objects_with_holes.cc | 75 +
scribo/src/filter/objects_with_holes_pgm.cc | 76 +
scribo/src/misc/negate.cc | 5 +-
scribo/src/misc/superpose.cc | 7 +-
scribo/src/multi_scale/Makefile.am | 22 -
scribo/src/multi_scale/find_lines.cc | 180 --
scribo/src/pbm_text_in_doc.cc | 130 ++
scribo/src/postprocessing/Makefile.am | 26 +
scribo/src/postprocessing/fill_object_holes.cc | 67 +
scribo/src/preprocessing/Makefile.am | 60 +-
scribo/src/preprocessing/denoise_bg.cc | 67 +
scribo/src/preprocessing/denoise_fg.cc | 66 +
scribo/src/preprocessing/homogeneous_contrast.cc | 44 +
scribo/src/preprocessing/preprocess.cc | 27 +-
scribo/src/preprocessing/rotate.cc | 68 +
scribo/src/preprocessing/rotate_90.cc | 77 +
scribo/src/preprocessing/split_bg_fg.cc | 19 +-
scribo/src/preprocessing/subsample.cc | 67 +
scribo/src/preprocessing/to_pgm.cc | 46 +
scribo/src/preprocessing/unskew.cc | 22 +-
.../extract/extract_discontinued_hlines.cc | 26 +-
.../extract/extract_discontinued_lines.cc | 47 +-
.../extract/extract_discontinued_vlines.cc | 27 +-
.../src/primitive/extract/extract_thick_hlines.cc | 25 +-
.../src/primitive/extract/extract_thick_vlines.cc | 25 +-
scribo/src/primitive/extract/lines_pattern.cc | 6 +-
.../src/primitive/find/find_discontinued_lines.cc | 18 +-
scribo/src/primitive/find/find_pattern_lines.cc | 10 +-
scribo/src/primitive/find/find_single_lines.cc | 35 +-
.../primitive/find/find_thick_and_single_lines.cc | 29 +-
scribo/src/primitive/find/find_thick_lines.cc | 20 +-
scribo/src/primitive/group/Makefile.am | 15 +-
.../src/primitive/group/group_from_double_link.cc | 62 +-
.../group/group_from_double_several_links.cc | 34 +-
.../group/group_from_several_left_links.cc | 32 +-
.../src/primitive/group/group_from_single_link.cc | 62 +-
scribo/src/table/erase.cc | 15 +-
scribo/src/table/extract.cc | 7 +-
scribo/src/text/Makefile.am | 28 +-
scribo/src/text/cleantxt.cc | 45 +-
scribo/src/text/pbm_lines_recognition.cc | 107 +
scribo/src/text/pbm_recognition.cc | 75 +
scribo/src/text/recognition.cc | 101 -
scribo/src/text_in_doc.cc | 304 ---
scribo/src/text_in_doc_ppm.cc | 322 ---
scribo/src/text_in_doc_preprocess.cc | 103 +
scribo/src/text_in_photo.cc | 250 ---
scribo/src/text_in_photo_invert.cc | 245 --
scribo/src/text_in_photo_ppm.cc | 318 ---
scribo/src/text_in_picture.cc | 631 ++++++
scribo/src/text_recognition_in_picture.cc | 378 ++++
scribo/table/align_lines_horizontaly.hh | 101 -
scribo/table/align_lines_verticaly.hh | 102 -
scribo/table/all.hh | 56 -
scribo/table/connect_horizontal_lines.hh | 99 -
scribo/table/connect_vertical_lines.hh | 97 -
scribo/table/erase.hh | 99 -
scribo/table/extract.hh | 117 -
scribo/table/internal/align_lines.hh | 196 --
scribo/table/internal/all.hh | 55 -
scribo/table/internal/connect_lines.hh | 125 --
scribo/table/internal/repair_lines.hh | 197 --
scribo/table/rebuild.hh | 157 --
scribo/table/repair_horizontal_lines.hh | 91 -
scribo/table/repair_vertical_lines.hh | 97 -
scribo/tests/Makefile.am | 8 +-
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 | 25 +
scribo/tests/filter/Makefile.am | 3 +
scribo/tests/filter/objects_with_holes.cc | 62 +
scribo/tests/filter/small_and_large_bboxes.cc | 67 +-
scribo/tests/img/text_to_group.pgm | Bin 0 -> 3053 bytes
scribo/tests/img/wildly.pbm | Bin 0 -> 2208 bytes
scribo/tests/preprocessing/Makefile.am | 10 +-
scribo/tests/preprocessing/crop.cc | 52 +
.../preprocessing/crop_without_localization.cc | 56 +
scribo/tests/preprocessing/deskew.cc | 52 +
scribo/tests/preprocessing/rotate_90.cc | 59 +
scribo/tests/preprocessing/unskew.cc | 44 -
scribo/tests/table/extract_lines_with_rank.cc | 5 +-
scribo/tests/table/repair_lines.cc | 5 +-
scribo/tests/tests.mk | 23 +-
scribo/tests/toolchain/Makefile.am | 20 +
scribo/tests/toolchain/nepomuk/Makefile.am | 45 +
scribo/tests/toolchain/nepomuk/text_extraction.cc | 44 +
scribo/tests/unit_test/Makefile.am | 27 +-
scribo/tests/unit_test/build_unit_test.sh | 85 -
scribo/tests/unit_test/cond_tests_qt | 1 +
.../tests/unit_test/cond_tests_qt_tesseract_tiff | 1 +
scribo/tests/unit_test/cond_tests_tesseract_tiff | 1 +
scribo/tests/unit_test/disabled_tests | 3 +-
scribo/tests/unit_test/unit-tests.mk | 248 ++-
scribo/text/all.hh | 48 -
scribo/text/clean.hh | 156 --
scribo/text/extract_lines.hh | 152 --
scribo/text/recognition.hh | 193 --
scribo/util/all.hh | 46 -
scribo/util/text.hh | 278 ---
1214 files changed, 112985 insertions(+), 24587 deletions(-)
diff --cc milena/ChangeLog
index b4e98cd,7cbebec..7ba470c
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@@ -1,31 -1,751 +1,779 @@@
+ 2010-08-13 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix compilation with g++-3.3.
+
+ * mln/value/qt/rgb32.hh: Here.
+ (name()): Change the returned string value.
+
+ 2010-08-12 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * tests/unit_test/Makefile.am (DIST_FILES): Add missing files.
+
+ 2010-08-12 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Make Boost dependent tests conditional.
+
+ * tests/accu/Makefile.am (tuple): Add conditions.
+
+ * tests/unit_test/cond_tests_boost-preprocessor_boost-tuple: New.
+
+ * tests/unit_test/unit-tests.mk: Regen.
+
+ 2010-08-12 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes in Milena.
+
+ * mln/fun/v2v/saturate.hh: Add mln:: namespace prefix.
+
+ * mln/value/rgb.hh: Add a missing include.
+
+ * mln/accu/tuple.hh: Update include directive syntax.
+
+ 2010-08-12 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix more warnings in Milena.
+
+ * mln/convert/impl/from_float_to_value.hh: Add an overload for
+ short int.
+
+ * mln/io/fld/load.hh: Use convert::from_to.
+
+ * mln/io/fld/max_components.hh: Explicitly cast values to unsigned.
+
+ 2010-08-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix more tests in Milena.
+
+ * mln/fun/v2v/saturate.hh: Add a missing include.
+
+ * mln/subsampling/antialiased.hh: Increment pointer after the call
+ to convert::from_to.
+
+ * tests/subsampling/antialiased.cc: Fix references according to
+ last changes on 'round factor'.
+
+ 2010-08-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix warnings with g++-4.1 in Milena.
+
+ * mln/fun/v2v/saturate.hh,
+ * mln/subsampling/antialiased.hh,
+ * mln/value/rgb.hh: Use convert::from_to for type conversions.
+
+ 2010-08-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/core/point.hh: Fix a warning.
+
+ 2010-08-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix tests in Milena.
+
+ * mln/draw/dashed_line.hh,
+ * mln/fun/n2v/white_gaussian.hh,
+ * mln/fun/v2v/rgb_to_int_u.hh,
+ * mln/io/dump/get_header.hh,
+ * mln/io/raw/get_header.hh: Add missing includes.
+
+ * tests/topo/skeleton/crest.cc: Fix reference results since a bug
+ have been fixed.
+
+ * tests/unit_test/cond_tests_qt: Add conditional tests.
+
+ * tests/unit_test/unit-tests.mk: Regen.
+
+ 2010-08-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add missing traces.
+
+ * mln/convert/to_qimage.hh,
+ * mln/convert/to_qimage_nocopy.hh: Here.
+
+ 2010-08-11 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * headers.mk: Regen.
+
+ 2010-08-10 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix tests in Milena.
+
+ * tests/geom/rotate.cc: Fix test.
+
+ * mln/labeling/blobs_and_compute.hh: Add comments.
+
+ * mln/labeling/flat_zones.hh: Add missing members to functors.
+
+ * tests/labeling/blobs_and_compute.cc: Fix return type.
+
+ * tests/labeling/flat_zones.cc,
+ * tests/labeling/foreground.cc: Fix functor template parameters.
+
+ * tests/labeling/relabel.cc: The number of components is not
+ updated anymore.
+
+ * tests/labeling/colorize.cc: Fix reference according to last
+ changes in labeling::colorize routine.
+
+ * mln/core/point.hh: Add mln:: namespace prefix.
+
+ 2010-08-10 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/io/dicom/get_header.hh: Add missing headers.
+
+ 2010-08-10 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Setup conditional unit-tests in Milena.
+
+ * tests/unit_test/Makefile.am
+ (regen-am): Update the use of build_unit_test.sh.
+ (EXTRA_DIST): Add cond_tests_* files.
+
+ * tests/unit_test/cond_tests_cfitsio,
+ * tests/unit_test/cond_tests_gdcm,
+ * tests/unit_test/cond_tests_magickxx,
+ * tests/unit_test/cond_tests_tiff: New.
+
+ * tests/unit_test/disabled_tests: Remove some conditional tests.
+
+ * tests/unit_test/unit-tests.mk: Regen.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small changes in Milena.
+
+ * mln/accu/internal/base.hh,
+ * mln/accu/math/sum.hh: Aesthetic changes.
+
+ * mln/data/paste_without_localization.hh: Add a missing include.
+
+ * mln/geom/rotate.hh: Add a new overload taking a box as argument.
+
+ 2010-08-04 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Replace deduced type 'point' by 'site'.
+
+ * mln/geom/max_col.hh,
+ * mln/geom/max_row.hh,
+ * mln/geom/min_col.hh,
+ * mln/geom/min_row.hh: Replace deduced type 'point' by 'site'.
+
+ 2010-07-06 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes in milena.
+
+ * doc/figures/ima2d-rot-2.ppm: Update generated output.
+
+ * mln/core/alias/window2d.hh: Aesthetic changes in the header.
+
+ * mln/core/point.hh: Add mln:: prefix.
+
+ * headers.mk,
+ * tests/unit_test/unit-tests.mk: Regen.
+
+ 2010-06-21 Yann Jacquelet <jacquelet(a)lrde.epita.fr>
+
+ Fix the way to convert unsigned to float.
+
+ * mln/convert/from_to.hxx: New conversion utilities.
+ * mln/convert/impl/from_unsigned_to_value.hh: New conversion utilities.
+
+ 2009-12-02 Yann Jacquelet <jacquelet(a)lrde.epita.fr>
+
+ Fix the outside template use case for the convolve macros.
+
+ * mln/linear/ch_convolve.hh (mln_ch_convolve_, mln_ch_convolve_grad_):
+ Define new macros to work outside templates.
+
+ 2010-06-28 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Revamp and fix a bug in io::magick::*.
+
+ * mln/io/magick/load.hh: Revamp.
+
+ * mln/io/magick/save.hh: Fix a bug while saving. RGB values must
+ be between 0 and 1.
+
+ * tests/io/magick/save.cc: Remove useless output.
+
+ 2010-06-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add new tests.
+
+ * tests/convert/Makefile.am,
+ * tests/subsampling/Makefile.am: Add targets for these new tests.
+
+ * tests/convert/to_qimage.cc,
+ * tests/convert/to_qimage_nocopy.cc,
+ * tests/subsampling/antialiased.cc: New.
+
+ 2010-06-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix conversion routines towards qimage.
+
+ * mln/convert/to_qimage.hh: Fix invalid conversions.
+
+ * mln/convert/to_qimage_nocopy.hh: Avoid a warning.
+
+ 2010-06-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/accu/count_value.hh: Add properties.
+
+ 2010-06-18 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix a bug in conversions from vec to point.
+
+ * milena/mln/core/concept/gpoint.hh: Fix comment.
+
+ * milena/mln/core/image/image1d.hh: Share a dpoint value.
+
+ * milena/mln/core/point.hh: Handle point1d.
+
+ 2010-06-15 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Introduce labeling::value_and_compute.
+
+ * mln/canvas/labeling/video.hh: Call more functor members.
+
+ * mln/labeling/value.hh: Provide new members to the functor.
+
+ * mln/labeling/value_and_compute.hh: New functor computing
+ attributes while labeling.
+
+ 2010-05-18 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/io/magick/load.hh: set minimum resolution for PDF files to
+ 300DPI.
+
+ 2010-07-01 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix a few tests.
+
+ * tests/core/other/box_runstart_piter.cc,
+ * tests/geom/translate.cc: Fix test.
+
+ 2010-07-01 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Update generated images included in the doc.
+
+ * doc/figures/fill-subdomain-3.ppm,
+ * doc/figures/ima2d-rot-2.ppm,
+ * doc/figures/labeling-compute-2.ppm,
+ * doc/figures/tuto3_colorize-2.ppm,
+ * doc/figures/tuto4_genericity_and_algorithms-5.ppm: Update
+ generated images.
+
+ 2010-07-01 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add from_to overloads for conversions from algebra::vec to point.
+
+ * mln/convert/from_to.hxx: Add new prototypes.
+
+ * mln/core/point.hh: Add new from_to overloads. Remove specialized
+ constructors causing ambiguities.
+
+ 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-07-19 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix and improve the Magick++ I/O API wrapper.
+
+ * mln/io/magick/load.hh
+ (io::magick::do_it): Enclose these helpers...
+ (io::magick::impl::do_it): ...in a sub-namespace.
+ (io::magick::load): Ensure a Magick++'s Quantum is an 8-bit value.
+ Use a pixel view (Magick::Pixels) to access to pixel values.
+ No longer pass the input filename to the `do_it' helper.
+ Simplify the code.
+ Improve the documentation.
+ Aesthetic changes.
+ * mln/io/magick/save.hh
+ (io::magick::get_color): Enclose these helpers...
+ (io::magick::impl::get_color): ...in a sub-namespace.
+ Properly use Magick::Color.
+ Properly pass the width and the height of the image.
+ Use a pixel view (Magick::Pixels) to access to pixel values.
+ Simplify the code.
+ Aesthetic changes.
+ * tests/io/magick/load.cc,
+ * tests/io/magick/save.cc:
+ Properly initialize Magick++.
+ Exercice more cases.
+ * tests/io/magick/Makefile.am (MOSTLYCLEANFILES):
+ Update the list of files created by tests.
+
2010-04-26 Roland Levillain <roland(a)lrde.epita.fr>
Clean Milena's tests' outputs during `make mostlyclean'.
diff --cc milena/mln/io/magick/load.hh
index 662e67c,625134f..f961ccb
--- a/milena/mln/io/magick/load.hh
+++ b/milena/mln/io/magick/load.hh
@@@ -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.
//
@@@ -139,26 -114,51 +140,27 @@@ namespace ml
{
trace::entering("mln::io::magick::load");
- I& ima = exact(ima_);
+ // Ensure a Magick++'s Quantum is an 8-bit value.
+ mln::metal::equal<Magick::Quantum, unsigned char>::check();
- Magick::Image im_file;
- im_file.ping(filename);
-
-// if (im_file)
-// {
-// std::cerr << "error: cannot open file '" << filename << "'!";
-// abort();
-// }
+ I& ima = exact(ima_);
- // Force a minimum resolution of 300DPI for PDF document.
- if (im_file.magick() == "PDF"
- && (im_file.xResolution() < 300
- || im_file.yResolution() < 300))
- {
- im_file.density(Magick::Geometry(300, 300));
- }
+ // FIXME: Handle Magick++'s exceptions (see either
+ // ImageMagick++'s or GraphicsMagick++'s documentation).
+ Magick::Image magick_ima(filename);
+ magick_ima.read(filename);
+ magick_ima.type(Magick::TrueColorType);
+ int nrows = magick_ima.rows();
+ int ncols = magick_ima.columns();
+ mln_site(I) pmin(0, 0);
+ mln_site(I) pmax(nrows - 1, ncols - 1);
+
- im_file.read(filename);
-
-
- im_file.modifyImage();
- im_file.type(Magick::TrueColorType);
- int columns = im_file.columns();
- int rows = im_file.rows();
- /*std::cout << "width: " <<columns << std::endl;
- std::cout << "height: " <<rows << std::endl;
- std::cout << "depth: " <<im_file.depth() << std::endl;
- std::cout << "format: " <<im_file.format() << std::endl;
- std::cout << "magick: " <<im_file.magick() << std::endl;*/
-
- const Magick::PixelPacket *
- pixel_cache = im_file.getConstPixels(0, 0, columns, rows);
-
- algebra::vec<mln_site_(I)::dim, unsigned int> vmin;
- algebra::vec<mln_site_(I)::dim, unsigned int> vmax;
- vmin[0] = 0;
- vmin[1] = 0;
- vmax[0] = rows - 1;
- vmax[1] = columns - 1;
- mln_site(I) pmin(vmin);
- mln_site(I) pmax(vmax);
mln_concrete(I) result(box<mln_site(I)>(pmin, pmax));
initialize(ima, result);
+
+ Magick::Pixels view(magick_ima);
+ // Note that `ncols' is passed before `nrows'.
+ Magick::PixelPacket* pixels = view.get(0, 0, ima.ncols(), ima.nrows());
mln_piter(I) p(ima.domain());
for_all(p)
{
diff --cc milena/mln/io/magick/save.hh
index d524564,72613c2..3d3a05b
--- a/milena/mln/io/magick/save.hh
+++ b/milena/mln/io/magick/save.hh
@@@ -28,23 -29,17 +29,24 @@@
/// \file
///
-/// Define a function which saves an image of kind magick with
-/// given path.
+/// \brief Image output routines based on Magick++.
///
-/// \todo At the moment it works; is it a miracle?
+/// Do not forget to call Magick::InitializeMagick(*argv)
+/// <em>before</em> using any of these functions, as advised by the
+/// GraphicsMagick documentation
+/// (http://www.graphicsmagick.org/Magick++/Image.html)
+
+# include <cstdlib>
+
+# include <Magick++.h>
-# include <mln/core/image/image2d.hh>
# include <mln/metal/equal.hh>
+
+# include <mln/core/image/image2d.hh>
+
# include <mln/value/int_u8.hh>
# include <mln/value/rgb8.hh>
+ # include <mln/value/qt/rgb32.hh>
-# include <Magick++.h>
namespace mln
@@@ -79,53 -72,52 +81,53 @@@
# ifndef MLN_INCLUDE_ONLY
- inline
- Magick::Color get_color(bool value)
+ namespace impl
{
- return Magick::ColorMono(value);
- }
- // Gray values must be between 0 and 1.
- inline
- Magick::Color get_color(const value::int_u8& value)
- {
- return Magick::ColorGray(value / 255.0f);
- }
+ inline
+ Magick::Color get_color(bool value)
+ {
+ return Magick::ColorMono(value);
+ }
- // Color values must be between 0 and 1.
- inline
- Magick::Color get_color(const value::rgb8& value)
- {
- return Magick::ColorRGB(value.red() / 255.0f,
- value.green() / 255.0f,
- value.blue() / 255.0f);
- }
+ inline
+ Magick::Color get_color(const value::int_u8& value)
+ {
+ // Ensure a Magick++'s Quantum is an 8-bit value.
+ mln::metal::equal<Magick::Quantum, unsigned char>::check();
+ return Magick::Color(value, value, value);
+ }
- // Color values must be between 0 and 1.
- inline
- Magick::Color get_color(const value::qt::rgb32& value)
- {
- return Magick::ColorRGB(value.red() / 255.0f,
- value.green() / 255.0f,
- value.blue() / 255.0f);
- }
+ inline
+ Magick::Color get_color(const value::rgb8& value)
+ {
+ // Ensure a Magick++'s Quantum is an 8-bit value.
+ mln::metal::equal<Magick::Quantum, unsigned char>::check();
+ return Magick::Color(value.red(), value.green(), value.blue());
+ }
+
+ } // end of namespace mln::io::magick::impl
-
template <typename I>
inline
- void save(const Image<I>& ima_, const std::string& filename)
+ void
+ save(const Image<I>& ima_, const std::string& filename)
{
trace::entering("mln::io::magick::save");
mln_precondition(mln_site_(I)::dim == 2);
- const I& ima = exact(ima_);
+ // Turn this into a static check?
if (!(mln::metal::equal<mln_value(I), bool>::value ||
mln::metal::equal<mln_value(I), value::int_u8>::value ||
- mln::metal::equal<mln_value(I), value::rgb8>::value))
+ mln::metal::equal<mln_value(I), value::rgb8>::value ||
+ mln::metal::equal<mln_value(I), value::qt::rgb32>::value))
{
- std::cerr << "error: trying to save an unsupported format" << std::endl;
- std::cerr << "supported formats: binary, 8bits grayscale (int_u8), 8bits truecolor (rgb8)" << std::endl;
+ std::cerr <<
+ "error: trying to save an unsupported format\n"
+ "supported formats are:\n"
+ " binary (bool)\n"
+ " 8-bit grayscale (mln::value::int_u8)\n"
+ " 3x8-bit truecolor (rgb8)" << std::endl;
abort();
}
diff --cc milena/tests/io/magick/save.cc
index 9f5eae7,a6361c6..d01643e
--- a/milena/tests/io/magick/save.cc
+++ b/milena/tests/io/magick/save.cc
@@@ -24,38 -25,28 +25,38 @@@
// executable file might be covered by the GNU General Public License.
#include <mln/core/image/image2d.hh>
+
+#include <mln/data/compare.hh>
+
#include <mln/io/magick/load.hh>
#include <mln/io/magick/save.hh>
+
+#include <mln/io/pbm/load.hh>
+#include <mln/io/pbm/save.hh>
+
+#include <mln/io/pgm/load.hh>
+#include <mln/io/pgm/save.hh>
+
#include <mln/io/ppm/load.hh>
-#include <mln/data/compare.hh>
+#include <mln/io/ppm/save.hh>
+
#include "tests/data.hh"
-
-#include <mln/io/magick/load.hh>
+
-int main()
-{
- using namespace mln;
+using namespace mln;
- point2d p(0,0);
- image2d<value::rgb8> lena_mln;
- io::ppm::load(lena_mln, MLN_IMG_DIR "/tiny.ppm");
- value::rgb8 c = lena_mln(p);
+template <typename T>
+image2d<T>
+test(const image2d<T>& lena_mln, const std::string& temp_filename)
+{
+ point2d p(0,0);
- io::magick::save(lena_mln, "save-tiny.png");
+ T c = lena_mln(p);
- image2d<value::rgb8> lena_im;
- io::magick::load(lena_im, "save-tiny.png");
+ io::magick::save(lena_mln, temp_filename);
+ image2d<T> lena_im;
+ io::magick::load(lena_im, temp_filename);
mln_assertion(lena_im(p) == c);
mln_assertion(lena_im.domain() == lena_mln.domain());
diff --cc scribo/ChangeLog
index 3f0ee54,2dd5cb4..6bdcf0c
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@@ -1,10 -1,2321 +1,2328 @@@
+ 2010-08-13 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * scribo/debug/text_areas_image.hh: Add a typedef to help g++-3.3.
+
+ 2010-08-12 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * scribo/preprocessing/rotate_90.hh: Add a typedef to help
+ g++-3.3.
+
+ 2010-08-12 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix invalid pointer offset types.
+
+ * scribo/preprocessing/rotate_90.hh
+ (out_next_offset, out_next_p_offset): Fix a wrong type leading to
+ overflows.
+ (output): Add an assertion checking its validity.
+
+ 2010-08-10 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix warnings with g++-4.1 in Scribo.
+
+ * scribo/binarization/internal/first_pass_functor.hh,
+ * scribo/binarization/sauvola_ms.hh,
+ * scribo/binarization/sauvola_threshold_image.hh,
+ * scribo/binarization/sauvola_threshold_image_debug.hh,
+ * scribo/postprocessing/fill_object_holes.hh,
+ * scribo/preprocessing/deskew.hh,
+ * scribo/primitive/extract/lines_pattern.hh,
+ * scribo/subsampling/bilinear.hh,
+ * scribo/subsampling/integral_single_image.hh,
+ * scribo/text/clean_inplace.hh,
+ * src/debug/show_links_several_right_overlap.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_left.cc,
+ * src/debug/show_links_single_right.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: explicitly
+ convert to a specific type when necessary.
+
+ 2010-08-10 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Regen headers.mk and unit-tests.mk in Scribo.
+
+ * headers.mk,
+ * tests/unit_test/unit-tests.mk: Regen.
+
+ 2010-08-10 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Update READMEs.
+
+ * README,
+ * src/README: Add few details about the content.
+
+ 2010-08-10 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Update Scribo include paths.
+
+ * Makefile.am,
+ * tests/unit_test/Makefile.am: Fix path of generated header list.
+
+ * src/text_in_picture.cc,
+ * src/text_recognition_in_picture.cc,
+ * tests/filter/objects_with_holes.cc,
+ * tests/filter/small_and_large_bboxes.cc,
+ * tests/preprocessing/crop.cc,
+ * tests/preprocessing/crop_without_localization.cc,
+ * tests/preprocessing/deskew.cc,
+ * tests/preprocessing/rotate_90.cc,
+ * tests/table/extract_lines_with_rank.cc,
+ * tests/table/repair_lines.cc,
+ * tests/toolchain/nepomuk/text_extraction.cc: Fix path to data.hh.
+
+ * demo/demat/demat.pro,
+ * demo/wizard/wizard.pro,
+ * scribo.mk,
+ * tests/tests.mk: Set correct path to Scribo includes.
+
+ * headers.mk,
+ * tests/unit_test/unit-tests.mk: Regen.
+
+ 2010-08-10 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Move Scribo includes in a specific directory.
+
+ * all.hh,
+ * binarization/all.hh,
+ * binarization/global_threshold.hh,
+ * binarization/global_threshold_auto.hh,
+ * binarization/internal/first_pass_functor.hh,
+ * binarization/local_threshold.hh,
+ * binarization/sauvola.hh,
+ * binarization/sauvola_ms.hh,
+ * binarization/sauvola_ms_split.hh,
+ * binarization/sauvola_threshold_image.hh,
+ * binarization/sauvola_threshold_image_debug.hh,
+ * canvas/integral_browsing.hh,
+ * convert/from_qimage.hh,
+ * core/all.hh,
+ * core/central_sites.hh,
+ * core/component_info.hh,
+ * core/component_set.hh,
+ * core/concept/dmax_functor.hh,
+ * core/concept/link_functor.hh,
+ * core/def/lbl_type.hh,
+ * core/erase_objects.hh,
+ * core/init_integral_image.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,
+ * debug/alignment_decision_image.hh,
+ * debug/all.hh,
+ * debug/bboxes_enlarged_image.hh,
+ * debug/char_space_image.hh,
+ * debug/decision_image.hh,
+ * debug/highlight_text_area.hh,
+ * debug/line_info_image.hh,
+ * debug/links_decision_image.hh,
+ * debug/looks_like_a_text_line_image.hh,
+ * debug/mean_and_base_lines_image.hh,
+ * debug/save_bboxes_image.hh,
+ * debug/save_comp_diff.hh,
+ * debug/save_label_image.hh,
+ * debug/save_linked_bboxes_image.hh,
+ * debug/save_table_image.hh,
+ * debug/several_links_decision_image.hh,
+ * debug/text_areas_image.hh,
+ * debug/usage.hh,
+ * draw/all.hh,
+ * draw/bounding_box_links.hh,
+ * draw/bounding_boxes.hh,
+ * draw/groups_bboxes.hh,
+ * estim/object_groups_v_thickness.hh,
+ * filter/all.hh,
+ * filter/common/objects_photo.hh,
+ * filter/internal/alignment_angle.hh,
+ * filter/internal/component_aligned.hh,
+ * filter/internal/compute.hh,
+ * filter/object_groups_size_ratio.hh,
+ * filter/object_groups_small.hh,
+ * filter/object_groups_v_thickness.hh,
+ * filter/object_groups_with_holes.hh,
+ * filter/object_links_bbox_h_ratio.hh,
+ * filter/object_links_bbox_overlap.hh,
+ * filter/object_links_bbox_ratio.hh,
+ * filter/object_links_bbox_w_ratio.hh,
+ * filter/object_links_bottom_aligned.hh,
+ * filter/object_links_center_aligned.hh,
+ * filter/object_links_left_aligned.hh,
+ * filter/object_links_non_aligned_simple.hh,
+ * filter/object_links_right_aligned.hh,
+ * filter/object_links_top_aligned.hh,
+ * filter/objects_h_thick.hh,
+ * filter/objects_h_thin.hh,
+ * filter/objects_large.hh,
+ * filter/objects_size_ratio.hh,
+ * filter/objects_small.hh,
+ * filter/objects_thick.hh,
+ * filter/objects_thin.hh,
+ * filter/objects_v_thick.hh,
+ * filter/objects_v_thin.hh,
+ * filter/objects_with_holes.hh,
+ * fun/v2b/label_to_bool.hh,
+ * fun/v2b/objects_large_filter.hh,
+ * fun/v2b/objects_small_filter.hh,
+ * io/text_boxes/save.hh,
+ * io/xml/save.hh,
+ * make/all.hh,
+ * make/debug_filename.hh,
+ * make/influence_zone_graph.hh,
+ * postprocessing/all.hh,
+ * postprocessing/fill_object_holes.hh,
+ * preprocessing/all.hh,
+ * preprocessing/crop.hh,
+ * preprocessing/crop_without_localization.hh,
+ * preprocessing/denoise.hh,
+ * preprocessing/denoise_bg.hh,
+ * preprocessing/denoise_fg.hh,
+ * preprocessing/deskew.hh,
+ * preprocessing/deskew_crop.hh,
+ * preprocessing/homogeneous_contrast.hh,
+ * preprocessing/rotate_90.hh,
+ * preprocessing/split_bg_fg.hh,
+ * primitive/all.hh,
+ * primitive/extract/all.hh,
+ * primitive/extract/canvas.hh,
+ * primitive/extract/cells.hh,
+ * primitive/extract/components.hh,
+ * primitive/extract/horizontal_separators.hh,
+ * primitive/extract/lines_discontinued.hh,
+ * primitive/extract/lines_h_discontinued.hh,
+ * primitive/extract/lines_h_pattern.hh,
+ * primitive/extract/lines_h_single.hh,
+ * primitive/extract/lines_h_thick.hh,
+ * primitive/extract/lines_h_thick_and_single.hh,
+ * primitive/extract/lines_pattern.hh,
+ * primitive/extract/lines_thick.hh,
+ * primitive/extract/lines_v_discontinued.hh,
+ * primitive/extract/lines_v_pattern.hh,
+ * primitive/extract/lines_v_single.hh,
+ * primitive/extract/lines_v_thick.hh,
+ * primitive/extract/lines_v_thick_and_single.hh,
+ * primitive/extract/separators.hh,
+ * primitive/extract/vertical_separators.hh,
+ * primitive/group/all.hh,
+ * primitive/group/apply.hh,
+ * primitive/group/from_double_link.hh,
+ * primitive/group/from_graph.hh,
+ * primitive/group/from_single_link.hh,
+ * primitive/internal/all.hh,
+ * primitive/internal/find_graph_link.hh,
+ * primitive/internal/find_root.hh,
+ * primitive/internal/have_link_valid.hh,
+ * primitive/internal/is_link_valid.hh,
+ * primitive/internal/rd.hh,
+ * primitive/internal/update_graph_link.hh,
+ * primitive/link/all.hh,
+ * primitive/link/compute.hh,
+ * primitive/link/compute_several.hh,
+ * primitive/link/internal/compute_anchor.hh,
+ * primitive/link/internal/dmax_default.hh,
+ * primitive/link/internal/dmax_functor_base.hh,
+ * primitive/link/internal/dmax_width_and_height.hh,
+ * primitive/link/internal/dmax_width_only.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_graph.hh,
+ * primitive/link/with_rag.hh,
+ * primitive/link/with_several_graphes.hh,
+ * primitive/link/with_several_left_links.hh,
+ * primitive/link/with_several_right_closest_links.hh,
+ * primitive/link/with_several_right_links.hh,
+ * primitive/link/with_several_right_links_overlap.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_bottom.hh,
+ * primitive/link/with_single_right_link_dmax_ratio.hh,
+ * primitive/link/with_single_right_link_top.hh,
+ * primitive/link/with_single_up_link.hh,
+ * primitive/regroup/from_single_left_link.hh,
+ * primitive/regroup/from_single_left_link_wrt_h_ratio.hh,
+ * primitive/remove/separators.hh,
+ * subsampling/bilinear.hh,
+ * subsampling/integral.hh,
+ * subsampling/integral_single_image.hh,
+ * table/align_lines_horizontaly.hh,
+ * table/align_lines_verticaly.hh,
+ * table/all.hh,
+ * table/connect_horizontal_lines.hh,
+ * table/connect_vertical_lines.hh,
+ * table/erase.hh,
+ * table/extract.hh,
+ * table/internal/align_lines.hh,
+ * table/internal/all.hh,
+ * table/internal/connect_lines.hh,
+ * table/internal/repair_lines.hh,
+ * table/rebuild.hh,
+ * table/repair_horizontal_lines.hh,
+ * table/repair_vertical_lines.hh,
+ * text/all.hh,
+ * text/clean.hh,
+ * text/clean_inplace.hh,
+ * text/extract_lines.hh,
+ * text/look_like_text_lines.hh,
+ * text/merging.hh,
+ * text/recognition.hh,
+ * toolchain/nepomuk/text_extraction.hh,
+ * toolchain/text_in_doc.hh,
+ * upsampling/bs2x.hh,
+ * upsampling/eagle.hh: Move...
+
+ * scribo/all.hh,
+ * scribo/binarization/all.hh,
+ * scribo/binarization/global_threshold.hh,
+ * scribo/binarization/global_threshold_auto.hh,
+ * scribo/binarization/internal/first_pass_functor.hh,
+ * scribo/binarization/local_threshold.hh,
+ * scribo/binarization/sauvola.hh,
+ * scribo/binarization/sauvola_ms.hh,
+ * scribo/binarization/sauvola_ms_split.hh,
+ * scribo/binarization/sauvola_threshold_image.hh,
+ * scribo/binarization/sauvola_threshold_image_debug.hh,
+ * scribo/canvas/integral_browsing.hh,
+ * scribo/convert/from_qimage.hh,
+ * scribo/core/all.hh,
+ * scribo/core/central_sites.hh,
+ * scribo/core/component_info.hh,
+ * scribo/core/component_set.hh,
+ * scribo/core/concept/dmax_functor.hh,
+ * scribo/core/concept/link_functor.hh,
+ * scribo/core/def/lbl_type.hh,
+ * scribo/core/erase_objects.hh,
+ * scribo/core/init_integral_image.hh,
+ * scribo/core/line_info.hh,
+ * scribo/core/line_set.hh,
+ * scribo/core/macros.hh,
+ * scribo/core/object_groups.hh,
+ * scribo/core/object_links.hh,
+ * scribo/core/tag/anchor.hh,
+ * scribo/core/tag/component.hh,
+ * scribo/core/tag/line.hh,
+ * scribo/debug/alignment_decision_image.hh,
+ * scribo/debug/all.hh,
+ * scribo/debug/bboxes_enlarged_image.hh,
+ * scribo/debug/char_space_image.hh,
+ * scribo/debug/decision_image.hh,
+ * scribo/debug/highlight_text_area.hh,
+ * scribo/debug/line_info_image.hh,
+ * scribo/debug/links_decision_image.hh,
+ * scribo/debug/looks_like_a_text_line_image.hh,
+ * scribo/debug/mean_and_base_lines_image.hh,
+ * scribo/debug/save_bboxes_image.hh,
+ * scribo/debug/save_comp_diff.hh,
+ * scribo/debug/save_label_image.hh,
+ * scribo/debug/save_linked_bboxes_image.hh,
+ * scribo/debug/save_table_image.hh,
+ * scribo/debug/several_links_decision_image.hh,
+ * scribo/debug/text_areas_image.hh,
+ * scribo/debug/usage.hh,
+ * scribo/draw/all.hh,
+ * scribo/draw/bounding_box_links.hh,
+ * scribo/draw/bounding_boxes.hh,
+ * scribo/draw/groups_bboxes.hh,
+ * scribo/estim/object_groups_v_thickness.hh,
+ * scribo/filter/all.hh,
+ * scribo/filter/common/objects_photo.hh,
+ * scribo/filter/internal/alignment_angle.hh,
+ * scribo/filter/internal/component_aligned.hh,
+ * scribo/filter/internal/compute.hh,
+ * scribo/filter/object_groups_size_ratio.hh,
+ * scribo/filter/object_groups_small.hh,
+ * scribo/filter/object_groups_v_thickness.hh,
+ * scribo/filter/object_groups_with_holes.hh,
+ * scribo/filter/object_links_bbox_h_ratio.hh,
+ * scribo/filter/object_links_bbox_overlap.hh,
+ * scribo/filter/object_links_bbox_ratio.hh,
+ * scribo/filter/object_links_bbox_w_ratio.hh,
+ * scribo/filter/object_links_bottom_aligned.hh,
+ * scribo/filter/object_links_center_aligned.hh,
+ * scribo/filter/object_links_left_aligned.hh,
+ * scribo/filter/object_links_non_aligned_simple.hh,
+ * scribo/filter/object_links_right_aligned.hh,
+ * scribo/filter/object_links_top_aligned.hh,
+ * scribo/filter/objects_h_thick.hh,
+ * scribo/filter/objects_h_thin.hh,
+ * scribo/filter/objects_large.hh,
+ * scribo/filter/objects_size_ratio.hh,
+ * scribo/filter/objects_small.hh,
+ * scribo/filter/objects_thick.hh,
+ * scribo/filter/objects_thin.hh,
+ * scribo/filter/objects_v_thick.hh,
+ * scribo/filter/objects_v_thin.hh,
+ * scribo/filter/objects_with_holes.hh,
+ * scribo/fun/v2b/label_to_bool.hh,
+ * scribo/fun/v2b/objects_large_filter.hh,
+ * scribo/fun/v2b/objects_small_filter.hh,
+ * scribo/io/text_boxes/save.hh,
+ * scribo/io/xml/save.hh,
+ * scribo/make/all.hh,
+ * scribo/make/debug_filename.hh,
+ * scribo/make/influence_zone_graph.hh,
+ * scribo/postprocessing/all.hh,
+ * scribo/postprocessing/fill_object_holes.hh,
+ * scribo/preprocessing/all.hh,
+ * scribo/preprocessing/crop.hh,
+ * scribo/preprocessing/crop_without_localization.hh,
+ * scribo/preprocessing/denoise.hh,
+ * scribo/preprocessing/denoise_bg.hh,
+ * scribo/preprocessing/denoise_fg.hh,
+ * scribo/preprocessing/deskew.hh,
+ * scribo/preprocessing/deskew_crop.hh,
+ * scribo/preprocessing/homogeneous_contrast.hh,
+ * scribo/preprocessing/rotate_90.hh,
+ * scribo/preprocessing/split_bg_fg.hh,
+ * scribo/primitive/all.hh,
+ * scribo/primitive/extract/all.hh,
+ * scribo/primitive/extract/canvas.hh,
+ * scribo/primitive/extract/cells.hh,
+ * scribo/primitive/extract/components.hh,
+ * scribo/primitive/extract/horizontal_separators.hh,
+ * scribo/primitive/extract/lines_discontinued.hh,
+ * scribo/primitive/extract/lines_h_discontinued.hh,
+ * scribo/primitive/extract/lines_h_pattern.hh,
+ * scribo/primitive/extract/lines_h_single.hh,
+ * scribo/primitive/extract/lines_h_thick.hh,
+ * scribo/primitive/extract/lines_h_thick_and_single.hh,
+ * scribo/primitive/extract/lines_pattern.hh,
+ * scribo/primitive/extract/lines_thick.hh,
+ * scribo/primitive/extract/lines_v_discontinued.hh,
+ * scribo/primitive/extract/lines_v_pattern.hh,
+ * scribo/primitive/extract/lines_v_single.hh,
+ * scribo/primitive/extract/lines_v_thick.hh,
+ * scribo/primitive/extract/lines_v_thick_and_single.hh,
+ * scribo/primitive/extract/separators.hh,
+ * scribo/primitive/extract/vertical_separators.hh,
+ * scribo/primitive/group/all.hh,
+ * scribo/primitive/group/apply.hh,
+ * scribo/primitive/group/from_double_link.hh,
+ * scribo/primitive/group/from_graph.hh,
+ * scribo/primitive/group/from_single_link.hh,
+ * scribo/primitive/internal/all.hh,
+ * scribo/primitive/internal/find_graph_link.hh,
+ * scribo/primitive/internal/find_root.hh,
+ * scribo/primitive/internal/have_link_valid.hh,
+ * scribo/primitive/internal/is_link_valid.hh,
+ * scribo/primitive/internal/rd.hh,
+ * scribo/primitive/internal/update_graph_link.hh,
+ * scribo/primitive/link/all.hh,
+ * scribo/primitive/link/compute.hh,
+ * scribo/primitive/link/compute_several.hh,
+ * scribo/primitive/link/internal/compute_anchor.hh,
+ * scribo/primitive/link/internal/dmax_default.hh,
+ * scribo/primitive/link/internal/dmax_functor_base.hh,
+ * scribo/primitive/link/internal/dmax_width_and_height.hh,
+ * scribo/primitive/link/internal/dmax_width_only.hh,
+ * scribo/primitive/link/internal/find_link.hh,
+ * scribo/primitive/link/internal/find_several_links.hh,
+ * scribo/primitive/link/internal/link_functor_base.hh,
+ * scribo/primitive/link/internal/link_several_dmax_base.hh,
+ * scribo/primitive/link/internal/link_single_dmax_base.hh,
+ * scribo/primitive/link/internal/link_single_dmax_ratio_base.hh,
+ * scribo/primitive/link/merge_double_link.hh,
+ * scribo/primitive/link/with_graph.hh,
+ * scribo/primitive/link/with_rag.hh,
+ * scribo/primitive/link/with_several_graphes.hh,
+ * scribo/primitive/link/with_several_left_links.hh,
+ * scribo/primitive/link/with_several_right_closest_links.hh,
+ * scribo/primitive/link/with_several_right_links.hh,
+ * scribo/primitive/link/with_several_right_links_overlap.hh,
+ * scribo/primitive/link/with_single_down_link.hh,
+ * scribo/primitive/link/with_single_left_link.hh,
+ * scribo/primitive/link/with_single_left_link_dmax_ratio.hh,
+ * scribo/primitive/link/with_single_right_link.hh,
+ * scribo/primitive/link/with_single_right_link_bottom.hh,
+ * scribo/primitive/link/with_single_right_link_dmax_ratio.hh,
+ * scribo/primitive/link/with_single_right_link_top.hh,
+ * scribo/primitive/link/with_single_up_link.hh,
+ * scribo/primitive/regroup/from_single_left_link.hh,
+ * scribo/primitive/regroup/from_single_left_link_wrt_h_ratio.hh,
+ * scribo/primitive/remove/separators.hh,
+ * scribo/subsampling/bilinear.hh,
+ * scribo/subsampling/integral.hh,
+ * scribo/subsampling/integral_single_image.hh,
+ * scribo/table/align_lines_horizontaly.hh,
+ * scribo/table/align_lines_verticaly.hh,
+ * scribo/table/all.hh,
+ * scribo/table/connect_horizontal_lines.hh,
+ * scribo/table/connect_vertical_lines.hh,
+ * scribo/table/erase.hh,
+ * scribo/table/extract.hh,
+ * scribo/table/internal/align_lines.hh,
+ * scribo/table/internal/all.hh,
+ * scribo/table/internal/connect_lines.hh,
+ * scribo/table/internal/repair_lines.hh,
+ * scribo/table/rebuild.hh,
+ * scribo/table/repair_horizontal_lines.hh,
+ * scribo/table/repair_vertical_lines.hh,
+ * scribo/text/all.hh,
+ * scribo/text/clean.hh,
+ * scribo/text/clean_inplace.hh,
+ * scribo/text/extract_lines.hh,
+ * scribo/text/look_like_text_lines.hh,
+ * scribo/text/merging.hh,
+ * scribo/text/recognition.hh,
+ * scribo/toolchain/nepomuk/text_extraction.hh,
+ * scribo/toolchain/text_in_doc.hh,
+ * scribo/upsampling/bs2x.hh,
+ * scribo/upsampling/eagle.hh: ... here.
+
+ 2010-08-10 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Setup conditional unit-tests in Scribo.
+
+ * tests/tests.mk: Add specific flags for external dependencies.
+
+ * tests/unit_test/Makefile.am
+ (EXTRA_DIST): Add const_tests_* files.
+ (regen-am): Use build-aux/build_unit_test.sh.
+ (scribo_*FLAGS): Remove specific flags for conditional unit-tests.
+
+ * tests/unit_test/build_unit_test.sh: Remove. Useless since
+ build-aux/build_unit_test.sh is used instead.
+
+ * tests/unit_test/cond_tests_qt,
+ * tests/unit_test/cond_tests_qt_tesseract_tiff,
+ * tests/unit_test/cond_tests_tesseract_tiff: New.
+
+ * tests/unit_test/unit-tests.mk: Regen.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * tests/unit_test/disabled_tests: Update list of disabled tests.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a new rotation tool.
+
+ * src/preprocessing/Makefile.am: Add a new target.
+
+ * src/preprocessing/rotate.cc: New.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Remove deprecated references to object_image.
+
+ * core/object_image.hh: Remove.
+
+ * filter/object_groups_size_ratio.hh,
+ * filter/object_links_bbox_w_ratio.hh,
+ * filter/object_links_left_aligned.hh,
+ * filter/object_links_right_aligned.hh,
+ * primitive/extract/lines_h_thick_and_single.hh,
+ * primitive/extract/lines_v_thick_and_single.hh,
+ * primitive/link/internal/find_several_links.hh,
+ * primitive/link/internal/link_several_dmax_base.hh,
+ * primitive/link/with_single_up_link.hh,
+ * src/debug/show_links_left_right_links_validation.cc,
+ * src/primitive/find/find_discontinued_lines.cc,
+ * src/primitive/find/find_pattern_lines.cc,
+ * tests/filter/small_and_large_bboxes.cc,
+ * src/primitive/group/group_from_double_link_filter_non_aligned.cc:
+ Remove include of object_image.hh.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Cleanup Makefiles.
+
+ * src/Makefile.am: Disable tests and remove deprecated ones.
+
+ * src/preprocessing/Makefile.am: Use MAGICKXX_* flags.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Cleanup and improve text recognition.
+
+ * src/text_recognition_in_picture.cc: Use new routines. Cleanup
+ useless comments. Use a height ratio filter to improve OCR
+ results.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Cleanup and make use of the new routines.
+
+ * src/text_in_picture.cc: Here.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Make use of the new component_set interface.
+
+ * filter/internal/compute.hh,
+ * filter/objects_small.hh,
+ * filter/objects_thick.hh,
+ * filter/objects_thin.hh,
+ * primitive/group/from_double_link.hh,
+ * primitive/link/compute_several.hh,
+ * table/align_lines_horizontaly.hh,
+ * table/erase.hh,
+ * table/extract.hh: Here.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix compilation of Scribo tools.
+
+ * src/debug/show_links_bbox_overlap.cc,
+ * src/debug/show_links_center_aligned.cc,
+ * src/debug/show_links_non_h_aligned.cc,
+ * src/debug/show_links_several_right.cc,
+ * src/debug/show_links_several_right_overlap.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_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,
+ * 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/debug/show_objects_large.cc,
+ * src/debug/show_objects_large_small.cc,
+ * src/debug/show_objects_small.cc,
+ * src/debug/show_objects_thick.cc,
+ * src/debug/show_objects_thin.cc,
+ * src/filter/objects_large.cc,
+ * src/filter/objects_small.cc,
+ * src/filter/objects_thick.cc,
+ * src/filter/objects_thin.cc,
+ * src/filter/objects_with_holes.cc,
+ * src/filter/objects_with_holes_pgm.cc,
+ * src/preprocessing/preprocess.cc,
+ * src/preprocessing/split_bg_fg.cc,
+ * src/preprocessing/unskew.cc,
+ * src/primitive/extract/extract_discontinued_hlines.cc,
+ * src/primitive/extract/extract_discontinued_lines.cc,
+ * src/primitive/extract/extract_discontinued_vlines.cc,
+ * src/primitive/extract/extract_thick_hlines.cc,
+ * src/primitive/extract/extract_thick_vlines.cc,
+ * src/primitive/find/find_discontinued_lines.cc,
+ * src/primitive/find/find_single_lines.cc,
+ * src/primitive/find/find_thick_and_single_lines.cc,
+ * src/primitive/find/find_thick_lines.cc,
+ * src/primitive/group/Makefile.am,
+ * src/primitive/group/group_from_double_link.cc,
+ * src/primitive/group/group_from_double_several_links.cc,
+ * src/primitive/group/group_from_several_left_links.cc,
+ * src/primitive/group/group_from_single_link.cc,
+ * src/table/erase.cc,
+ * src/text/cleantxt.cc: Here.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Catch up with the current interface of scribo::debug::usage.
+
+ * src/debug/show_links_bottom_aligned.cc,
+ * src/debug/show_links_top_aligned.cc,
+ * src/misc/negate.cc,
+ * src/misc/superpose.cc,
+ * src/preprocessing/rotate_90.cc,
+ * src/primitive/extract/lines_pattern.cc,
+ * src/primitive/find/find_pattern_lines.cc,
+ * src/table/extract.cc: Here.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Replace the use of object_image with component_set.
+
+ * core/erase_objects.hh,
+ * debug/several_links_decision_image.hh,
+ * filter/object_groups_size_ratio.hh,
+ * filter/object_links_bbox_w_ratio.hh,
+ * filter/object_links_center_aligned.hh,
+ * filter/object_links_left_aligned.hh,
+ * filter/object_links_right_aligned.hh,
+ * filter/objects_h_thick.hh,
+ * filter/objects_h_thin.hh,
+ * filter/objects_size_ratio.hh,
+ * filter/objects_v_thick.hh,
+ * filter/objects_v_thin.hh,
+ * primitive/extract/lines_h_thick_and_single.hh,
+ * primitive/extract/lines_v_thick_and_single.hh,
+ * primitive/group/from_graph.hh,
+ * primitive/internal/find_graph_link.hh,
+ * primitive/link/with_graph.hh,
+ * primitive/link/with_rag.hh,
+ * primitive/link/with_several_graphes.hh,
+ * primitive/link/with_several_left_links.hh,
+ * primitive/link/with_several_right_closest_links.hh,
+ * primitive/link/with_several_right_links.hh,
+ * primitive/link/with_single_down_link.hh,
+ * primitive/link/with_single_up_link.hh: Replace the use of
+ object_image with component_set.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes in Scribo.
+
+ * core/component_info.hh (is_valid): Check the bounding box
+ validity.
+
+ * core/macros.hh: Add a new macro.
+
+ * debug/decision_image.hh: Remove deprecated preconditions and add
+ missing includes.
+
+ * draw/bounding_boxes.hh: Check the component validity.
+
+ * filter/object_links_non_aligned_simple.hh: Update doc.
+
+ * filter/objects_with_holes.hh: Remove debug and timers. Add
+ missing includes.
+
+ * primitive/extract/lines_pattern.hh: Use the window template
+ parameter instead of an exact window type.
+
+ * primitive/link/internal/find_several_links.hh: Update code with
+ new interfaces.
+
+ * primitive/link/internal/link_functor_base.hh
+ (nanchors()): Remove this method.
+ (labeled_image()): Add a const version.
+
+ * primitive/link/internal/link_several_dmax_base.hh
+ (nanchors(), anchors()): New methods.
+ Introduce 'direction_' attribute.
+
+ * debug/several_links_decision_image.hh: Remove deprecated
+ preconditions.
+
+ * src/debug/show_links_single_left.cc: Update include.
+
+ * table/internal/align_lines.hh,
+ * table/rebuild.hh: Make use of component_set structure.
+
+ * debug/text_areas_image.hh,
+ * primitive/regroup/from_single_left_link_wrt_h_ratio.hh: Add
+ missing includes.
+
+ * src/contest/hdibco-2010/Makefile.am: Do not consider this tool
+ as a test anymore.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add missing includes and headers in AFP's dedicated code.
+
+ * src/afp/components.hh,
+ * src/afp/link.hh,
+ * src/afp/regroup.hh: Add missing includes and headers.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add new routines in Scribo.
+
+ * debug/highlight_text_area.hh,
+ * debug/save_bboxes_image.hh: Add a new overload.
+
+ * debug/save_comp_diff.hh,
+ * debug/text_areas_image.hh,
+ * primitive/regroup/from_single_left_link_wrt_h_ratio.hh: New.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Remove deprecated files.
+
+ * core/internal/link_functor_base.hh,
+ * debug/save_object_diff.hh,
+ * make/text.hh,
+ * primitive/internal/update_link_array.hh,
+ * primitive/link/internal/anchors_3.hh,
+ * primitive/link/internal/link_ms_dmax_base.hh,
+ * primitive/link/internal/link_ms_dmax_ratio_base.hh,
+ * src/pbm_lines_in_doc.cc: Remove.
+
+ 2010-08-09 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix many tests in Scribo.
+
+ * all.hh,
+ * binarization/all.hh,
+ * binarization/internal/first_pass_functor.hh,
+ * convert/from_qimage.hh,
+ * core/tag/component.hh,
+ * core/tag/line.hh,
+ * debug/links_decision_image.hh,
+ * debug/mean_and_base_lines_image.hh,
+ * filter/object_groups_with_holes.hh,
+ * io/xml/save.hh,
+ * make/all.hh,
+ * postprocessing/all.hh,
+ * postprocessing/fill_object_holes.hh,
+ * preprocessing/all.hh,
+ * preprocessing/crop_without_localization.hh,
+ * preprocessing/denoise_bg.hh,
+ * preprocessing/denoise_fg.hh,
+ * preprocessing/deskew.hh,
+ * preprocessing/deskew_crop.hh,
+ * preprocessing/split_bg_fg.hh,
+ * primitive/extract/all.hh,
+ * primitive/extract/lines_h_single.hh,
+ * primitive/extract/lines_pattern.hh,
+ * primitive/extract/lines_v_single.hh,
+ * primitive/group/all.hh,
+ * primitive/internal/all.hh,
+ * primitive/internal/is_link_valid.hh,
+ * primitive/link/all.hh,
+ * primitive/link/internal/compute_anchor.hh,
+ * primitive/link/internal/dmax_functor_base.hh,
+ * primitive/regroup/from_single_left_link.hh,
+ * primitive/remove/separators.hh,
+ * subsampling/bilinear.hh,
+ * text/merging.hh,
+ * toolchain/nepomuk/text_extraction.hh,
+ * upsampling/eagle.hh: Add missing headers in order to fix
+ unit-tests.
+
+ * tests/Makefile.am: Disable "table" directory's tests.
+
+ * tests/core/Makefile.am: Remove object_image test.
+
+ * tests/core/object_image.cc: Remove. Deprecated.
+
+ * tests/filter/objects_with_holes.cc,
+ * tests/filter/small_and_large_bboxes.cc: Write a real test.
+
+ * tests/unit_test/Makefile.am: Add specific flags for unit-tests
+ using tesseract and image magick.
+
+ 2010-07-21 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have Tesseract-related parts of Scribo compile again.
+
+ * scribo/debug/bboxes_enlarged_image.hh,
+ * scribo/debug/looks_like_a_text_line_image.hh,
+ * scribo/debug/mean_and_base_lines_image.hh,
+ * scribo/debug/save_bboxes_image.hh:
+ Catch up with scribo::line_info<L>'s current interface.
+ Reported by Olivier Grisel <ogrisel(a)nuxeo.com>.
+
+ 2010-08-04 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * core/component_set.hh: Add a new internal member
+ valid_comps_image_().
+
+ 2010-08-04 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * filter/object_groups_with_holes.hh: Fix an invalid mismatch
+ between groups ids and their related component ids and add more
+ comments.
+
+ 2010-07-06 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Compilation related fixes in Scribo.
+
+ * core/line_info.hh: Rename hidden as is_hidden.
+
+ * core/object_links.hh: Add duplicate().
+
+ * filter/object_links_bbox_ratio.hh: Use object_links::duplicate.
+
+ * debug/links_decision_image.hh,
+ * src/debug/show_info_median_inter_characters.cc,
+ * src/debug/show_info_x_height.cc,
+ * src/debug/show_links_bbox_h_ratio.cc,
+ * src/debug/show_links_left_right_links_validation.cc: Make
+ compile again.
+
+ * tests/unit_test/unit-tests.mk: Regen.
+
+ * text/extract_lines.hh: Update with latest changes.
+
+ * text/recognition.hh: Check whether a line is hidden or not.
+
+ 2010-07-06 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add new debug routines.
+
+ * debug/char_space_image.hh,
+ * debug/line_info_image.hh: New.
+
+ 2010-07-06 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Disable some debug output.
+
+ * text/clean_inplace.hh,
+ * text/recognition.hh: Disable some debug output.
+
+ 2010-07-06 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a tool for text recognition in natural pictures.
+
+ * src/Makefile.am: Add a new rule.
+
+ * src/text_recognition_in_picture.cc: New.
+
+ 2010-07-06 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add text::look_like_text_lines.
+
+ * text/look_like_text_lines.hh: New.
+
+ * text/merging.hh: Make use of
+ text::look_like_text_lines.
+
+ 2010-06-30 Arthur Crepin-Leblond <crepin(a)stockholm.lrde.epita.fr>
+
+ Extended XML mode support.
+
+ * scribo/demo/viewer/Makefile.am
+
+ * demo/viewer/image_region.cc,
+ * viewer/image_region.hh,
+ * viewer/image_region.hxx: Change regions depths to have a
+ hierarchy.
+
+ * demo/viewer/image_scene.cc,
+ * demo/viewer/image_scene.hh: Change mouse click behaviour.
+
+ * demo/viewer/key_widget.cc,
+ * demo/viewer/key_widget.hh: Add new items (text line and
+ paragraph)
+
+ * demo/viewer/viewer.cc,
+ * demo/viewer/viewer.hh: Change XML parsing to support extended
+ format.
+
+ * scribo/demo/viewer/common.hh: Add new RegionId's.
+
+ 2010-06-30 Arthur Crepin-Leblond <crepin(a)stockholm.lrde.epita.fr>
+
+ New features in Qt interface.
+
+ * demo/viewer/browser_widget.hh: Improve picture browser.
+
+ * demo/viewer/step_widget.cc: Add a "step chooser" to load several
+ XML files related to one picture.
+
+ 2010-06-30 Arthur Crepin-Leblond <crepin(a)stockholm.lrde.epita.fr>
+
+ Change XML output (replacement of html markups).
+
+ * io/xml/save.hh: Add internal::html_markups_replace.
+
+ 2010-06-29 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add text::clean_inplace.
+
+ * text/clean.hh: Make use of text::clean_inplace.
+
+ * text/clean_inplace.hh: New.
+
+ * text/recognition.hh: Include text::clean_inplace.
+
+ 2010-06-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small Fixes in Scribo build system.
+
+ * demo/Makefile.am: Enabled demos only if QT is configured.
+
+ * src/Makefile.am: Make use of MAGICKCXX flags.
+
+ 2010-06-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve text recognition.
+
+ * text/clean.hh: Use upsampling::eagle.
+
+ * text/recognition.hh: Make sure there is a border around the
+ text even after having resized images.
+
+ 2010-06-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * binarization/sauvola_ms.hh: Fix an invalid test.
+
+ 2010-06-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * upsampling/eagle.hh: Add a new upsampling algorithm.
+
+ 2010-06-23 Arthur Crepin-Leblond <crepin(a)stockholm.lrde.epita.fr>
+
+ Add extensions to ICDAR XML format.
+
+ * io/xml/save_text_lines.hh: Rename as...
+ * io/xml/save.hh: ...this.
+
+ * src/pbm_text_in_doc.cc: Update call to io::xml::save.
+
+ 2010-06-18 green <jacquelet(a)lrde.epita.fr>
+
+ Prepare green's sandbox.
+
+ * sandbox: New experimental directory.
+ * sandbox/green: New green'work.
+ * sandbox/green/ChangeLog: New ChangeLog file.
+
+ 2010-06-15 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes.
+
+ * debug/save_linked_bboxes_image.hh: Fix namespace ambiguity.
+
+ * src/pbm_text_in_doc.cc: Fix comment.
+
+ * src/text_in_picture: Change few settings.
+
+ * text/recognition.hh: Fix invalid default arguments.
+
+ 2010-06-15 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Remove deprecated code.
+
+ * util/all.hh,
+ * util/text.hh: Remove.
+
+ 2010-06-15 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add new Makefiles in Scribo demo directories.
+
+ * Makefile.am,
+ * demo/Makefile.am: Add new Makefiles.
+
+ 2010-06-15 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * primitive/extract/components.hh: Use labeling::value_and_compute.
+
+ 2010-06-15 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a fast rotation tool.
+
+ * src/preprocessing/Makefile.am,
+ * src/preprocessing/rotate_90.cc: New.
+
+ 2010-06-15 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a new routine to highlight text areas in an image.
+
+ * debug/highlight_text_area.hh: New.
+
+ * src/debug/Makefile.am,
+ * src/debug/highlight_text_area.cc: New tool.
+
+ * src/text_in_picture.cc: Make use of this new routine.
+
+ 2010-06-03 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * src/README: New.
+
+ 2010-06-03 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve Scribo demo.
+
+ * demo/demat/demat.pro: Add new flags.
+
+ * demo/demat/src/main.cc: Make use of MLN_WO_GLOBALS_VARS.
+
+ * demo/demat/src/main_window.cc,
+ * demo/demat/src/main_window.hh: Cropping is not required
+ anymore. Improve visualization speed.
+
+ * demo/demat/src/preprocessing_task.hh,
+ * demo/demat/src/runner.cc,
+ * demo/demat/src/runner.hh,
+ * demo/demat/ui/main_window.ui: Add a new task for Sauvola ms
+ split.
+
+ * demo/review/src/main.cc,
+ * demo/review/src/mainwindow.cc,
+ * demo/review/src/mainwindow.hh: Start updating executable names
+ and arguments.
+
+ * 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/image_viewer.hxx,
+ * demo/shared/src/internal/interactive_scene.cc,
+ * demo/shared/src/internal/interactive_scene.hh,
+ * demo/shared/ui/image_viewer.ui: Improve look and feel and
+ drawing speed of these components.
+
+ * demo/wizard/src/load_page.cc,
+ * demo/wizard/src/main_window.cc,
+ * demo/wizard/src/runner.cc: Fix compilation.
+
+ 2010-06-03 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes.
+
+ * binarization/sauvola_threshold_image.hh: Add ifdefs.
+
+ * core/object_groups.hh: Fix a wrong assertion.
+
+ * postprocessing/fill_object_holes.hh: Disable debug output.
+
+ * preprocessing/denoise_bg.hh: Do not negate the image anymore.
+
+ 2010-06-03 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add the binarization tool submitted to H-DIBCO 2010.
+
+ * src/Makefile.am,
+ * src/contest/Makefile.am,
+ * src/contest/hdibco-2010/Makefile.am: New.
+
+ * src/contest/hdibco-2010/sauvola_ms_hdibco.cc: New. Source code
+ of the submitted program for H-DIBCO 2010.
+
+ 2010-06-03 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Update tools in scribo/src.
+
+ * src/Makefile.am: Add postprocessing subdir.
+
+ * src/postprocessing/Makefile.am,
+ * src/postprocessing/fill_object_holes.cc: New.
+
+ * src/preprocessing/denoise.cc: Remove.
+
+ * src/preprocessing/denoise_bg.cc,
+ * src/preprocessing/denoise_fg.cc: New.
+
+ 2010-06-03 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a specific toolchain for Nepomuk integration.
+
+ * convert/from_qimage.hh: New. convert an image2d to a QImage.
+
+ * core/line_info.hh: Add a new member has_text.
+
+ * text/recognition.hh: Remove an invalid precondition.
+
+ * toolchain/nepomuk/text_extraction.hh: New. Specific toolchain
+ for Nepomuk.
+
+ * tests/Makefile.am: Add toolchain/* subdirs.
+
+ * tests/toolchain/Makefile.am,
+ * tests/toolchain/nepomuk/Makefile.am: New.
+
+ * tests/img/wildly.pbm: New. New test image.
+
+ * tests/toolchain/nepomuk/text_extraction.cc: New. New test.
+
+ 2010-05-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Cleanup sample tools.
+
+ * src/preprocessing/Makefile.am,
+ * src/text/Makefile.am,
+ * src/Makefile.am: Update.
+
+ * src/multi_scale/Makefile.am,
+ * src/multi_scale/find_lines.cc
+ * src/text/pbm_recognition.cc
+ * src/text/recognition.cc
+ * src/text_in_article_preprocess.cc
+ * src/text_in_doc.cc
+ * src/text_in_doc_ppm.cc
+ * src/text_in_photo.cc
+ * src/text_in_photo_invert.cc
+ * src/text_in_photo_pbm_fast.cc
+ * src/text_in_photo_ppm.cc
+ * test.cc: Remove. Deprecated.
+
+ * src/text_in_article_pbm.cc: Rename as...
+ * src/pbm_text_in_doc.cc: ... this. Make use of the new toolchain
+ routines.
+
+ * src/text/pbm_lines_recognition.cc,
+ * src/text_in_doc_preprocess.cc: New.
+
+ * src/text_in_photo_fast.cc: Rename as...
+ * src/text_in_picture.cc: ... this.
+
+ * src/preprocessing/subsample.cc: Make use of io::magick.
+
+ 2010-05-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * toolchain/text_in_doc.hh: Introduce a new routine for extracting
+ text in a document.
+
+ 2010-05-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * core/def/lbl_type.hh: Introduce a global label type.
+
+ 2010-05-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve line detection.
+
+ * primitive/extract/lines_h_pattern.hh,
+ * primitive/extract/lines_v_pattern.hh: Use reconstruction
+ algorithm.
+
+ * primitive/extract/lines_pattern.hh: Add a fast implementation.
+
+ 2010-05-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * io/text_boxes/save.hh: New. Save text boxes information.
+
+ 2010-05-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a new deskew algorithm.
+
+ * preprocessing/deskew.hh,
+ * preprocessing/deskew_crop.hh: New.
+
+ * preprocessing/unskew.hh: Remove. Deprecated.
+
+ * tests/preprocessing/unskew.cc: Rename as...
+ * tests/preprocessing/deskew.cc: ... this.
+
+ * tests/preprocessing/Makefile.am: Update.
+
+ * tests/img/text_to_group.pgm: New test image.
+
+ 2010-05-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add crop tools.
+
+ * preprocessing/crop.hh,
+ * preprocessing/crop_without_localization.hh: new routines.
+
+ * tests/preprocessing/Makefile.am,
+ * tests/preprocessing/crop.cc,
+ * tests/preprocessing/crop_without_localization.cc: Associated
+ tests.
+
+ 2010-05-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes.
+
+ * core/object_groups.hh: Fix an invalid size.
+
+ * debug/save_bboxes_image.hh,
+ * filter/object_links_non_aligned_simple.hh,
+ * primitive/group/from_single_link.hh,
+ * subsampling/bilinear.hh,
+ * text/merging.hh,
+ * upsampling/bs2x.hh: Fix namespace ambiguities.
+
+ * primitive/group/from_double_link.hh: Fix comment.
+
+ * primitive/internal/find_root.hh: Fix guards.
+
+ * primitive/link/with_single_right_link_dmax_ratio.hh: Add a
+ missing include.
+
+ * primitive/remove/separators.hh: Improve computation time.
+
+ * preprocessing/rotate_90.hh: Add a fixme.
+
+ 2010-05-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Store OCR results in the line_info structure.
+
+ * core/line_info.hh: Add a new attribute 'text'.
+
+ * text/recognition.hh: Store results in the line_info structure.
+
+ 2010-05-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve debug outputs in Sauvola and make binarization tools
+ compile again.
+
+ * binarization/internal/first_pass_functor.hh,
+ * binarization/sauvola_ms.hh,
+ * binarization/sauvola_threshold_image.hh: Add debug outputs if
+ SCRIBO_SAUVOLA_DEBUG flag is set.
+
+ * binarization/sauvola_ms_split.hh: Remove lambda argument.
+
+ * binarization/sauvola_threshold_image_debug.hh: Add the threshold
+ image as debug output.
+
+ * src/binarization/Makefile.am: Add sauvola_ms_debug.
+ * src/binarization/sauvola_ms_debug.cc: New.
+
+ * src/binarization/fg_sauvola_ms.cc,
+ * src/binarization/pgm_sauvola_ms.cc,
+ * src/binarization/ppm_fg_sauvola_ms.cc,
+ * src/binarization/ppm_sauvola_ms.cc,
+ * src/binarization/ppm_sauvola_ms_split.cc,
+ * src/binarization/sauvola_debug.cc,
+ * src/binarization/sauvola_ms.cc,
+ * src/binarization/sauvola_ms_split.cc: Make compile again.
+
+ 2010-05-04 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes for Nuxeo/XWiki.
+
+ * src/text_in_article_preprocess.cc: Fix use of program
+ arguments.
+
+ * core/line_set.hh,
+ * text/clean.hh,
+ * text/merging.hh: Fix compilation.
+
+ * text/recognition.hh: Update output format.
+
+ 2010-05-04 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * text/merging.hh: Disable some debug.
+
+ 2010-05-04 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Prepare DIA tools for Nuxeo/XWiki.
+
+ * src/Makefile.am: Add a new target.
+
+ * src/text_in_article_preprocess.cc: New.
+
+ * src/text_in_article_pbm.cc: Add optional cropping and makes the
+ debug optionnal.
+
+ * text/clean.hh: Improve cleanup.
+
+ * text/recognition.hh: Remove last '\n' in Tesseract's output.
+
+ 2010-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve OCR recognition.
+
+ * src/text_in_article_pbm.cc: Update call to text::recognition.
+
+ * text/clean.hh: Resize text lines according to their x_height.
+
+ * text/extract_lines.hh: Update call to extract::components.
+
+ * text/merging.hh: Remove Debug.
+
+ * text/recognition.hh: Update call to text::clean and do
+ recognition only on lines considered as text.
+
+ * subsampling/bilinear.hh,
+ * upsampling/bs2x.hh: New.
+
+ 2010-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * postprocessing/fill_object_holes.hh: New routine.
+
+ 2010-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add new routines to detect separators.
+
+ * primitive/extract/horizontal_separators.hh,
+ * primitive/extract/separators.hh,
+ * primitive/extract/vertical_separators.hh,
+ * primitive/remove/separators.hh: New.
+
+ 2010-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add A first draft of a README in Scribo.
+
+ * README: New.
+
+ 2010-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Move AFP's GUI into Scribo's demo directory.
+
+ * ../milena/sandbox/lazzara/afp/photos/gui/gui.pro,
+ * ../milena/sandbox/lazzara/afp/photos/gui/gui.qrc,
+ * ../milena/sandbox/lazzara/afp/photos/gui/icons/next.png,
+ * ../milena/sandbox/lazzara/afp/photos/gui/icons/ok.png,
+ * ../milena/sandbox/lazzara/afp/photos/gui/icons/photos.png,
+ * ../milena/sandbox/lazzara/afp/photos/gui/icons/prev.png,
+ * ../milena/sandbox/lazzara/afp/photos/gui/icons/remove.png,
+ * ../milena/sandbox/lazzara/afp/photos/gui/src/custom_delegate.cc,
+ * ../milena/sandbox/lazzara/afp/photos/gui/src/custom_delegate.hh,
+ * ../milena/sandbox/lazzara/afp/photos/gui/src/launch_dialog.cc,
+ * ../milena/sandbox/lazzara/afp/photos/gui/src/launch_dialog.hh,
+ * ../milena/sandbox/lazzara/afp/photos/gui/src/main.cc,
+ * ../milena/sandbox/lazzara/afp/photos/gui/src/main_window.cc,
+ * ../milena/sandbox/lazzara/afp/photos/gui/src/main_window.hh,
+ * ../milena/sandbox/lazzara/afp/photos/gui/ui/launch_dialog.ui,
+ * ../milena/sandbox/lazzara/afp/photos/gui/ui/main_window.ui: Move...
+
+ * demo/tip/gui.pro,
+ * demo/tip/gui.qrc,
+ * demo/tip/icons/next.png,
+ * demo/tip/icons/ok.png,
+ * demo/tip/icons/photos.png,
+ * demo/tip/icons/prev.png,
+ * demo/tip/icons/remove.png,
+ * demo/tip/src/custom_delegate.cc,
+ * demo/tip/src/custom_delegate.hh,
+ * demo/tip/src/launch_dialog.cc,
+ * demo/tip/src/launch_dialog.hh,
+ * demo/tip/src/main.cc,
+ * demo/tip/src/main_window.cc,
+ * demo/tip/src/main_window.hh,
+ * demo/tip/ui/launch_dialog.ui,
+ * demo/tip/ui/main_window.ui: ... here.
+
+ 2010-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Introduce dmax_functor concept.
+
+ * core/concept/dmax_functor.hh,
+ * primitive/link/internal/dmax_default.hh,
+ * primitive/link/internal/dmax_functor_base.hh,
+ * primitive/link/internal/dmax_width_and_height.hh,
+ * primitive/link/internal/dmax_width_only.hh: New.
+
+ * primitive/link/internal/link_single_dmax_ratio_base.hh,
+ * primitive/link/with_single_left_link_dmax_ratio.hh,
+ * primitive/link/with_single_right_link_dmax_ratio.hh: Make use of
+ the new functors.
+
+ 2010-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes in Scribo.
+
+ * binarization/sauvola_ms.hh,
+ * binarization/sauvola_threshold_image_debug.hh: Update prototypes.
+
+ * primitive/internal/rd.hh,
+ * primitive/group/apply.hh,
+ * debug/save_bboxes_image.hh: Add missing mln:: namespace prefix.
+
+ * filter/objects_large.hh: Split into a routine and a functor.
+
+ * fun/v2b/objects_large_filter.hh: New.
+
+ * io/xml/save_text_lines.hh: Save line type.
+
+ * table/internal/repair_lines.hh,
+ * table/internal/align_lines.hh,
+ * make/text.hh: Update macro name.
+
+ * core/erase_objects.hh,
+ * primitive/extract/lines_discontinued.hh,
+ * primitive/extract/lines_h_discontinued.hh,
+ * primitive/extract/lines_h_pattern.hh,
+ * primitive/extract/lines_h_single.hh,
+ * primitive/extract/lines_h_thick.hh,
+ * primitive/extract/lines_thick.hh,
+ * primitive/extract/lines_v_discontinued.hh,
+ * primitive/extract/lines_v_single.hh,
+ * primitive/extract/lines_v_thick.hh,
+ * primitive/group/from_graph.hh,
+ * primitive/internal/find_graph_link.hh,
+ * primitive/link/with_graph.hh,
+ * primitive/link/with_several_graphes.hh,
+ * primitive/link/with_several_left_links.hh,
+ * primitive/link/with_several_right_links.hh,
+ * table/erase.hh,
+ * table/extract.hh: Remove any references to object_image.
+
+ * table/internal/connect_lines.hh: use
+ influence_zone_geodesic_saturated
+
+ * filter/objects_small.hh: Duplicate component set.
+
+ * primitive/internal/all.hh,
+ * primitive/extract/all.hh,
+ * filter/all.hh,
+ * core/all.hh: Remove non existing includes.
+
+ * core/macros.hh: New macro.
+
+ * core/line_info.hh: Fix stats.
+
+ * filter/object_links_non_aligned.hh,
+ * filter/object_links_non_h_aligned.hh,
+ * filter/object_links_non_v_aligned.hh: Removed.
+
+ 2010-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve dematerialization wizard.
+
+ * demo/wizard/src/crop_widget.cc,
+ * demo/wizard/src/main.cc,
+ * demo/wizard/src/main_window.cc,
+ * demo/wizard/src/main_window.hh,
+ * demo/wizard/src/preprocessing_widget.cc,
+ * demo/wizard/src/process_page.cc,
+ * demo/wizard/src/result_page.cc,
+ * demo/wizard/src/result_page.hh,
+ * demo/wizard/src/result_widget.cc,
+ * demo/wizard/src/result_widget.hh,
+ * demo/wizard/src/runner.cc,
+ * demo/wizard/ui/preprocessing_widget.ui,
+ * demo/wizard/wizard.pro: Add support for text recognition and
+ display results.
+
+ 2010-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a new demo in Scribo.
+
+ * demo/demat/demat.pro,
+ * demo/demat/demat.qrc,
+ * demo/demat/src/doc_type.hh,
+ * demo/demat/src/main.cc,
+ * demo/demat/src/main_window.cc,
+ * demo/demat/src/main_window.hh,
+ * demo/demat/src/mln_widgets.cc,
+ * demo/demat/src/preprocessing_task.hh,
+ * demo/demat/src/process_args.hh,
+ * demo/demat/src/runner.cc,
+ * demo/demat/src/runner.hh,
+ * demo/demat/ui/main_window.ui: New.
+
+ * 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/ui/image_viewer.ui: Update according the needs of
+ this new demo.
+
+ 2010-04-13 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * io/xml/save_text_lines.hh: Fix XML output.
+
+ 2010-04-13 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * debug/decision_image.hh: Add the anchor::Type as argument.
+
+ 2010-04-13 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Use anchor::Type in alignment routines' dispatch.
+
+ * filter/object_links_bottom_aligned.hh,
+ * filter/object_links_center_aligned.hh,
+ * filter/object_links_left_aligned.hh,
+ * filter/object_links_non_aligned_simple.hh,
+ * filter/object_links_right_aligned.hh,
+ * filter/object_links_top_aligned.hh: Use anchor::Type.
+
+ * filter/internal/alignment_angle.hh,
+ * filter/internal/component_aligned.hh: New.
+
+ 2010-04-13 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes related to object_groups.
+
+ * core/object_groups.hh: Add more preconditions.
+
+ * filter/object_groups_small.hh: Call duplicate().
+
+ 2010-04-13 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add init() member to object_links structure.
+
+ * core/object_links.hh: New init() member.
+
+ * filter/object_groups_v_thickness.hh,
+ * filter/object_groups_with_holes.hh,
+ * primitive/group/from_double_link.hh,
+ * primitive/link/internal/link_functor_base.hh,
+ * primitive/link/merge_double_link.hh,
+ * src/afp/link.hh,
+ * src/afp/regroup.hh: Call init() on object_links instances.
+
+ * primitive/internal/init_link_array.hh: Remove.
+
+ 2010-04-13 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * src/text_in_photo_fast.cc: Group routine parameters in a global
+ structure.
+
+ 2010-04-13 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add new Sauvola overloads and update examples.
+
+ * binarization/internal/first_pass_functor.hh,
+ * binarization/local_threshold.hh,
+ * binarization/sauvola.hh,
+ * binarization/sauvola_ms.hh,
+ * binarization/sauvola_ms_split.hh,
+ * binarization/sauvola_threshold_image.hh,
+ * canvas/integral_browsing.hh: Add more parameters to Sauvola
+ routines.
+
+ * binarization/sauvola_threshold_image_debug.hh: New. New overload
+ providing debug outputs.
+
+ * debug/usage.hh: Remove a parameter.
+
+ * src/binarization/Makefile.am,
+ * src/binarization/pgm_global_threshold_auto.cc,
+ * src/binarization/pgm_sauvola.cc,
+ * src/binarization/pgm_sauvola_ms.cc,
+ * src/binarization/ppm_fg_sauvola_ms.cc,
+ * src/binarization/ppm_sauvola.cc,
+ * src/binarization/ppm_sauvola_ms.cc,
+ * src/binarization/ppm_sauvola_ms_split.cc: Add new program
+ arguments.
+
+ * src/binarization/fg_sauvola_ms.cc,
+ * src/binarization/sauvola.cc,
+ * src/binarization/sauvola_ms.cc,
+ * src/binarization/sauvola_ms_split.cc,
+ * src/binarization/sauvola_debug.cc: New.
+
+ 2010-03-29 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add support for various image types in text_in_photo_fast.
+
+ * src/Makefile.am: Add ImageMagick CPPFLAGS and LDFLAGS.
+
+ * src/text_in_photo_ppm_fast.cc: Rename as...
+ * src/text_in_photo_fast.cc: ... this. Use ImageMagick to load images.
+
+ 2010-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve dematerialization wizard.
+
+ * demo/wizard/src/crop_widget.cc,
+ * demo/wizard/src/main.cc,
+ * demo/wizard/src/main_window.cc,
+ * demo/wizard/src/main_window.hh,
+ * demo/wizard/src/preprocessing_widget.cc,
+ * demo/wizard/src/process_page.cc,
+ * demo/wizard/src/result_page.cc,
+ * demo/wizard/src/result_page.hh,
+ * demo/wizard/src/result_widget.cc,
+ * demo/wizard/src/result_widget.hh,
+ * demo/wizard/src/runner.cc,
+ * demo/wizard/ui/preprocessing_widget.ui,
+ * demo/wizard/wizard.pro: Add support for text recognition and
+ display results.
+
+ 2010-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a new demo in Scribo.
+
+ * demo/demat/demat.pro,
+ * demo/demat/demat.qrc,
+ * demo/demat/src/doc_type.hh,
+ * demo/demat/src/main.cc,
+ * demo/demat/src/main_window.cc,
+ * demo/demat/src/main_window.hh,
+ * demo/demat/src/mln_widgets.cc,
+ * demo/demat/src/preprocessing_task.hh,
+ * demo/demat/src/process_args.hh,
+ * demo/demat/src/runner.cc,
+ * demo/demat/src/runner.hh,
+ * demo/demat/ui/main_window.ui: New.
+
+ * 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/ui/image_viewer.ui: Update according the needs of
+ this new demo.
+
+ 2010-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes in Scribo.
+
+ * binarization/sauvola_ms.hh: Fix compilation issues on MacOS X.
+
+ * core/component_set.hh: Add labeled_image_() member.
+
+ * debug/save_bboxes_image.hh: Add a missing include.
+
+ * preprocessing/split_bg_fg.hh,
+ * primitive/extract/components.hh: Fix namespace ambiguities.
+
+ * src/text_in_article.cc: Rename as...
+ * src/text_in_article_pbm.cc: ... this.
+
+ * src/Makefile.am: Update source file names.
+
+ 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-07-31 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix Scribo's dependencies w.r.t. libraries.
+
+ * src/Makefile.am (text_in_doc_LDFLAGS, text_in_doc_ppm_LDFLAGS):
+ Remove -lhpdf.
+
2010-04-23 Roland Levillain <roland(a)lrde.epita.fr>
Get C++ compiler flags for Scribo from configure.
hooks/post-receive
--
Olena, a generic and efficient image processing platform
1
0
last-svn-commit-484-gd15041d Base 64 support in Qt interface (xmlc extension)
by Arthur Crepin-Leblond 13 Aug '10
by Arthur Crepin-Leblond 13 Aug '10
13 Aug '10
* scribo/demo/viewer/step_widget.cc
* scribo/demo/viewer/step_widget.hh
* scribo/demo/viewer/browser_widget.cc,
* scribo/demo/viewer/browser_widget.hh: Add .xmlc extension.
* scribo/demo/viewer/image_scene.cc
* scribo/demo/viewer/viewer.cc,
* scribo/demo/viewer/viewer.hh: base 64 loading.
---
scribo/ChangeLog | 38 +++++++++++------
scribo/demo/viewer/browser_widget.cc | 9 +++-
scribo/demo/viewer/browser_widget.hh | 2 +-
scribo/demo/viewer/image_scene.cc | 10 ++--
scribo/demo/viewer/step_widget.cc | 77 ++++++++++++++++++---------------
scribo/demo/viewer/step_widget.hh | 4 +-
scribo/demo/viewer/viewer.cc | 60 +++++++++++++++++++++++---
scribo/demo/viewer/viewer.hh | 3 +-
8 files changed, 137 insertions(+), 66 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index 0db82ec..b5dc636 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,29 +1,41 @@
2010-07-16 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
+ Base 64 support in Qt interface (xmlc extension)
+
+ * demo/viewer/step_widget.cc
+ * demo/viewer/step_widget.hh
+ * demo/viewer/browser_widget.cc,
+ * demo/viewer/browser_widget.hh: Add .xmlc extension.
+
+ * demo/viewer/image_scene.cc
+ * demo/viewer/viewer.cc,
+ * demo/viewer/viewer.hh: base 64 loading.
+
+2010-07-16 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
+
Two new features in Qt interface.
* demo/viewer/browser_widget.cc,
- * demo/viewer/browser_widget.hh: Add arrows to change image and keep
- XML step.
+ * demo/viewer/browser_widget.hh: Add arrows to change image and
+ keep XML step.
* demo/viewer/key_widget.cc,
- * demo/viewer/key_widget.hh: Change ListWidget to TreeWidget, Items can be
- disabled/enabled in groups.
+ * demo/viewer/key_widget.hh: Change ListWidget to TreeWidget,
+ Items can be disabled/enabled in groups.
* demo/viewer/step_widget.cc,
- * demo/viewer/step_widget.hh: Small changes to keep the step when next/prev.
- picture is chosen.
+ * demo/viewer/step_widget.hh: Small changes to keep the step when
+ next/prev. picture is chosen.
* demo/viewer/viewer.cc,
* demo/viewer/xml_widget.cc: Layout adjustement.
-
2010-07-16 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
ChangeLog mistake.
- * scribo/ChangeLog: Move 2010-07-08 entry in...
- * scribo/sandbox/ChangeLog:...this.
+ * ChangeLog: Move 2010-07-08 entry in...
+ * sandbox/ChangeLog:...this.
2010-06-30 Arthur Crepin-Leblond <crepin(a)stockholm.lrde.epita.fr>
@@ -78,12 +90,12 @@
Small fix in Qt interface.
- * scribo/demo/viewer/viewer.cc,
- * scribo/demo/viewer/image_region.hxx: Disable item click if
+ * demo/viewer/viewer.cc,
+ * demo/viewer/image_region.hxx: Disable item click if
unchecked in item list.
- * scribo/demo/viewer/key_widget.cc,
- * scribo/demo/viewer/key_widget.hh: Add KeyWidget::checkAll.
+ * demo/viewer/key_widget.cc,
+ * demo/viewer/key_widget.hh: Add KeyWidget::checkAll.
2010-08-13 Guillaume Lazzara <z(a)lrde.epita.fr>
diff --git a/scribo/demo/viewer/browser_widget.cc b/scribo/demo/viewer/browser_widget.cc
index bd70648..220a719 100644
--- a/scribo/demo/viewer/browser_widget.cc
+++ b/scribo/demo/viewer/browser_widget.cc
@@ -66,7 +66,9 @@ BrowserWidget::BrowserWidget(QDirModel* files, QString dir)
QStringList files_filters;
files_filters << "*.png" << "*.jpg"
- << "*.tif" << "*.ppm" << "*.pgm" << "*.pbm" << "pnm";
+ << "*.tif" << "*.ppm"
+ << "*.pgm" << "*.pbm"
+ << "*.pnm" << "*.xmle";
files->setNameFilters(files_filters);
}
@@ -95,7 +97,10 @@ BrowserWidget::activate(const QModelIndex& index, bool b)
first_time_ = false;
- emit activated(files_->filePath(index), b);
+ if (files_->filePath(index).endsWith(".xmlc"))
+ emit activated(files_->filePath(index), b, true);
+ else
+ emit activated(files_->filePath(index), b, false);
}
void
diff --git a/scribo/demo/viewer/browser_widget.hh b/scribo/demo/viewer/browser_widget.hh
index a0fbe43..9266832 100644
--- a/scribo/demo/viewer/browser_widget.hh
+++ b/scribo/demo/viewer/browser_widget.hh
@@ -33,7 +33,7 @@ public slots:
void prev() { change_pos(false); }
signals:
- void activated(QString filename, bool b);
+ void activated(QString filename, bool b, bool x);
private:
void change_pos(bool next);
diff --git a/scribo/demo/viewer/image_scene.cc b/scribo/demo/viewer/image_scene.cc
index bbc75c3..62b4b46 100644
--- a/scribo/demo/viewer/image_scene.cc
+++ b/scribo/demo/viewer/image_scene.cc
@@ -40,7 +40,7 @@ ImageScene::mousePressEvent(QGraphicsSceneMouseEvent* event)
{
ImageRegion* item = dynamic_cast<ImageRegion*>(elt);
if (item)
- {
+ {
if (item != selected_)
{
if (selected_)
@@ -49,7 +49,7 @@ ImageScene::mousePressEvent(QGraphicsSceneMouseEvent* event)
{
int item_area = item->boundingRect().size().height() * item->boundingRect().size().width();
int selected_area = selected_->boundingRect().size().height() * selected_->boundingRect().size().width();
-
+
if (selected_area < item_area && selection_is_clicked)
return;
else
@@ -66,15 +66,15 @@ ImageScene::mousePressEvent(QGraphicsSceneMouseEvent* event)
selected_ = 0;
}
}
- selected_ = item;
+ selected_ = item;
item->select();
emit selected(item->index());
- return;
+ return;
}
}
else
{
- if ( (selected_)
+ if ( (selected_)
&& (items_list.size() == 1) )// no ImageRegion, only the picture
{
selected_->deselect();
diff --git a/scribo/demo/viewer/step_widget.cc b/scribo/demo/viewer/step_widget.cc
index 1020c6a..207796d 100644
--- a/scribo/demo/viewer/step_widget.cc
+++ b/scribo/demo/viewer/step_widget.cc
@@ -68,57 +68,64 @@ void StepWidget::activate(QListWidgetItem* item)
}
-void StepWidget::fill_steps(QString file, bool step)
+void StepWidget::fill_steps(QString file, bool step, bool container)
{
view_->clear();
map_.clear();
- // image is loaded once
- emit load_image(file);
+ if (container)
+ {
+ emit load_image(file, true);
+ emit load_xml(file);
+ }
+ else
+ {
+ // image is loaded once
+ emit load_image(file, false);
- int cut = file.lastIndexOf(QChar('/'));
- QString path = file.left(cut+1);
- QString filename = file.mid(cut+1);
+ int cut = file.lastIndexOf(QChar('/'));
+ QString path = file.left(cut+1);
+ QString filename = file.mid(cut+1);
- cut = filename.lastIndexOf(QChar('.'));
+ cut = filename.lastIndexOf(QChar('.'));
- QString file_with_no_ext = filename.left(cut);
- // view_->addItem(file_with_no_ext);
+ QString file_with_no_ext = filename.left(cut);
+ // view_->addItem(file_with_no_ext);
- QDir dir(path);
+ QDir dir(path);
- if (dir.isReadable())
- {
- QStringList filter;
- filter << "*.xml";
- QStringList xml_list = dir.entryList(filter);
- for (int i = 0; i < xml_list.size(); ++i)
+ if (dir.isReadable())
{
- if (xml_list.at(i).startsWith(file_with_no_ext))
+ QStringList filter;
+ filter << "*.xml";
+ QStringList xml_list = dir.entryList(filter);
+ for (int i = 0; i < xml_list.size(); ++i)
{
- cut = xml_list.at(i).lastIndexOf(QChar('.'));
- QString key = xml_list.at(i).left(cut);
- key.replace(file_with_no_ext + QString("_"), QString(""));
- key.replace(QRegExp("^step([0-9])"), "Step \\1");
- key.replace(QRegExp("^Step ([0-9])_"), "Step \\1 : ");
- key.replace("_", " ");
- QString value = path;
- map_.insertMulti(key, value.append(xml_list.at(i)));
- view_->addItem(key);
+ if (xml_list.at(i).startsWith(file_with_no_ext))
+ {
+ cut = xml_list.at(i).lastIndexOf(QChar('.'));
+ QString key = xml_list.at(i).left(cut);
+ key.replace(file_with_no_ext + QString("_"), QString(""));
+ key.replace(QRegExp("^step([0-9])"), "Step \\1");
+ key.replace(QRegExp("^Step ([0-9])_"), "Step \\1 : ");
+ key.replace("_", " ");
+ QString value = path;
+ map_.insertMulti(key, value.append(xml_list.at(i)));
+ view_->addItem(key);
+ }
}
}
- }
+ if ( (step && step_ != QString::Null()))
+ {
+ QList<QListWidgetItem*> list = view_->findItems(step_, Qt::MatchContains);
- if (step && step_ != QString::Null())
- {
- QList<QListWidgetItem*> list = view_->findItems(step_, Qt::MatchContains);
-
- if (!list.isEmpty())
- emit activated(list.first());
+ if (!list.isEmpty())
+ emit activated(list.first());
+ }
+ else
+ step_ = QString::Null();
}
- else
- step_ = QString::Null();
}
void StepWidget::add_element(const QString& element)
diff --git a/scribo/demo/viewer/step_widget.hh b/scribo/demo/viewer/step_widget.hh
index 928e503..32602b0 100644
--- a/scribo/demo/viewer/step_widget.hh
+++ b/scribo/demo/viewer/step_widget.hh
@@ -42,12 +42,12 @@ public:
void add_element(const QString& element);
signals:
- void load_image(QString);
+ void load_image(QString, bool);
void load_xml(QString);
void activated(QListWidgetItem*);
public slots:
- void fill_steps(QString file, bool = false);
+ void fill_steps(QString file, bool step = false, bool container = false);
void activate(QListWidgetItem* item);
private:
diff --git a/scribo/demo/viewer/viewer.cc b/scribo/demo/viewer/viewer.cc
index b3fd6f5..e5ec717 100644
--- a/scribo/demo/viewer/viewer.cc
+++ b/scribo/demo/viewer/viewer.cc
@@ -169,11 +169,11 @@ Viewer::Viewer(int &argc, char** argv)
h_sizes << 200 << 700;
h_splitter->setSizes(h_sizes);
- connect(browser_wgt, SIGNAL(activated(QString, bool)),
- step_widget, SLOT(fill_steps(QString, bool)));
+ connect(browser_wgt, SIGNAL(activated(QString, bool, bool)),
+ step_widget, SLOT(fill_steps(QString, bool, bool)));
- connect(step_widget, SIGNAL(load_image(QString)),
- this, SLOT(load(QString)));
+ connect(step_widget, SIGNAL(load_image(QString, bool)),
+ this, SLOT(load(QString, bool)));
connect(step_widget, SIGNAL(load_xml(QString)),
this, SLOT(load_xml(QString)));
@@ -429,18 +429,20 @@ Viewer::xml_to_layout()
}
void
-Viewer::load(QString filename)
+Viewer::load(QString filename, bool b)
{
app_->setOverrideCursor(QCursor(Qt::WaitCursor));
scene_->clear();
scene_->update();
image_ = 0;
- // xml_file_ = "";
// Load the image in a pixmap that is directly shown on screen.
// This is very slow when used with the normal rendering system.
// OpenGL might speed up things a bit.
- image_ = new QGraphicsPixmapItem(QPixmap(filename));
+ if (b)
+ image_ = new QGraphicsPixmapItem(load_base64(filename));
+ else
+ image_ = new QGraphicsPixmapItem(QPixmap(filename));
image_->setShapeMode(QGraphicsPixmapItem::BoundingRectShape);
image_->setZValue(0);
scene_->addItem(image_);
@@ -511,4 +513,48 @@ Viewer::useCache(bool b)
image_->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
}
+QPixmap Viewer::load_base64(QString xml)
+{
+ QPixmap pix;
+ QFile f_in(xml);
+ f_in.open(QIODevice::ReadOnly);
+
+ QDomDocument doc;
+ doc.setContent(&f_in);
+ f_in.close();
+
+ QDomElement root = doc.documentElement();
+ QDomNode child = root.firstChild();
+
+ while (!child.isNull() && !child.toElement().tagName().contains("page"))
+ child = child.nextSibling();
+
+ child = child.firstChild();
+ while (!child.isNull())
+ {
+ if (child.toElement().tagName().contains(QRegExp("image_region")))
+ {
+ QDomNode node = child.firstChild();
+ QString id = child.toElement().attribute("id", "none");
+
+ while (!node.isNull() && !node.toElement().tagName().contains("container"))
+ node = node.nextSibling();
+
+ if (!node.isNull())
+ {
+ QString data = node.firstChildElement("data").text();
+ QByteArray ba;
+ ba = ba.append(data);
+ QByteArray out_ba = QByteArray::fromBase64(ba);
+ pix.loadFromData(out_ba);
+
+ return pix;
+ }
+ }
+ child = child.nextSibling();
+ }
+
+ return pix;
+}
+
// LocalWords: hh
diff --git a/scribo/demo/viewer/viewer.hh b/scribo/demo/viewer/viewer.hh
index d13ef91..7093da8 100644
--- a/scribo/demo/viewer/viewer.hh
+++ b/scribo/demo/viewer/viewer.hh
@@ -38,7 +38,7 @@ public:
public slots:
// Load the file as an image, load the layout if xml with the same
// name is found.
- void load(QString filename);
+ void load(QString filename, bool b);
void help();
void load_xml(QString filename);
void maybeChangeCacheMode(qreal scale);
@@ -59,6 +59,7 @@ private:
Viewer();
void xml_to_layout();
+ QPixmap load_base64(QString xml);
QApplication* app_;
QMainWindow* win_;
--
1.5.6.5
1
0
13 Aug '10
* demo/viewer/property_widget.cc,
* demo/viewer/property_widget.hh,
* demo/viewer/domitem.cc,
* demo/viewer/domitem.hh,
* demo/viewer/dommodel.cc,
* demo/viewer/dommodel.hh: Delete.
* demo/viewer/Makefile.am
* demo/viewer/browser_widget.cc: Fix, xmlc extension instead of xmle.
* demo/viewer/key_widget.cc,
* demo/viewer/step_widget.cc,
* demo/viewer/step_widget.hh,
* demo/viewer/image_scene.cc,
* demo/viewer/image_scene.hh,
* demo/viewer/help_dialog.cc,
* demo/viewer/image_region.cc,
* demo/viewer/image_region.hh,
* demo/viewer/image_region.hxx: Small changes.
* demo/viewer/viewer.cc,
* demo/viewer/viewer.hh: Add base 64 cropped pictures support, text viewer
and change XML parsing.
* demo/viewer/xml_widget.cc,
* demo/viewer/xml_widget.hh: Change widget, tree and attributes are together.
---
scribo/ChangeLog | 33 ++
scribo/demo/viewer/Makefile.am | 9 -
scribo/demo/viewer/browser_widget.cc | 2 +-
scribo/demo/viewer/domitem.cc | 98 ------
scribo/demo/viewer/domitem.hh | 75 -----
scribo/demo/viewer/dommodel.cc | 198 ------------
scribo/demo/viewer/dommodel.hh | 85 -----
scribo/demo/viewer/help_dialog.cc | 6 +-
scribo/demo/viewer/image_region.cc | 6 +-
scribo/demo/viewer/image_region.hh | 9 +-
scribo/demo/viewer/image_region.hxx | 7 -
scribo/demo/viewer/image_scene.cc | 20 +-
scribo/demo/viewer/image_scene.hh | 4 +-
scribo/demo/viewer/key_widget.cc | 2 +-
scribo/demo/viewer/property_widget.cc | 73 -----
scribo/demo/viewer/property_widget.hh | 41 ---
scribo/demo/viewer/step_widget.cc | 4 +-
scribo/demo/viewer/step_widget.hh | 1 +
scribo/demo/viewer/viewer.cc | 547 +++++++++++++++++++--------------
scribo/demo/viewer/viewer.hh | 15 +-
scribo/demo/viewer/xml_widget.cc | 143 ++++++++-
scribo/demo/viewer/xml_widget.hh | 15 +-
22 files changed, 543 insertions(+), 850 deletions(-)
delete mode 100644 scribo/demo/viewer/domitem.cc
delete mode 100644 scribo/demo/viewer/domitem.hh
delete mode 100644 scribo/demo/viewer/dommodel.cc
delete mode 100644 scribo/demo/viewer/dommodel.hh
delete mode 100644 scribo/demo/viewer/property_widget.cc
delete mode 100644 scribo/demo/viewer/property_widget.hh
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index b5dc636..6e7d231 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,3 +1,36 @@
+2010-07-20 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
+
+ Some changes in XML interface.
+
+ * demo/viewer/property_widget.cc,
+ * demo/viewer/property_widget.hh,
+ * demo/viewer/domitem.cc,
+ * demo/viewer/domitem.hh,
+ * demo/viewer/dommodel.cc,
+ * demo/viewer/dommodel.hh: Delete.
+
+ * demo/viewer/Makefile.am
+
+ * demo/viewer/browser_widget.cc: Fix, xmlc extension instead of xmle.
+
+ * demo/viewer/key_widget.cc,
+ * demo/viewer/step_widget.cc,
+ * demo/viewer/step_widget.hh,
+ * demo/viewer/image_scene.cc,
+ * demo/viewer/image_scene.hh,
+ * demo/viewer/help_dialog.cc,
+ * demo/viewer/image_region.cc,
+ * demo/viewer/image_region.hh,
+ * demo/viewer/image_region.hxx: Small changes.
+
+ * demo/viewer/viewer.cc,
+ * demo/viewer/viewer.hh: Add base 64 cropped pictures support, text viewer
+ and change XML parsing.
+
+ * demo/viewer/xml_widget.cc,
+ * demo/viewer/xml_widget.hh: Change widget, tree and attributes are together.
+
+
2010-07-16 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
Base 64 support in Qt interface (xmlc extension)
diff --git a/scribo/demo/viewer/Makefile.am b/scribo/demo/viewer/Makefile.am
index a0112c6..9ef923a 100644
--- a/scribo/demo/viewer/Makefile.am
+++ b/scribo/demo/viewer/Makefile.am
@@ -21,12 +21,9 @@ viewer_SOURCES = $(BUILT_SOURCES) \
image_widget.cc \
xml_widget.cc \
key_widget.cc \
- property_widget.cc \
browser_widget.cc \
image_scene.cc \
image_view.cc \
- dommodel.cc \
- domitem.cc \
image_region.cc \
help_dialog.cc \
step_widget.cc
@@ -40,12 +37,9 @@ BUILT_SOURCES = viewer.moc.cc \
image_widget.moc.cc \
xml_widget.moc.cc \
key_widget.moc.cc \
- property_widget.moc.cc \
browser_widget.moc.cc \
image_scene.moc.cc \
image_view.moc.cc \
- dommodel.moc.cc \
- domitem.moc.cc \
image_region.moc.cc \
help_dialog.moc.cc \
step_widget.moc.cc
@@ -55,12 +49,9 @@ include_HEADERS = viewer.hh \
image_widget.hh \
xml_widget.hh \
key_widget.hh \
- property_widget.hh \
browser_widget.hh \
image_scene.hh \
image_view.hh \
- dommodel.hh \
- domitem.hh \
image_region.hh \
image_region.hxx \
common.hh \
diff --git a/scribo/demo/viewer/browser_widget.cc b/scribo/demo/viewer/browser_widget.cc
index 220a719..43de1e2 100644
--- a/scribo/demo/viewer/browser_widget.cc
+++ b/scribo/demo/viewer/browser_widget.cc
@@ -68,7 +68,7 @@ BrowserWidget::BrowserWidget(QDirModel* files, QString dir)
files_filters << "*.png" << "*.jpg"
<< "*.tif" << "*.ppm"
<< "*.pgm" << "*.pbm"
- << "*.pnm" << "*.xmle";
+ << "*.pnm" << "*.xmlc";
files->setNameFilters(files_filters);
}
diff --git a/scribo/demo/viewer/domitem.cc b/scribo/demo/viewer/domitem.cc
deleted file mode 100644
index 66e989a..0000000
--- a/scribo/demo/viewer/domitem.cc
+++ /dev/null
@@ -1,98 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
- ** Contact: Qt Software Information (qt-info(a)nokia.com)
- **
- ** This file is part of the example classes of the Qt Toolkit.
- **
- ** Commercial Usage
- ** Licensees holding valid Qt Commercial licenses may use this file in
- ** accordance with the Qt Commercial License Agreement provided with the
- ** Software or, alternatively, in accordance with the terms contained in
- ** a written agreement between you and Nokia.
- **
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU
- ** General Public License versions 2.0 or 3.0 as published by the Free
- ** Software Foundation and appearing in the file LICENSE.GPL included in
- ** the packaging of this file. Please review the following information
- ** to ensure GNU General Public Licensing requirements will be met:
- ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
- ** http://www.gnu.org/copyleft/gpl.html. In addition, as a special
- ** exception, Nokia gives you certain additional rights. These rights
- ** are described in the Nokia Qt GPL Exception version 1.3, included in
- ** the file GPL_EXCEPTION.txt in this package.
- **
- ** Qt for Windows(R) Licensees
- ** As a special exception, Nokia, as the sole copyright holder for Qt
- ** Designer, grants users of the Qt/Eclipse Integration plug-in the
- ** right for the Qt/Eclipse Integration to link to functionality
- ** provided by Qt Designer and its related libraries.
- **
- ** If you are unsure which license is appropriate for your use, please
- ** contact the sales department at qt-sales(a)nokia.com.
- **
- ****************************************************************************/
-
-//
-// Document layout viewer.
-//
-// Copyright (C) 2009 Florent D'Halluin.
-//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
-//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
-//
-
-#include <QtXml>
-
-#include "domitem.hh"
-
-DomItem::DomItem(QDomNode &node, int row, DomItem *parent)
-{
- domNode = node;
- // Record the item's location within its parent.
- rowNumber = row;
- parentItem = parent;
-}
-
-DomItem::~DomItem()
-{
- QHash<int,DomItem*>::iterator it;
- for (it = childItems.begin(); it != childItems.end(); ++it)
- delete it.value();
-}
-
-QDomNode DomItem::node() const
-{
- return domNode;
-}
-
-DomItem *DomItem::parent()
-{
- return parentItem;
-}
-
-DomItem *DomItem::child(int i)
-{
- if (childItems.contains(i))
- return childItems[i];
-
- if (i >= 0 && i < domNode.childNodes().count()) {
- QDomNode childNode = domNode.childNodes().item(i);
- DomItem *childItem = new DomItem(childNode, i, this);
- childItems[i] = childItem;
- return childItem;
- }
- return 0;
-}
-
-int DomItem::row()
-{
- return rowNumber;
-}
diff --git a/scribo/demo/viewer/domitem.hh b/scribo/demo/viewer/domitem.hh
deleted file mode 100644
index a5c22cc..0000000
--- a/scribo/demo/viewer/domitem.hh
+++ /dev/null
@@ -1,75 +0,0 @@
- /****************************************************************************
- **
- ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
- ** Contact: Qt Software Information (qt-info(a)nokia.com)
- **
- ** This file is part of the example classes of the Qt Toolkit.
- **
- ** Commercial Usage
- ** Licensees holding valid Qt Commercial licenses may use this file in
- ** accordance with the Qt Commercial License Agreement provided with the
- ** Software or, alternatively, in accordance with the terms contained in
- ** a written agreement between you and Nokia.
- **
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU
- ** General Public License versions 2.0 or 3.0 as published by the Free
- ** Software Foundation and appearing in the file LICENSE.GPL included in
- ** the packaging of this file. Please review the following information
- ** to ensure GNU General Public Licensing requirements will be met:
- ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
- ** http://www.gnu.org/copyleft/gpl.html. In addition, as a special
- ** exception, Nokia gives you certain additional rights. These rights
- ** are described in the Nokia Qt GPL Exception version 1.3, included in
- ** the file GPL_EXCEPTION.txt in this package.
- **
- ** Qt for Windows(R) Licensees
- ** As a special exception, Nokia, as the sole copyright holder for Qt
- ** Designer, grants users of the Qt/Eclipse Integration plug-in the
- ** right for the Qt/Eclipse Integration to link to functionality
- ** provided by Qt Designer and its related libraries.
- **
- ** If you are unsure which license is appropriate for your use, please
- ** contact the sales department at qt-sales(a)nokia.com.
- **
- ****************************************************************************/
-
-//
-// Document layout viewer.
-//
-// Copyright (C) 2009 Florent D'Halluin.
-//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
-//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
-//
-
-#ifndef DOMITEM_H
-#define DOMITEM_H
-
-#include <QDomNode>
-#include <QHash>
-
-class DomItem
-{
-public:
- DomItem(QDomNode &node, int row, DomItem *parent = 0);
- ~DomItem();
- DomItem *child(int i);
- DomItem *parent();
- QDomNode node() const;
- int row();
-
-private:
- QDomNode domNode;
- QHash<int,DomItem*> childItems;
- DomItem *parentItem;
- int rowNumber;
-};
-
-#endif
diff --git a/scribo/demo/viewer/dommodel.cc b/scribo/demo/viewer/dommodel.cc
deleted file mode 100644
index baaf9a7..0000000
--- a/scribo/demo/viewer/dommodel.cc
+++ /dev/null
@@ -1,198 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
- ** Contact: Qt Software Information (qt-info(a)nokia.com)
- **
- ** This file is part of the example classes of the Qt Toolkit.
- **
- ** Commercial Usage
- ** Licensees holding valid Qt Commercial licenses may use this file in
- ** accordance with the Qt Commercial License Agreement provided with the
- ** Software or, alternatively, in accordance with the terms contained in
- ** a written agreement between you and Nokia.
- **
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU
- ** General Public License versions 2.0 or 3.0 as published by the Free
- ** Software Foundation and appearing in the file LICENSE.GPL included in
- ** the packaging of this file. Please review the following information
- ** to ensure GNU General Public Licensing requirements will be met:
- ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
- ** http://www.gnu.org/copyleft/gpl.html. In addition, as a special
- ** exception, Nokia gives you certain additional rights. These rights
- ** are described in the Nokia Qt GPL Exception version 1.3, included in
- ** the file GPL_EXCEPTION.txt in this package.
- **
- ** Qt for Windows(R) Licensees
- ** As a special exception, Nokia, as the sole copyright holder for Qt
- ** Designer, grants users of the Qt/Eclipse Integration plug-in the
- ** right for the Qt/Eclipse Integration to link to functionality
- ** provided by Qt Designer and its related libraries.
- **
- ** If you are unsure which license is appropriate for your use, please
- ** contact the sales department at qt-sales(a)nokia.com.
- **
- ****************************************************************************/
-
-//
-// Document layout viewer.
-//
-// Copyright (C) 2009 Florent D'Halluin.
-//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
-//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
-//
-
-#include <QtGui>
-#include <QtXml>
-
-#include "domitem.hh"
-#include "dommodel.hh"
-
-DomModel::DomModel(QDomDocument document, QObject *parent)
- : QAbstractItemModel(parent), domDocument(document)
-{
- rootItem = new DomItem(domDocument, 0);
-}
-
-DomModel::~DomModel()
-{
- delete rootItem;
-}
-
-int DomModel::columnCount(const QModelIndex &/*parent*/) const
-{
- return 3;
-}
-
-QVariant DomModel::data(const QModelIndex &index, int role) const
-{
- if (!index.isValid())
- return QVariant();
-
- DomItem *item = static_cast<DomItem*>(index.internalPointer());
- QDomNode node = item->node();
- QDomNamedNodeMap attributeMap = node.attributes();
-
- if (role == Qt::DisplayRole)
- {
- QStringList attributes;
-
- switch (index.column())
- {
- case 0:
- return node.nodeName();
- case 1:
- for (int i = 0; i < attributeMap.count(); ++i)
- {
- QDomNode attribute = attributeMap.item(i);
- attributes << attribute.nodeName() + "=\""
- + attribute.nodeValue() + "\"";
- }
- return attributes.join(" ");
- case 2:
- return node.nodeValue().split("\n").join(" ");
- default:
- return QVariant();
- }
- }
- else if (role == Qt::UserRole)
- {
- QMap<QString, QVariant> attributes;
- switch (index.column())
- {
- case 1:
- for (int i = 0; i < attributeMap.count(); ++i)
- {
- QDomNode attribute = attributeMap.item(i);
- attributes[attribute.nodeName()] = attribute.nodeValue();
- }
- return attributes;
- default:
- return QVariant();
- }
- }
- return QVariant();
-}
-
-Qt::ItemFlags DomModel::flags(const QModelIndex &index) const
-{
- if (!index.isValid())
- return 0;
-
- return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
-}
-
-QVariant DomModel::headerData(int section, Qt::Orientation orientation,
- int role) const
-{
- if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
- switch (section) {
- case 0:
- return tr("Name");
- case 1:
- return tr("Attributes");
- case 2:
- return tr("Value");
- default:
- return QVariant();
- }
- }
-
- return QVariant();
-}
-
-QModelIndex DomModel::index(int row, int column, const QModelIndex &parent)
- const
-{
- if (!hasIndex(row, column, parent))
- return QModelIndex();
-
- DomItem *parentItem;
-
- if (!parent.isValid())
- parentItem = rootItem;
- else
- parentItem = static_cast<DomItem*>(parent.internalPointer());
-
- DomItem *childItem = parentItem->child(row);
- if (childItem)
- return createIndex(row, column, childItem);
- else
- return QModelIndex();
-}
-
-QModelIndex DomModel::parent(const QModelIndex &child) const
-{
- if (!child.isValid())
- return QModelIndex();
-
- DomItem *childItem = static_cast<DomItem*>(child.internalPointer());
- DomItem *parentItem = childItem->parent();
-
- if (!parentItem || parentItem == rootItem)
- return QModelIndex();
-
- return createIndex(parentItem->row(), 0, parentItem);
-}
-
-int DomModel::rowCount(const QModelIndex &parent) const
-{
- if (parent.column() > 0)
- return 0;
-
- DomItem *parentItem;
-
- if (!parent.isValid())
- parentItem = rootItem;
- else
- parentItem = static_cast<DomItem*>(parent.internalPointer());
-
- return parentItem->node().childNodes().count();
-}
diff --git a/scribo/demo/viewer/dommodel.hh b/scribo/demo/viewer/dommodel.hh
deleted file mode 100644
index 16c5a23..0000000
--- a/scribo/demo/viewer/dommodel.hh
+++ /dev/null
@@ -1,85 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
- ** Contact: Qt Software Information (qt-info(a)nokia.com)
- **
- ** This file is part of the example classes of the Qt Toolkit.
- **
- ** Commercial Usage
- ** Licensees holding valid Qt Commercial licenses may use this file in
- ** accordance with the Qt Commercial License Agreement provided with the
- ** Software or, alternatively, in accordance with the terms contained in
- ** a written agreement between you and Nokia.
- **
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU
- ** General Public License versions 2.0 or 3.0 as published by the Free
- ** Software Foundation and appearing in the file LICENSE.GPL included in
- ** the packaging of this file. Please review the following information
- ** to ensure GNU General Public Licensing requirements will be met:
- ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
- ** http://www.gnu.org/copyleft/gpl.html. In addition, as a special
- ** exception, Nokia gives you certain additional rights. These rights
- ** are described in the Nokia Qt GPL Exception version 1.3, included in
- ** the file GPL_EXCEPTION.txt in this package.
- **
- ** Qt for Windows(R) Licensees
- ** As a special exception, Nokia, as the sole copyright holder for Qt
- ** Designer, grants users of the Qt/Eclipse Integration plug-in the
- ** right for the Qt/Eclipse Integration to link to functionality
- ** provided by Qt Designer and its related libraries.
- **
- ** If you are unsure which license is appropriate for your use, please
- ** contact the sales department at qt-sales(a)nokia.com.
- **
- ****************************************************************************/
-
-//
-// Document layout viewer.
-//
-// Copyright (C) 2009 Florent D'Halluin.
-//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
-//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
-//
-
-#ifndef DOMMODEL_H
-#define DOMMODEL_H
-
-#include <QAbstractItemModel>
-#include <QDomDocument>
-#include <QModelIndex>
-#include <QVariant>
-
-class DomItem;
-
-class DomModel : public QAbstractItemModel
-{
- Q_OBJECT
-
- public:
- DomModel(QDomDocument document, QObject *parent = 0);
- ~DomModel();
-
- QVariant data(const QModelIndex &index, int role) const;
- Qt::ItemFlags flags(const QModelIndex &index) const;
- QVariant headerData(int section, Qt::Orientation orientation,
- int role = Qt::DisplayRole) const;
- QModelIndex index(int row, int column,
- const QModelIndex &parent = QModelIndex()) const;
- QModelIndex parent(const QModelIndex &child) const;
- int rowCount(const QModelIndex &parent = QModelIndex()) const;
- int columnCount(const QModelIndex &parent = QModelIndex()) const;
-
-private:
- QDomDocument domDocument;
- DomItem *rootItem;
-};
-
-#endif
diff --git a/scribo/demo/viewer/help_dialog.cc b/scribo/demo/viewer/help_dialog.cc
index fe59d93..3ac5614 100644
--- a/scribo/demo/viewer/help_dialog.cc
+++ b/scribo/demo/viewer/help_dialog.cc
@@ -35,10 +35,8 @@ HelpDialog::HelpDialog()
" select regions to display their properties.\n"
" - Use the mouse or keyboard to move and zoom\n"
" (Arrows, PageUp, PageDown, Home, End).\n"
- "\n"
- "Contact: d-halluin(a)lrde.epita.fr\n"
- "\n"
- "Copyright Florent D'Halluin, 2009.\n");
+ "\n");
+
QLabel* label = new QLabel(help);
diff --git a/scribo/demo/viewer/image_region.cc b/scribo/demo/viewer/image_region.cc
index 04e3c9b..78b636c 100644
--- a/scribo/demo/viewer/image_region.cc
+++ b/scribo/demo/viewer/image_region.cc
@@ -17,7 +17,7 @@
ImageRegion::ImageRegion(region::RegionId id,
QString name,
QColor color,
- QModelIndex index,
+ QString attr_id,
const QVector<QPoint>& points,
bool outline,
bool fill,
@@ -27,7 +27,7 @@ ImageRegion::ImageRegion(region::RegionId id,
id_(id),
name_(name),
color_(color),
- index_(index),
+ attr_id_(attr_id),
shape_(),
rect_(),
outline_(outline),
@@ -65,7 +65,7 @@ ImageRegion::~ImageRegion()
region::RegionId ImageRegion::id()
{
return id_;
-}
+}
void
ImageRegion::paint(QPainter* painter,
diff --git a/scribo/demo/viewer/image_region.hh b/scribo/demo/viewer/image_region.hh
index 38aecb4..be1003d 100644
--- a/scribo/demo/viewer/image_region.hh
+++ b/scribo/demo/viewer/image_region.hh
@@ -27,7 +27,7 @@ public:
ImageRegion(region::RegionId id,
QString name,
QColor color,
- QModelIndex index,
+ QString attr_id,
const QVector<QPoint>& points,
bool outline,
bool fill,
@@ -36,15 +36,16 @@ public:
~ImageRegion();
- region::RegionId id();
+ region::RegionId id();
void paint(QPainter* painter,
const QStyleOptionGraphicsItem* option,
QWidget* widget = 0);
- const QModelIndex& index() const;
QRectF boundingRect() const;
QPainterPath shape() const;
QString name() { return name_; }
+ QRectF rect() { return rect_; }
+ QString attr_id() { return attr_id_; }
public slots:
void setOutline(bool outline);
@@ -60,7 +61,7 @@ private:
region::RegionId id_;
QString name_;
QColor color_;
- QModelIndex index_;
+ QString attr_id_;
QPainterPath shape_;
QRectF rect_;
bool outline_;
diff --git a/scribo/demo/viewer/image_region.hxx b/scribo/demo/viewer/image_region.hxx
index efcf493..0d23426 100644
--- a/scribo/demo/viewer/image_region.hxx
+++ b/scribo/demo/viewer/image_region.hxx
@@ -91,11 +91,4 @@ ImageRegion::shape() const
return shape_;
}
-inline
-const QModelIndex&
-ImageRegion::index() const
-{
- return index_;
-}
-
#endif /* !IMAGE_REGION_HXX_ */
diff --git a/scribo/demo/viewer/image_scene.cc b/scribo/demo/viewer/image_scene.cc
index 62b4b46..dd9d67e 100644
--- a/scribo/demo/viewer/image_scene.cc
+++ b/scribo/demo/viewer/image_scene.cc
@@ -31,7 +31,17 @@ void
ImageScene::mousePressEvent(QGraphicsSceneMouseEvent* event)
{
QGraphicsScene::mousePressEvent(event);
- QList<QGraphicsItem *> items_list = items(event->pos()); // includes both ImageRegions and the picture.
+ QList<QGraphicsItem *> items_list = items(event->scenePos()); // includes both ImageRegions and the picture.
+
+ if (items_list.isEmpty())
+ {
+ if (selected_)
+ {
+ selected_->deselect();
+ emit deselected();
+ selected_ = 0;
+ }
+ }
// Selection is under the mouse click (at event->pos()).
bool selection_is_clicked = items_list.contains(selected_);
@@ -55,20 +65,20 @@ ImageScene::mousePressEvent(QGraphicsSceneMouseEvent* event)
else
{
selected_->deselect();
- emit deselected(selected_->index());
+ emit deselected();
selected_ = 0;
}
}
else
{
selected_->deselect();
- emit deselected(selected_->index());
+ emit deselected();
selected_ = 0;
}
}
selected_ = item;
item->select();
- emit selected(item->index());
+ emit selected(item->attr_id(), item->name());
return;
}
}
@@ -78,7 +88,7 @@ ImageScene::mousePressEvent(QGraphicsSceneMouseEvent* event)
&& (items_list.size() == 1) )// no ImageRegion, only the picture
{
selected_->deselect();
- emit deselected(selected_->index());
+ emit deselected();
selected_ = 0;
}
}
diff --git a/scribo/demo/viewer/image_scene.hh b/scribo/demo/viewer/image_scene.hh
index 64ab590..6fb2c1f 100644
--- a/scribo/demo/viewer/image_scene.hh
+++ b/scribo/demo/viewer/image_scene.hh
@@ -33,8 +33,8 @@ public:
void clear();
signals:
- void selected(const QModelIndex& index);
- void deselected(const QModelIndex& index);
+ void selected(QString, QString);
+ void deselected();
private:
ImageRegion* selected_;
diff --git a/scribo/demo/viewer/key_widget.cc b/scribo/demo/viewer/key_widget.cc
index 47203c3..171c811 100644
--- a/scribo/demo/viewer/key_widget.cc
+++ b/scribo/demo/viewer/key_widget.cc
@@ -128,7 +128,7 @@ KeyWidget::update(QTreeWidgetItem* item)
int id;
id = text_->indexOfChild(item);
if (id == -1)
- id = regions_->indexOfChild(item) + 3;
+ id = regions_->indexOfChild(item) + 4;
emit updated(id, item->checkState(0) == Qt::Checked);
diff --git a/scribo/demo/viewer/property_widget.cc b/scribo/demo/viewer/property_widget.cc
deleted file mode 100644
index 3d2f4d5..0000000
--- a/scribo/demo/viewer/property_widget.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// Document layout viewer.
-//
-// Copyright (C) 2009 Florent D'Halluin.
-//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
-//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
-//
-
-#include "property_widget.hh"
-
-#include "dommodel.hh"
-
-PropertyWidget::PropertyWidget()
- : view_(new QTreeWidget()),
- model_(0)
-{
- QLabel* title = new QLabel(tr("Properties"));
- title->setAlignment(Qt::AlignHCenter);
-
- QVBoxLayout* layout = new QVBoxLayout;
- layout->addWidget(title);
- layout->addWidget(view_);
-
- view_->setColumnCount(2);
- view_->setSortingEnabled(true);
- view_->setRootIsDecorated(false);
- QStringList header_names;
- header_names << tr("Name") << tr("Value");
- view_->setHeaderItem(new QTreeWidgetItem(header_names));
-
- setLayout(layout);
-}
-
-void
-PropertyWidget::update(DomModel* model)
-{
- model_ = model;
-}
-
-void
-PropertyWidget::select(const QModelIndex& index)
-{
- if (!index.isValid())
- return;
-
- QMap<QString, QVariant> data =
- model_->data(index, Qt::UserRole).toMap();
-
- for (QMap<QString, QVariant>::iterator i = data.begin();
- i != data.end();
- ++i)
- {
- QStringList values;
- values << i.key() << i.value().toString();
- view_->addTopLevelItem(new QTreeWidgetItem(values));
- }
-}
-
-void
-PropertyWidget::deselect(const QModelIndex&)
-{
- view_->clear();
-}
-
-PropertyWidget::~PropertyWidget()
-{
-}
diff --git a/scribo/demo/viewer/property_widget.hh b/scribo/demo/viewer/property_widget.hh
deleted file mode 100644
index fc4c755..0000000
--- a/scribo/demo/viewer/property_widget.hh
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// Document layout viewer.
-//
-// Copyright (C) 2009 Florent D'Halluin.
-//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
-//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
-//
-
-#ifndef PROPERTY_WIDGET_HH_
-# define PROPERTY_WIDGET_HH_
-
-# include <QtGui>
-
-class DomModel;
-
-class PropertyWidget
- : public QWidget
-{
- Q_OBJECT
-
-public:
- PropertyWidget();
- ~PropertyWidget();
-
-public slots:
- void update(DomModel* model);
- void select(const QModelIndex& index);
- void deselect(const QModelIndex& index);
-
-private:
- QTreeWidget* view_;
- DomModel* model_;
-};
-
-#endif /* !PROPERTY_WIDGET_HH_ */
diff --git a/scribo/demo/viewer/step_widget.cc b/scribo/demo/viewer/step_widget.cc
index 207796d..010b270 100644
--- a/scribo/demo/viewer/step_widget.cc
+++ b/scribo/demo/viewer/step_widget.cc
@@ -75,11 +75,13 @@ void StepWidget::fill_steps(QString file, bool step, bool container)
if (container)
{
- emit load_image(file, true);
+ emit change_base(true);
+ // emit load_image(file, true);
emit load_xml(file);
}
else
{
+ emit change_base(false);
// image is loaded once
emit load_image(file, false);
diff --git a/scribo/demo/viewer/step_widget.hh b/scribo/demo/viewer/step_widget.hh
index 32602b0..c5d77df 100644
--- a/scribo/demo/viewer/step_widget.hh
+++ b/scribo/demo/viewer/step_widget.hh
@@ -45,6 +45,7 @@ signals:
void load_image(QString, bool);
void load_xml(QString);
void activated(QListWidgetItem*);
+ void change_base(bool);
public slots:
void fill_steps(QString file, bool step = false, bool container = false);
diff --git a/scribo/demo/viewer/viewer.cc b/scribo/demo/viewer/viewer.cc
index e5ec717..090bb1b 100644
--- a/scribo/demo/viewer/viewer.cc
+++ b/scribo/demo/viewer/viewer.cc
@@ -1,19 +1,29 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#include "viewer.hh"
-#include "property_widget.hh"
#include "key_widget.hh"
#include "browser_widget.hh"
#include "image_widget.hh"
@@ -22,8 +32,7 @@
#include "image_scene.hh"
#include "image_region.hh"
#include "help_dialog.hh"
-
-#include "dommodel.hh"
+#include <limits.h>
#include "common.hh"
@@ -37,7 +46,10 @@ Viewer::Viewer(int &argc, char** argv)
key_map_(11),
no_cache_(false),
extended_mode_(false),
- xml_file_(QString(""))
+ xml_file_(QString::Null()),
+ base64_(false),
+ text_(true),
+ use_image_(true)
{
// Key map
@@ -123,6 +135,23 @@ Viewer::Viewer(int &argc, char** argv)
this, SLOT(useExtended(bool)));
option_menu->addAction(extended_action);
+ QAction* show_image_action = new QAction(tr("Show pictures"), file_menu);
+ //show_image_action->setStatusTip(tr(""));
+
+ show_image_action->setCheckable(true);
+ show_image_action->setChecked(true);
+ connect(show_image_action, SIGNAL(toggled(bool)),
+ this, SLOT(useImage(bool)));
+ option_menu->addAction(show_image_action);
+
+ QAction* show_text_action = new QAction(tr("Show text"), file_menu);
+ show_text_action->setStatusTip(tr("Show detected text inside boxes."));
+ show_text_action->setCheckable(true);
+ show_text_action->setChecked(true);
+ connect(show_text_action, SIGNAL(toggled(bool)),
+ this, SLOT(useText(bool)));
+ option_menu->addAction(show_text_action);
+
QMenu* help_menu = win_->menuBar()->addMenu(tr("Help"));
QAction* about_action = new QAction(tr("About"), help_menu);
about_action->setStatusTip(tr("About this program."));
@@ -135,7 +164,6 @@ Viewer::Viewer(int &argc, char** argv)
QSplitter* v_splitter2 = new QSplitter(Qt::Vertical);
StepWidget* step_widget = new StepWidget();
- PropertyWidget* property_wgt = new PropertyWidget();
XmlWidget* xml_wgt = new XmlWidget();
BrowserWidget* browser_wgt =
new BrowserWidget(files_, argc != 2 ? QString() : argv[1]);
@@ -144,7 +172,6 @@ Viewer::Viewer(int &argc, char** argv)
scene_->setBackgroundBrush(scene_->palette().window());
- v_splitter->addWidget(property_wgt);
v_splitter->addWidget(step_widget);
v_splitter->addWidget(key_wgt_);
v_splitter->addWidget(browser_wgt);
@@ -158,280 +185,302 @@ Viewer::Viewer(int &argc, char** argv)
win_->setCentralWidget(h_splitter);
QList<int> v_sizes;
- v_sizes << 200 << 200 << 300 << 400;
+ v_sizes << 200 << 300 << 300;
v_splitter->setSizes(v_sizes);
QList<int> v_sizes2;
- v_sizes2 << 500 << 100;
+ v_sizes2 << 650 << 150;
v_splitter2->setSizes(v_sizes2);
QList<int> h_sizes;
- h_sizes << 200 << 700;
+ h_sizes << 200 << 900;
h_splitter->setSizes(h_sizes);
connect(browser_wgt, SIGNAL(activated(QString, bool, bool)),
step_widget, SLOT(fill_steps(QString, bool, bool)));
+ connect(step_widget, SIGNAL(change_base(bool)),
+ this, SLOT(change_base(bool)));
connect(step_widget, SIGNAL(load_image(QString, bool)),
this, SLOT(load(QString, bool)));
connect(step_widget, SIGNAL(load_xml(QString)),
this, SLOT(load_xml(QString)));
- connect(this, SIGNAL(updated(DomModel*)),
- property_wgt, SLOT(update(DomModel*)));
connect(this, SIGNAL(mode_changed(bool)),
key_wgt_, SLOT(change_mode(bool)));
- connect(this, SIGNAL(updated(DomModel*)),
- xml_wgt, SLOT(update(DomModel*)));
- connect(this, SIGNAL(updated(DomModel*)),
+ connect(this, SIGNAL(updated()),
image_wgt, SLOT(update()));
+ connect(this, SIGNAL(fill_xml(QString)),
+ xml_wgt, SLOT(fill_widget(QString)));
connect(key_wgt_, SIGNAL(updated(int, bool)),
this, SIGNAL(key_updated(int, bool)));
- connect(scene_, SIGNAL(selected(QModelIndex)),
- property_wgt, SLOT(select(QModelIndex)));
- connect(scene_, SIGNAL(deselected(QModelIndex)),
- property_wgt, SLOT(deselect(QModelIndex)));
- connect(scene_, SIGNAL(selected(QModelIndex)),
- xml_wgt, SLOT(select(QModelIndex)));
- connect(scene_, SIGNAL(deselected(QModelIndex)),
- xml_wgt, SLOT(deselect(QModelIndex)));
+ connect(scene_, SIGNAL(selected(QString, QString)),
+ xml_wgt, SLOT(select(QString, QString)));
+ connect(scene_, SIGNAL(deselected()),
+ xml_wgt, SLOT(deselect()));
connect(image_wgt, SIGNAL(scaleUpdated(qreal)),
this, SLOT(maybeChangeCacheMode(qreal)));
}
+
void
-Viewer::load_xml(QString filename)
+Viewer::add_text(QDomNode line, QDomNode region)
{
- QString xml_file = filename;
- xml_file_ = filename;
- app_->setOverrideCursor(QCursor(Qt::WaitCursor));
+ int a_height = region.toElement().attribute("a_height", "0").toInt();
+ int d_height = region.toElement().attribute("d_height", "0").toInt();
+ int x_height = region.toElement().attribute("x_height", "0").toInt();
- scene_->removeItem(image_);
- scene_->clear();
- scene_->addItem(image_);
+ if (d_height < 0)
+ d_height = -d_height;
- scene_->update();
+ if ( (a_height - x_height) < (d_height))
+ a_height = x_height + d_height;
+
+ if ( (a_height - x_height) > (d_height))
+ d_height = a_height - x_height;
+
+ QDomNode coords = region.firstChild();
+
+ while (!coords.isNull() && !coords.toElement().tagName().contains("coords"))
+ coords = coords.nextSibling();
+
+ if (coords.isNull())
+ return;
+
+ QDomNode point = coords.firstChild();
- if (doc_layout_)
+ int x_min = INT_MAX;
+ int y_min = INT_MAX;
+
+ while (!point.isNull())
{
- doc_layout_->deleteLater();
- doc_layout_ = 0;
+ int x = point.toElement().attribute("x", "0").toInt();
+ int y = point.toElement().attribute("y", "0").toInt();
+
+ if (x < x_min)
+ x_min = x;
+
+ if (y < y_min)
+ y_min = y;
+
+ point = point.nextSibling();
}
- emit updated(doc_layout_);
+ QString text = line.toElement().attribute("text", "none");
+ QFont font("Times");
+ font.setPixelSize(a_height + d_height);
+ QGraphicsTextItem* text_item = scene_->addText(text, font);
+ text_item->setPos(x_min, y_min);
+ text_vector_ << text_item;
+ if (!text_)
+ scene_->removeItem(text_item);
- if (QFile::exists(xml_file))
- {
- QFile file(xml_file);
- if (file.open(QIODevice::ReadOnly))
+}
+
+void
+Viewer::add_region(QDomNode father, QString attr_id)
+{
+ QDomNode coords = father.firstChild();
+ QString name = father.toElement().tagName();
+ region::RegionId id = static_cast<region::RegionId>(region_ids_[name]);
+
+ while (!coords.isNull() && !coords.toElement().tagName().contains("coords"))
+ coords = coords.nextSibling();
+
+ if (coords.isNull())
+ return;
+
+ QDomNode point = coords.firstChild();
+ QVector<QPoint> points;
+
+ while (!point.isNull())
{
- QDomDocument document;
- if (document.setContent(&file))
- {
- doc_layout_ = new DomModel(document, this);
- }
- else
- {
- app_->restoreOverrideCursor();
- QMessageBox msgBox;
- msgBox.setText("Error while loading the XML file, please choose another.");
- msgBox.exec();
- }
- file.close();
- }
- }
+ int x = point.toElement().attribute("x", "0").toInt();
+ int y = point.toElement().attribute("y", "0").toInt();
- xml_to_layout();
+ points << QPoint(x, y);
+ point = point.nextSibling();
+ }
- app_->restoreOverrideCursor();
+ ImageRegion* r = new ImageRegion(id,
+ key_map_[id].first,
+ key_map_[id].second,
+ attr_id, points,
+ outline_action_->isChecked(),
+ fill_action_->isChecked(),
+ precise_action_->isChecked(),
+ key_wgt_->isChecked(id));
+
+ connect(this, SIGNAL(key_updated(int, bool)),
+ r, SLOT(setDrawIfSameId(int, bool)));
+ connect(this, SIGNAL(setOutline(bool)),
+ r, SLOT(setOutline(bool)));
+ connect(this, SIGNAL(setPrecise(bool)),
+ r, SLOT(setPrecise(bool)));
+ connect(this, SIGNAL(setFill(bool)),
+ r, SLOT(setFill(bool)));
+
+ scene_->addItem(r);
}
void
-Viewer::xml_to_layout()
+Viewer::load_xml(QString filename)
{
+ text_vector_.clear();
+ image_vector_.clear();
- /* /!\ XML parsing is VERY UGLY /!\
- TO DO: use same parsing as xml_transfrom. */
+ app_->setOverrideCursor(QCursor(Qt::WaitCursor));
+ emit fill_xml(filename);
+
+ if (image_ && image_->scene() && image_->scene() == scene_)
+ scene_->removeItem(image_);
+
+ scene_->clear();
+ if (!base64_ && use_image_)
+ scene_->addItem(image_);
- // Add layout info to the scene.
- if (doc_layout_)
+ scene_->update();
+
+ xml_file_ = filename;
+ QFile f_in(xml_file_);
+ f_in.open(QIODevice::ReadOnly);
+
+ QDomDocument doc;
+ doc.setContent(&f_in);
+ f_in.close();
+
+ QDomElement root = doc.documentElement();
+ QDomNode page = root.firstChild();
+
+ while (!page.isNull() && !page.toElement().tagName().contains("page"))
+ page = page.nextSibling();
+
+ if (page.isNull())
+ return;
+
+ int width = page.toElement().attribute("image_width", "none").toInt();
+ int height = page.toElement().attribute("image_height", "none").toInt();
+
+ scene_->setSceneRect(0, 0, width, height);
+
+ QDomNode region = page.firstChild();
+
+ while (!region.isNull())
{
- QModelIndex pgGts = doc_layout_->index(1, 0);
- QModelIndex page = doc_layout_->index(1, 0, pgGts);
- QModelIndex region;
- QModelIndex attributes;
- QModelIndex coords;
- QModelIndex point;
- for (int i = 0; true; ++i)
- {
- region = doc_layout_->index(i, 0, page);
- attributes = doc_layout_->index(i, 1, page);
- QString name = doc_layout_->data(region, Qt::DisplayRole).toString();
- region::RegionId id = static_cast<region::RegionId>(region_ids_[name]);
-
- coords = doc_layout_->index(0, 0, region);
- if (!region.isValid() || !coords.isValid())
- break;
-
- QVector<QPoint> points;
- for (int j = 0; true; ++j)
+ if (region.toElement().tagName().contains(QRegExp("(image|graphic|chart|separator|table|text)_region")))
+ {
+ QString attr_id = region.toElement().attribute("id", "none");
+ add_region(region, attr_id);
+
+ if ( base64_ &&
+ region.toElement().tagName().contains(QRegExp("(image|graphic|chart|separator|table)_region")))
{
- // Navigate to the coordinate list
- point = doc_layout_->index(j, 1, coords);
- if (!point.isValid())
- break;
+ QDomNode container = region.firstChild();
- QMap<QString, QVariant> data =
- doc_layout_->data(point, Qt::UserRole).toMap();
- int x = data["x"].toInt();
- int y = data["y"].toInt();
+ while (!container.isNull() && !container.toElement().tagName().contains("container"))
+ container = container.nextSibling();
- points << QPoint(x, y);
- }
+ QDomNode coords = region.firstChild();
- // Create region
- ImageRegion* r = new ImageRegion(id,
- key_map_[id].first,
- key_map_[id].second,
- attributes, points,
- outline_action_->isChecked(),
- fill_action_->isChecked(),
- precise_action_->isChecked(),
- key_wgt_->isChecked(id));
-
- connect(this, SIGNAL(key_updated(int, bool)),
- r, SLOT(setDrawIfSameId(int, bool)));
- connect(this, SIGNAL(setOutline(bool)),
- r, SLOT(setOutline(bool)));
- connect(this, SIGNAL(setPrecise(bool)),
- r, SLOT(setPrecise(bool)));
- connect(this, SIGNAL(setFill(bool)),
- r, SLOT(setFill(bool)));
-
- scene_->addItem(r);
-
- // EXTENDED MODE
- if (extended_mode_)
- {
- for (int k = 1; true; ++k)
+ while (!coords.isNull() && !coords.toElement().tagName().contains("coords"))
+ coords = coords.nextSibling();
+
+ if (!container.isNull() && !coords.isNull())
{
- QModelIndex paragraph = doc_layout_->index(k, 0, region);
- QModelIndex attributes_par = doc_layout_->index(k, 1, region);
- if (!paragraph.isValid())
- break;
+ QDomNode child = container.firstChild();
- QString name_par = doc_layout_->data(paragraph, Qt::DisplayRole).toString();
- region::RegionId id_par = static_cast<region::RegionId>(region_ids_[name_par]);
+ while (!child.isNull() && !child.toElement().tagName().contains("data"))
+ child = child.nextSibling();
- QDebug(&name_par) << name_par;
+ QPixmap pix;
+ QString data = child.toElement().text();
+ QByteArray ba;
+ ba = ba.append(data);
+ QByteArray out_ba = QByteArray::fromBase64(ba);
+ pix.loadFromData(out_ba);
- QModelIndex par_coords = doc_layout_->index(0, 0, paragraph);
- QModelIndex point_par;
+ QGraphicsPixmapItem* image = new QGraphicsPixmapItem(pix);
- QVector<QPoint> points_par;
- for (int m = 0; true; ++m)
+ QDomNode point = coords.firstChild();
+
+ int x_min = INT_MAX;
+ int y_min = INT_MAX;
+
+ while (!point.isNull())
{
- // Navigate to the coordinate list
- point_par = doc_layout_->index(m, 1, par_coords);
- if (!point_par.isValid())
- break;
-
- QMap<QString, QVariant> data_par =
- doc_layout_->data(point_par, Qt::UserRole).toMap();
- int x = data_par["x"].toInt();
- int y = data_par["y"].toInt();
- points_par << QPoint(x, y);
+ int x = point.toElement().attribute("x", "0").toInt();
+ int y = point.toElement().attribute("y", "0").toInt();
+
+ if (x < x_min)
+ x_min = x;
+
+ if (y < y_min)
+ y_min = y;
+
+ point = point.nextSibling();
}
- // Create region
- ImageRegion* r_par = new ImageRegion(id_par,
- key_map_[id_par].first,
- key_map_[id_par].second,
- attributes_par, points_par,
- outline_action_->isChecked(),
- fill_action_->isChecked(),
- precise_action_->isChecked(),
- key_wgt_->isChecked(id_par));
-
- connect(this, SIGNAL(key_updated(int, bool)),
- r_par, SLOT(setDrawIfSameId(int, bool)));
- connect(this, SIGNAL(setOutline(bool)),
- r_par, SLOT(setOutline(bool)));
- connect(this, SIGNAL(setPrecise(bool)),
- r_par, SLOT(setPrecise(bool)));
- connect(this, SIGNAL(setFill(bool)),
- r_par, SLOT(setFill(bool)));
-
- scene_->addItem(r_par);
-
- for (int l = 1; true; ++l)
+ image->setShapeMode(QGraphicsPixmapItem::BoundingRectShape);
+ image->setZValue(0);
+ image->setOffset(x_min, y_min);
+ if (use_image_)
+ scene_->addItem(image);
+ image_vector_ << image;
+
+ if (no_cache_)
+ image->setCacheMode(QGraphicsItem::NoCache);
+ else
+ image->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
+
+ child = child.nextSibling();
+ }
+ }
+
+ if (extended_mode_ &&
+ region.toElement().tagName().contains("text_region"))
+ {
+ QDomNode para = region.firstChild();
+ while (!para.isNull() && !para.toElement().tagName().contains("paragraph"))
+ para = para.nextSibling();
+
+ if (!para.isNull())
+ {
+ add_region(para, attr_id);
+
+ QDomNode line = para.firstChild();
+ while (!line.isNull() && !line.toElement().tagName().contains("line"))
+ line = line.nextSibling();
+
+ if (!line.isNull())
{
- QModelIndex line = doc_layout_->index(l, 0, paragraph);
- QModelIndex attributes_line = doc_layout_->index(l, 1, paragraph);
- if (!line.isValid())
- break;
-
- QString name_line = doc_layout_->data(line, Qt::DisplayRole).toString();
- region::RegionId id_line = static_cast<region::RegionId>(region_ids_[name_line]);
-
- QModelIndex line_coords = doc_layout_->index(0, 0, line);
- QModelIndex point_line;
- QVector<QPoint> points_line;
- for (int n = 0; true; ++n)
- {
- // Navigate to the coordinate list
- point_line = doc_layout_->index(n, 1, line_coords);
- if (!point_line.isValid())
- break;
-
- QMap<QString, QVariant> data_line =
- doc_layout_->data(point_line, Qt::UserRole).toMap();
- int x = data_line["x"].toInt();
- int y = data_line["y"].toInt();
- points_line << QPoint(x, y);
- }
-
- // Create region
- ImageRegion* r_line = new ImageRegion(id_line,
- key_map_[id_line].first,
- key_map_[id_line].second,
- attributes_line, points_line,
- outline_action_->isChecked(),
- fill_action_->isChecked(),
- precise_action_->isChecked(),
- key_wgt_->isChecked(id_line));
-
- connect(this, SIGNAL(key_updated(int, bool)),
- r_line, SLOT(setDrawIfSameId(int, bool)));
- connect(this, SIGNAL(setOutline(bool)),
- r_line, SLOT(setOutline(bool)));
- connect(this, SIGNAL(setPrecise(bool)),
- r_line, SLOT(setPrecise(bool)));
- connect(this, SIGNAL(setFill(bool)),
- r_line, SLOT(setFill(bool)));
-
- scene_->addItem(r_line);
+ add_region(line, attr_id);
+ add_text(line, region);
}
}
}
- // END OF EXTENDED MODE
- }
+ }
- emit updated(doc_layout_);
- key_wgt_->update_all();
+ region = region.nextSibling();
}
+
+ emit updated();
+ scene_->update();
+ key_wgt_->update_all();
+
+ app_->restoreOverrideCursor();
}
void
Viewer::load(QString filename, bool b)
{
app_->setOverrideCursor(QCursor(Qt::WaitCursor));
+
scene_->clear();
scene_->update();
image_ = 0;
@@ -443,24 +492,21 @@ Viewer::load(QString filename, bool b)
image_ = new QGraphicsPixmapItem(load_base64(filename));
else
image_ = new QGraphicsPixmapItem(QPixmap(filename));
+
image_->setShapeMode(QGraphicsPixmapItem::BoundingRectShape);
image_->setZValue(0);
- scene_->addItem(image_);
+ if (use_image_)
+ scene_->addItem(image_);
if (no_cache_)
image_->setCacheMode(QGraphicsItem::NoCache);
else
image_->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
- if (doc_layout_)
- {
- doc_layout_->deleteLater();
- doc_layout_ = 0;
- }
-
app_->restoreOverrideCursor();
+ emit updated();
- emit updated(doc_layout_);
+ app_->restoreOverrideCursor();
}
int
@@ -493,10 +539,11 @@ void Viewer::useExtended(bool b)
{
extended_mode_ = b;
key_wgt_->update_all();
- if (xml_file_ != QString(""))
+
+ if (xml_file_ != QString::Null())
load_xml(xml_file_);
- emit mode_changed (b);
+ emit mode_changed(b);
}
void
@@ -557,4 +604,54 @@ QPixmap Viewer::load_base64(QString xml)
return pix;
}
-// LocalWords: hh
+void
+Viewer::useText(bool b)
+{
+ text_ = b;
+ if (!b)
+ {
+ for (int i = 0; i < text_vector_.size(); ++i)
+ scene_->removeItem(text_vector_[i]);
+ }
+ else
+ {
+ for (int i = 0; i < text_vector_.size(); ++i)
+ scene_->addItem(text_vector_[i]);
+ }
+
+ emit updated();
+ scene_->update();
+}
+
+void
+Viewer::useImage(bool b)
+{
+ use_image_ = b;
+ if (!b)
+ {
+ if (image_ && image_->scene() && image_->scene() == scene_)
+ scene_->removeItem(image_);
+
+ for (int i = 0; i < image_vector_.size(); ++i)
+ scene_->removeItem(image_vector_[i]);
+ }
+ else
+ {
+ if (image_ && image_->scene() == 0)
+ scene_->addItem(image_);
+
+ for (int i = 0; i < image_vector_.size(); ++i)
+ scene_->addItem(image_vector_[i]);
+ }
+
+
+
+ emit updated();
+ scene_->update();
+}
+
+void
+Viewer::change_base(bool b)
+{
+ base64_ = b;
+}
diff --git a/scribo/demo/viewer/viewer.hh b/scribo/demo/viewer/viewer.hh
index 7093da8..800bdd5 100644
--- a/scribo/demo/viewer/viewer.hh
+++ b/scribo/demo/viewer/viewer.hh
@@ -17,6 +17,7 @@
# include <QtGui>
# include "common.hh"
+# include <QDomNode>
class ImageScene;
class DomModel;
@@ -44,15 +45,18 @@ public slots:
void maybeChangeCacheMode(qreal scale);
void useCache(bool b);
void useExtended(bool b);
+ void useText(bool b);
+ void useImage(bool b);
+ void change_base(bool b);
signals:
- void updated(DomModel* model);
- void loaded(DomModel* model);
+ void updated();
void key_updated(int key, bool checked);
void setOutline(bool b);
void setPrecise(bool b);
void setFill(bool b);
void mode_changed(bool b);
+ void fill_xml(QString);
private:
Viewer(int &argc, char** argv);
@@ -60,6 +64,8 @@ private:
void xml_to_layout();
QPixmap load_base64(QString xml);
+ void add_region(QDomNode father, QString attr_id);
+ void add_text(QDomNode line, QDomNode region);
QApplication* app_;
QMainWindow* win_;
@@ -82,6 +88,11 @@ private:
bool no_cache_;
bool extended_mode_;
QString xml_file_;
+ bool base64_;
+ bool text_;
+ bool use_image_;
+ QVector<QGraphicsTextItem *> text_vector_;
+ QVector<QGraphicsPixmapItem*> image_vector_;
};
#include "viewer.hxx"
diff --git a/scribo/demo/viewer/xml_widget.cc b/scribo/demo/viewer/xml_widget.cc
index 36f0406..a4ef2f6 100644
--- a/scribo/demo/viewer/xml_widget.cc
+++ b/scribo/demo/viewer/xml_widget.cc
@@ -14,39 +14,160 @@
#include "xml_widget.hh"
-#include "dommodel.hh"
-
XmlWidget::XmlWidget()
- : view_(new QTreeView()),
- model_(0)
+ : tree_(new QTreeWidget()),
+ property_(new QTreeWidget())
{
QLabel* title = new QLabel(tr("XML"));
title->setAlignment(Qt::AlignHCenter);
+ tree_->setHeaderHidden(true);
+
QVBoxLayout* layout = new QVBoxLayout;
+ QHBoxLayout *hlayout = new QHBoxLayout;
+
+ QStringList header_names;
+ header_names << tr("Name") << tr("Value");
+ property_->setHeaderItem(new QTreeWidgetItem(header_names));
+
+ hlayout->addWidget(tree_);
+ hlayout->addWidget(property_);
layout->addWidget(title);
- layout->addWidget(view_);
+ layout->addLayout(hlayout);
setLayout(layout);
+
+ connect(tree_, SIGNAL(itemDoubleClicked (QTreeWidgetItem*, int)),
+ this, SLOT(check_item (QTreeWidgetItem*) ) );
}
void
-XmlWidget::update(DomModel* model)
+XmlWidget::select(QString id, QString name)
{
- view_->setModel(model);
- // view_->resizeColumnToContents(2);
+ QDomNode n = node_map_[item_map_[id]];
+
+ if (name.contains("Paragraph"))
+ {
+ n = n.firstChild();
+ while (!n.isNull() && !n.toElement().tagName().contains("paragraph"))
+ n = n.nextSibling();
+ }
+
+ if (name.contains("Text line"))
+ {
+ n = n.firstChild();
+ while (!n.isNull() && !n.toElement().tagName().contains("paragraph"))
+ n = n.nextSibling();
+
+ if (!n.isNull())
+ {
+ n = n.firstChild();
+ while (!n.isNull() && !n.toElement().tagName().contains("line"))
+ n = n.nextSibling();
+ }
+ }
+
+ if (!n.isNull())
+ {
+ QTreeWidgetItem* item = node_map_.key(n);
+
+ tree_->setCurrentItem(item, 0);
+ item->setExpanded(true);
+ check_item(item);
+ }
}
void
-XmlWidget::select(const QModelIndex& index)
+XmlWidget::check_item (QTreeWidgetItem* item)
{
- view_->setCurrentIndex(index);
+ QDomNode node = node_map_[item];
+
+ if (node.hasAttributes())
+ {
+ property_->clear();
+ QDomNamedNodeMap attributes = node.toElement().attributes();
+
+ for (int i = 0; i < attributes.count(); ++i)
+ {
+ QStringList values;
+ values << attributes.item(i).toAttr().name() << attributes.item(i).toAttr().value();
+ property_->addTopLevelItem(new QTreeWidgetItem(values));
+ }
+ }
+
+ property_->resizeColumnToContents(0);
+}
+
+void XmlWidget::NFS(QDomNode node, QTreeWidgetItem* item)
+{
+ if (!node.isNull())
+ {
+ QString append;
+ if (node.toElement().tagName().contains("point"))
+ {
+ QString x = node.toElement().attribute("x", "0");
+ QString y = node.toElement().attribute("y", "0");
+ append.append(" = (" + x + ", " + y + ")");
+ }
+
+ QTreeWidgetItem* child =
+ new QTreeWidgetItem(QStringList(node.toElement().tagName() + node.nodeValue() + append));
+
+ if (node.hasAttributes())
+ {
+ QString id = node.toElement().attribute("id", "none");
+ item_map_[id] = child;
+ }
+
+ node_map_[child] = node;
+ item->addChild(child);
+
+ QDomNode sibling = node.firstChild();
+ while (!sibling.isNull())
+ {
+ if (!sibling.toElement().tagName().contains("data"))
+ NFS(sibling, child);
+ sibling = sibling.nextSibling();
+ }
+ }
+}
+
+void XmlWidget::fill_widget(QString xml)
+{
+ node_map_.clear();
+ item_map_.clear();
+
+ tree_->clear();
+ property_->clear();
+ QFile f_in(xml);
+ f_in.open(QIODevice::ReadOnly);
+
+ QDomDocument doc;
+ doc.setContent(&f_in);
+ f_in.close();
+
+ int i = 0;
+
+ QDomElement root = doc.documentElement();
+ QTreeWidgetItem* root_item=
+ new QTreeWidgetItem(QStringList(root.tagName()));
+
+ tree_->addTopLevelItem(root_item);
+ root = root.firstChild().toElement();
+
+ while (!root.isNull())
+ {
+ ++i;
+ NFS(root, root_item);
+ root = root.nextSibling().toElement();
+ }
}
void
-XmlWidget::deselect(const QModelIndex&)
+XmlWidget::deselect()
{
+ property_->clear();
}
XmlWidget::~XmlWidget()
diff --git a/scribo/demo/viewer/xml_widget.hh b/scribo/demo/viewer/xml_widget.hh
index b3de3fa..c56a736 100644
--- a/scribo/demo/viewer/xml_widget.hh
+++ b/scribo/demo/viewer/xml_widget.hh
@@ -16,6 +16,7 @@
# define XML_WIDGET_HH_
# include <QtGui>
+# include <QDomNode>
class DomModel;
@@ -29,13 +30,17 @@ public:
~XmlWidget();
public slots:
- void update(DomModel* model);
- void select(const QModelIndex& index);
- void deselect(const QModelIndex& index);
+ void select(QString id, QString name);
+ void deselect();
+ void fill_widget(QString xml);
+ void check_item (QTreeWidgetItem* item);
private:
- QTreeView* view_;
- DomModel* model_;
+ void NFS(QDomNode node, QTreeWidgetItem* item);
+ QTreeWidget* tree_;
+ QTreeWidget* property_;
+ QMap<QString, QTreeWidgetItem*> item_map_;
+ QMap<QTreeWidgetItem*, QDomNode> node_map_;
};
#endif /* !XML_WIDGET_HH_ */
--
1.5.6.5
1
0
13 Aug '10
* scribo/demo/viewer/viewer.cc
---
scribo/ChangeLog | 52 +++++++++++++++++++++++------------------
scribo/demo/viewer/viewer.cc | 5 +---
2 files changed, 30 insertions(+), 27 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index 6e7d231..914a0a0 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,34 +1,40 @@
2010-07-20 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
+ Text selectable in Qt interface.
+
+ * scribo/demo/viewer/viewer.cc
+
+2010-07-20 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
+
Some changes in XML interface.
- * demo/viewer/property_widget.cc,
- * demo/viewer/property_widget.hh,
- * demo/viewer/domitem.cc,
- * demo/viewer/domitem.hh,
- * demo/viewer/dommodel.cc,
- * demo/viewer/dommodel.hh: Delete.
+ * scribo/demo/viewer/property_widget.cc,
+ * scribo/demo/viewer/property_widget.hh,
+ * scribo/demo/viewer/domitem.cc,
+ * scribo/demo/viewer/domitem.hh,
+ * scribo/demo/viewer/dommodel.cc,
+ * scribo/demo/viewer/dommodel.hh: Delete.
- * demo/viewer/Makefile.am
+ * scribo/demo/viewer/Makefile.am
- * demo/viewer/browser_widget.cc: Fix, xmlc extension instead of xmle.
+ * scribo/demo/viewer/browser_widget.cc: Fix, xmlc extension instead of xmle.
- * demo/viewer/key_widget.cc,
- * demo/viewer/step_widget.cc,
- * demo/viewer/step_widget.hh,
- * demo/viewer/image_scene.cc,
- * demo/viewer/image_scene.hh,
- * demo/viewer/help_dialog.cc,
- * demo/viewer/image_region.cc,
- * demo/viewer/image_region.hh,
- * demo/viewer/image_region.hxx: Small changes.
+ * scribo/demo/viewer/key_widget.cc,
+ * scribo/demo/viewer/step_widget.cc,
+ * scribo/demo/viewer/step_widget.hh,
+ * scribo/demo/viewer/image_scene.cc,
+ * scribo/demo/viewer/image_scene.hh,
+ * scribo/demo/viewer/help_dialog.cc,
+ * scribo/demo/viewer/image_region.cc,
+ * scribo/demo/viewer/image_region.hh,
+ * scribo/demo/viewer/image_region.hxx: Small changes.
- * demo/viewer/viewer.cc,
- * demo/viewer/viewer.hh: Add base 64 cropped pictures support, text viewer
+ * scribo/demo/viewer/viewer.cc,
+ * scribo/demo/viewer/viewer.hh: Add base 64 cropped pictures support, text viewer
and change XML parsing.
- * demo/viewer/xml_widget.cc,
- * demo/viewer/xml_widget.hh: Change widget, tree and attributes are together.
+ * scribo/demo/viewer/xml_widget.cc,
+ * scribo/demo/viewer/xml_widget.hh: Change widget, tree and attributes are together.
2010-07-16 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
diff --git a/scribo/demo/viewer/viewer.cc b/scribo/demo/viewer/viewer.cc
index 090bb1b..f93177e 100644
--- a/scribo/demo/viewer/viewer.cc
+++ b/scribo/demo/viewer/viewer.cc
@@ -275,6 +275,7 @@ Viewer::add_text(QDomNode line, QDomNode region)
font.setPixelSize(a_height + d_height);
QGraphicsTextItem* text_item = scene_->addText(text, font);
text_item->setPos(x_min, y_min);
+ text_item->setTextInteractionFlags(Qt::TextSelectableByMouse);
text_vector_ << text_item;
if (!text_)
scene_->removeItem(text_item);
@@ -619,7 +620,6 @@ Viewer::useText(bool b)
scene_->addItem(text_vector_[i]);
}
- emit updated();
scene_->update();
}
@@ -644,9 +644,6 @@ Viewer::useImage(bool b)
scene_->addItem(image_vector_[i]);
}
-
-
- emit updated();
scene_->update();
}
--
1.5.6.5
1
0
last-svn-commit-487-g0321b1b Files headers change + base64 data hide in xml tree.
by Arthur Crepin-Leblond 13 Aug '10
by Arthur Crepin-Leblond 13 Aug '10
13 Aug '10
* scribo/demo/viewer/README,
* scribo/demo/viewer/browser_widget.cc,
* scribo/demo/viewer/browser_widget.hh,
* scribo/demo/viewer/common.hh,
* scribo/demo/viewer/help_dialog.cc,
* scribo/demo/viewer/help_dialog.hh,
* scribo/demo/viewer/image_region.cc,
* scribo/demo/viewer/image_region.hh,
* scribo/demo/viewer/image_scene.cc,
* scribo/demo/viewer/image_scene.hh,
* scribo/demo/viewer/image_view.cc,
* scribo/demo/viewer/image_view.hh,
* scribo/demo/viewer/image_widget.cc,
* scribo/demo/viewer/image_widget.hh,
* scribo/demo/viewer/key_widget.cc,
* scribo/demo/viewer/key_widget.hh,
* scribo/demo/viewer/main.cc,
* scribo/demo/viewer/viewer.cc,
* scribo/demo/viewer/viewer.hh,
* scribo/demo/viewer/viewer.hxx,
* scribo/demo/viewer/xml_widget.cc: Change header (add LRDE copyright)
* scribo/demo/viewer/xml_widget.hh: Hide data in base 64 to improve loading speed.
---
scribo/ChangeLog | 28 ++++++++++++++++++++++++++++
scribo/demo/viewer/README | 32 ++++++++++++++++++++------------
scribo/demo/viewer/browser_widget.cc | 27 +++++++++++++++++++--------
scribo/demo/viewer/browser_widget.hh | 27 +++++++++++++++++++--------
scribo/demo/viewer/common.hh | 27 +++++++++++++++++++--------
scribo/demo/viewer/help_dialog.cc | 27 +++++++++++++++++++--------
scribo/demo/viewer/help_dialog.hh | 27 +++++++++++++++++++--------
scribo/demo/viewer/image_region.cc | 27 +++++++++++++++++++--------
scribo/demo/viewer/image_region.hh | 27 +++++++++++++++++++--------
scribo/demo/viewer/image_scene.cc | 27 +++++++++++++++++++--------
scribo/demo/viewer/image_scene.hh | 27 +++++++++++++++++++--------
scribo/demo/viewer/image_view.cc | 27 +++++++++++++++++++--------
scribo/demo/viewer/image_view.hh | 27 +++++++++++++++++++--------
scribo/demo/viewer/image_widget.cc | 27 +++++++++++++++++++--------
scribo/demo/viewer/image_widget.hh | 27 +++++++++++++++++++--------
scribo/demo/viewer/key_widget.cc | 27 +++++++++++++++++++--------
scribo/demo/viewer/key_widget.hh | 27 +++++++++++++++++++--------
scribo/demo/viewer/main.cc | 27 +++++++++++++++++++--------
scribo/demo/viewer/viewer.cc | 4 ++--
scribo/demo/viewer/viewer.hh | 27 +++++++++++++++++++--------
scribo/demo/viewer/viewer.hxx | 27 +++++++++++++++++++--------
scribo/demo/viewer/xml_widget.cc | 34 ++++++++++++++++++++++++++--------
scribo/demo/viewer/xml_widget.hh | 27 +++++++++++++++++++--------
23 files changed, 437 insertions(+), 174 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index 914a0a0..412cbfb 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,3 +1,31 @@
+2010-07-21 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
+
+ Files headers change + base64 data hide in xml tree.
+
+ * scribo/demo/viewer/README,
+ * scribo/demo/viewer/browser_widget.cc,
+ * scribo/demo/viewer/browser_widget.hh,
+ * scribo/demo/viewer/common.hh,
+ * scribo/demo/viewer/help_dialog.cc,
+ * scribo/demo/viewer/help_dialog.hh,
+ * scribo/demo/viewer/image_region.cc,
+ * scribo/demo/viewer/image_region.hh,
+ * scribo/demo/viewer/image_scene.cc,
+ * scribo/demo/viewer/image_scene.hh,
+ * scribo/demo/viewer/image_view.cc,
+ * scribo/demo/viewer/image_view.hh,
+ * scribo/demo/viewer/image_widget.cc,
+ * scribo/demo/viewer/image_widget.hh,
+ * scribo/demo/viewer/key_widget.cc,
+ * scribo/demo/viewer/key_widget.hh,
+ * scribo/demo/viewer/main.cc,
+ * scribo/demo/viewer/viewer.cc,
+ * scribo/demo/viewer/viewer.hh,
+ * scribo/demo/viewer/viewer.hxx,
+ * scribo/demo/viewer/xml_widget.cc: Change header (add LRDE copyright)
+
+ * scribo/demo/viewer/xml_widget.hh: Hide data in base 64 to improve loading speed.
+
2010-07-20 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
Text selectable in Qt interface.
diff --git a/scribo/demo/viewer/README b/scribo/demo/viewer/README
index 6032a41..fa37cd6 100644
--- a/scribo/demo/viewer/README
+++ b/scribo/demo/viewer/README
@@ -1,15 +1,27 @@
+Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
-Document layout viewer.
+This file is part of Olena.
-Copyright (C) 2009 Florent D'Halluin.
+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.
-This program 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; either version 2
-of the License, or (at your option) any later version.
+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.
-The complete GNU General Public Licence Notice can be found as the
-`COPYING' file in the root directory.
+You should have received a copy of the GNU General Public License
+along with Olena. If not, see <http:www.gnu.org/licenses/>.
+
+As a special exception, you may use this file as part of a free
+software project without restriction. Specifically, if other files
+instantiate templates or use macros or inline functions from this
+file, or you compile this file and link it with other files to produce
+an executable, this file does not by itself cause the resulting
+executable to be covered by the GNU General Public License. This
+exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
__________________________________________________________________
@@ -19,9 +31,6 @@ Document Layout Viewer
Purpose:
- Display layout information about image documents.
-Contact:
-d-halluin(a)lrde.epita.fr
-
Usage:
- Get XML layout descriptions (PAGE format, ICDAR2009).
- Put XML and image files in the same directory, with the same name.
@@ -30,4 +39,3 @@ Usage:
Infos:
- Everything is read-only.
-- The DOM Model classes are a slightly modified Qt example.
diff --git a/scribo/demo/viewer/browser_widget.cc b/scribo/demo/viewer/browser_widget.cc
index 43de1e2..b9ccbec 100644
--- a/scribo/demo/viewer/browser_widget.cc
+++ b/scribo/demo/viewer/browser_widget.cc
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#include "browser_widget.hh"
diff --git a/scribo/demo/viewer/browser_widget.hh b/scribo/demo/viewer/browser_widget.hh
index 9266832..964dc47 100644
--- a/scribo/demo/viewer/browser_widget.hh
+++ b/scribo/demo/viewer/browser_widget.hh
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#ifndef BROWSER_WIDGET_HH_
# define BROWSER_WIDGET_HH_
diff --git a/scribo/demo/viewer/common.hh b/scribo/demo/viewer/common.hh
index 346ea51..4dee676 100644
--- a/scribo/demo/viewer/common.hh
+++ b/scribo/demo/viewer/common.hh
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#ifndef COMMON_HH_
# define COMMON_HH_
diff --git a/scribo/demo/viewer/help_dialog.cc b/scribo/demo/viewer/help_dialog.cc
index 3ac5614..932d66f 100644
--- a/scribo/demo/viewer/help_dialog.cc
+++ b/scribo/demo/viewer/help_dialog.cc
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#include "help_dialog.hh"
diff --git a/scribo/demo/viewer/help_dialog.hh b/scribo/demo/viewer/help_dialog.hh
index 114d8f5..2b4adcf 100644
--- a/scribo/demo/viewer/help_dialog.hh
+++ b/scribo/demo/viewer/help_dialog.hh
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#ifndef HELP_DIALOG_HH_
# define HELP_DIALOG_HH_
diff --git a/scribo/demo/viewer/image_region.cc b/scribo/demo/viewer/image_region.cc
index 78b636c..037ed56 100644
--- a/scribo/demo/viewer/image_region.cc
+++ b/scribo/demo/viewer/image_region.cc
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#include "image_region.hh"
diff --git a/scribo/demo/viewer/image_region.hh b/scribo/demo/viewer/image_region.hh
index be1003d..a492b44 100644
--- a/scribo/demo/viewer/image_region.hh
+++ b/scribo/demo/viewer/image_region.hh
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#ifndef IMAGE_REGION_HH_
# define IMAGE_REGION_HH_
diff --git a/scribo/demo/viewer/image_scene.cc b/scribo/demo/viewer/image_scene.cc
index dd9d67e..850647f 100644
--- a/scribo/demo/viewer/image_scene.cc
+++ b/scribo/demo/viewer/image_scene.cc
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#include "image_scene.hh"
#include "image_region.hh"
diff --git a/scribo/demo/viewer/image_scene.hh b/scribo/demo/viewer/image_scene.hh
index 6fb2c1f..4c417b0 100644
--- a/scribo/demo/viewer/image_scene.hh
+++ b/scribo/demo/viewer/image_scene.hh
@@ -1,17 +1,28 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#ifndef IMAGE_SCENE_HH_
# define IMAGE_SCENE_HH_
diff --git a/scribo/demo/viewer/image_view.cc b/scribo/demo/viewer/image_view.cc
index 9182c1b..05a85e8 100644
--- a/scribo/demo/viewer/image_view.cc
+++ b/scribo/demo/viewer/image_view.cc
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#include "image_view.hh"
diff --git a/scribo/demo/viewer/image_view.hh b/scribo/demo/viewer/image_view.hh
index 84f722f..ab48a36 100644
--- a/scribo/demo/viewer/image_view.hh
+++ b/scribo/demo/viewer/image_view.hh
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#ifndef IMAGE_VIEW_HH_
# define IMAGE_VIEW_HH_
diff --git a/scribo/demo/viewer/image_widget.cc b/scribo/demo/viewer/image_widget.cc
index b4bee72..3e3f241 100644
--- a/scribo/demo/viewer/image_widget.cc
+++ b/scribo/demo/viewer/image_widget.cc
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#include "image_widget.hh"
#include "image_view.hh"
diff --git a/scribo/demo/viewer/image_widget.hh b/scribo/demo/viewer/image_widget.hh
index 87259b0..a3f51e4 100644
--- a/scribo/demo/viewer/image_widget.hh
+++ b/scribo/demo/viewer/image_widget.hh
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#ifndef IMAGE_WIDGET_HH_
# define IMAGE_WIDGET_HH_
diff --git a/scribo/demo/viewer/key_widget.cc b/scribo/demo/viewer/key_widget.cc
index 171c811..44839c5 100644
--- a/scribo/demo/viewer/key_widget.cc
+++ b/scribo/demo/viewer/key_widget.cc
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#include "key_widget.hh"
#include "common.hh"
diff --git a/scribo/demo/viewer/key_widget.hh b/scribo/demo/viewer/key_widget.hh
index d7767b0..113835d 100644
--- a/scribo/demo/viewer/key_widget.hh
+++ b/scribo/demo/viewer/key_widget.hh
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#ifndef KEY_WIDGET_HH_
# define KEY_WIDGET_HH_
diff --git a/scribo/demo/viewer/main.cc b/scribo/demo/viewer/main.cc
index 640ea0f..b55ad84 100644
--- a/scribo/demo/viewer/main.cc
+++ b/scribo/demo/viewer/main.cc
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#include <QtGui>
#include <iostream>
diff --git a/scribo/demo/viewer/viewer.cc b/scribo/demo/viewer/viewer.cc
index f93177e..10c1a43 100644
--- a/scribo/demo/viewer/viewer.cc
+++ b/scribo/demo/viewer/viewer.cc
@@ -185,11 +185,11 @@ Viewer::Viewer(int &argc, char** argv)
win_->setCentralWidget(h_splitter);
QList<int> v_sizes;
- v_sizes << 200 << 300 << 300;
+ v_sizes << 200 << 250 << 350;
v_splitter->setSizes(v_sizes);
QList<int> v_sizes2;
- v_sizes2 << 650 << 150;
+ v_sizes2 << 725 << 175;
v_splitter2->setSizes(v_sizes2);
QList<int> h_sizes;
diff --git a/scribo/demo/viewer/viewer.hh b/scribo/demo/viewer/viewer.hh
index 800bdd5..b1f406d 100644
--- a/scribo/demo/viewer/viewer.hh
+++ b/scribo/demo/viewer/viewer.hh
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#ifndef VIEWER_HH_
# define VIEWER_HH_
diff --git a/scribo/demo/viewer/viewer.hxx b/scribo/demo/viewer/viewer.hxx
index 72ee1f2..b72eaff 100644
--- a/scribo/demo/viewer/viewer.hxx
+++ b/scribo/demo/viewer/viewer.hxx
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#ifndef VIEWER_HXX_
# define VIEWER_HXX_
diff --git a/scribo/demo/viewer/xml_widget.cc b/scribo/demo/viewer/xml_widget.cc
index a4ef2f6..2d10bd7 100644
--- a/scribo/demo/viewer/xml_widget.cc
+++ b/scribo/demo/viewer/xml_widget.cc
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#include "xml_widget.hh"
@@ -128,6 +139,13 @@ void XmlWidget::NFS(QDomNode node, QTreeWidgetItem* item)
{
if (!sibling.toElement().tagName().contains("data"))
NFS(sibling, child);
+ else
+ {
+ QTreeWidgetItem* child_son =
+ new QTreeWidgetItem(QStringList("data = base64-encoded"));
+
+ child->addChild(child_son);
+ }
sibling = sibling.nextSibling();
}
}
diff --git a/scribo/demo/viewer/xml_widget.hh b/scribo/demo/viewer/xml_widget.hh
index c56a736..b80835b 100644
--- a/scribo/demo/viewer/xml_widget.hh
+++ b/scribo/demo/viewer/xml_widget.hh
@@ -1,16 +1,27 @@
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
-// Document layout viewer.
+// This file is part of Olena.
//
-// Copyright (C) 2009 Florent D'Halluin.
+// 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.
//
-// This program 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; either version 2
-// of the License, or (at your option) any later version.
+// 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.
//
-// The complete GNU General Public Licence Notice can be found as the
-// `COPYING' file in the root directory.
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
#ifndef XML_WIDGET_HH_
# define XML_WIDGET_HH_
--
1.5.6.5
1
0
13 Aug '10
* scribo/sandbox/arthur/xml_transform/README
* scribo/sandbox/arthur/xml_transform/image_crop.cc: Delete verbose mode.
* scribo/sandbox/arthur/xml_transform/main.cc: Small fix.
---
scribo/ChangeLog | 9 +++++++++
scribo/sandbox/arthur/xml_transform/README | 7 ++++++-
scribo/sandbox/arthur/xml_transform/image_crop.cc | 8 ++++----
scribo/sandbox/arthur/xml_transform/main.cc | 6 +++---
4 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index 412cbfb..db348b0 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,5 +1,14 @@
2010-07-21 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
+ Small changes in xml_transform.
+
+ * scribo/sandbox/arthur/xml_transform/README
+
+ * scribo/sandbox/arthur/xml_transform/image_crop.cc: Delete verbose mode.
+ * scribo/sandbox/arthur/xml_transform/main.cc: Small fix.
+
+2010-07-21 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
+
Files headers change + base64 data hide in xml tree.
* scribo/demo/viewer/README,
diff --git a/scribo/sandbox/arthur/xml_transform/README b/scribo/sandbox/arthur/xml_transform/README
index 1f358e3..aedf220 100644
--- a/scribo/sandbox/arthur/xml_transform/README
+++ b/scribo/sandbox/arthur/xml_transform/README
@@ -21,4 +21,9 @@ Base 64 operations:
BUILD:
-Chnage the environment variable QMAKE_CXXFLAGS to indicate the correct paths to milena and olena in the .pro file then, just type qmake and make.
\ No newline at end of file
+Chnage the environment variable QMAKE_CXXFLAGS in xml_transfrom.pro then
+
+mkdir _build
+cd _build
+qmake ../xml_transfrom.pro
+make
\ No newline at end of file
diff --git a/scribo/sandbox/arthur/xml_transform/image_crop.cc b/scribo/sandbox/arthur/xml_transform/image_crop.cc
index 8aafe45..ffe2b44 100644
--- a/scribo/sandbox/arthur/xml_transform/image_crop.cc
+++ b/scribo/sandbox/arthur/xml_transform/image_crop.cc
@@ -61,10 +61,10 @@ void ImageCrop::save_image(QString file)
else
filename = file;
- std::cout << "Saving " << image_.toStdString() << " to "
- << output_dir_.toStdString() << "img/"
- << filename.toStdString() << ".png"
- << std::endl;
+ // std::cout << "Saving " << image_.toStdString() << " to "
+ // << output_dir_.toStdString() << "img/"
+ // << filename.toStdString() << ".png"
+ // << std::endl;
io::magick::save(ima, output_dir_.toStdString() + "img/" + filename.toStdString() + ".png");
}
diff --git a/scribo/sandbox/arthur/xml_transform/main.cc b/scribo/sandbox/arthur/xml_transform/main.cc
index e097430..c259c76 100644
--- a/scribo/sandbox/arthur/xml_transform/main.cc
+++ b/scribo/sandbox/arthur/xml_transform/main.cc
@@ -9,15 +9,15 @@ int main(int argc, char **argv)
man = "xml_transform\n";
man += "OPTIONS:\n\n";
man += "HTML output:\n";
- man += "\t--html <xml> <ppm> <out_dir> : HTML output with non-text regions croped into many png files.\n";
+ man += "\t--html <xml> <ppm> <out_dir> : HTML output with non-text regions cropped into many png files.\n";
man += "\t--html-base64 <xml> <out_dir> : HTML output from a container XML file.\n\n";
man += "PDF output:\n";
- man += "\t--pdf <xml> <ppm> <out_dir> : PDF output with non-text regions croped into many png files.\n";
+ man += "\t--pdf <xml> <ppm> <out_dir> : PDF output with non-text regions cropped into many png files.\n";
man += "\t--pdf-no-crop <xml> <ppm> <out_dir>: PDF output with the entire picture displayed over the text.\n";
man += "\t--pdf-base64 <xml> <out_dir> : PDF output from a container XML file.\n";
man += "\t--pdf-base64-no-crop <xml> <ppm> <out_dir> : PDF with the entire picture displayed over the text, the picture is loaded from a container XML file.\n\n";
man += "Base 64 operations:\n";
- man += "\t--to-base64 <xml> <ppm> <out_xml> : Produces a container XML file by converting croped pictures into base 64 format.\n";
+ man += "\t--to-base64 <xml> <ppm> <out_xml> : Produces a container XML file by converting cropped pictures into base 64 format.\n";
man += "\t--to-base64-no-crop <xml> <ppm> <out_xml> : Same as to-base64 but only the picture is converted in base 64.\n";
man += "\t--from-base64 <xml> <out_dir> : Decodes a XML container file to produce original image files.\n";
--
1.5.6.5
1
0
13 Aug '10
* demo/viewer/viewer.cc: Clean vectors when load new picture.
---
scribo/ChangeLog | 6 ++++++
scribo/demo/viewer/viewer.cc | 12 +++++++-----
2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index db348b0..42d9e2f 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,5 +1,11 @@
2010-07-21 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
+ Fix Segfault bug in Qt interface.
+
+ * demo/viewer/viewer.cc: Clean vectors when load new picture.
+
+2010-07-21 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
+
Small changes in xml_transform.
* scribo/sandbox/arthur/xml_transform/README
diff --git a/scribo/demo/viewer/viewer.cc b/scribo/demo/viewer/viewer.cc
index 10c1a43..36b8d82 100644
--- a/scribo/demo/viewer/viewer.cc
+++ b/scribo/demo/viewer/viewer.cc
@@ -331,18 +331,17 @@ Viewer::add_region(QDomNode father, QString attr_id)
void
Viewer::load_xml(QString filename)
{
- text_vector_.clear();
- image_vector_.clear();
-
app_->setOverrideCursor(QCursor(Qt::WaitCursor));
emit fill_xml(filename);
if (image_ && image_->scene() && image_->scene() == scene_)
scene_->removeItem(image_);
+ text_vector_.clear();
+ image_vector_.clear();
scene_->clear();
- if (!base64_ && use_image_)
+ if (!base64_ && use_image_ && image_)
scene_->addItem(image_);
scene_->update();
@@ -470,7 +469,7 @@ Viewer::load_xml(QString filename)
region = region.nextSibling();
}
- emit updated();
+ //emit updated();
scene_->update();
key_wgt_->update_all();
@@ -483,8 +482,11 @@ Viewer::load(QString filename, bool b)
app_->setOverrideCursor(QCursor(Qt::WaitCursor));
scene_->clear();
+ text_vector_.clear();
+ image_vector_.clear();
scene_->update();
image_ = 0;
+ xml_file_ = QString::Null();
// Load the image in a pixmap that is directly shown on screen.
// This is very slow when used with the normal rendering system.
--
1.5.6.5
1
0
* arthur/xml_transform/README
* arthur/xml_transform/loader.cc
* arthur/xml_transform/loader.hh
* arthur/xml_transform/main.cc
* arthur/xml_transform/xml_transform.cc
* arthur/xml_transform/xml_transform.hh
* arthur/xml_transform/templates/pdf/regions_svg.xsl,
* arthur/xml_transform/templates/pdf/svg_generator.sh: New.
---
scribo/sandbox/ChangeLog | 15 +++
scribo/sandbox/arthur/xml_transform/README | 25 ++++--
scribo/sandbox/arthur/xml_transform/loader.cc | 15 +++
scribo/sandbox/arthur/xml_transform/loader.hh | 1 +
scribo/sandbox/arthur/xml_transform/main.cc | 41 ++++++---
.../xml_transform/templates/pdf/regions_svg.xsl | 98 ++++++++++++++++++++
.../xml_transform/templates/pdf/svg_generator.sh | 3 +
.../sandbox/arthur/xml_transform/xml_transform.cc | 10 ++
.../sandbox/arthur/xml_transform/xml_transform.hh | 1 +
9 files changed, 188 insertions(+), 21 deletions(-)
create mode 100644 scribo/sandbox/arthur/xml_transform/templates/pdf/regions_svg.xsl
create mode 100644 scribo/sandbox/arthur/xml_transform/templates/pdf/svg_generator.sh
diff --git a/scribo/sandbox/ChangeLog b/scribo/sandbox/ChangeLog
index 8d7b3e9..7c53037 100644
--- a/scribo/sandbox/ChangeLog
+++ b/scribo/sandbox/ChangeLog
@@ -1,3 +1,18 @@
+2010-07-22 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
+
+ SVG output.
+
+ * arthur/xml_transform/README
+ * arthur/xml_transform/loader.cc
+ * arthur/xml_transform/loader.hh
+ * arthur/xml_transform/main.cc
+ * arthur/xml_transform/xml_transform.cc
+ * arthur/xml_transform/xml_transform.hh
+
+ * arthur/xml_transform/templates/pdf/regions_svg.xsl,
+ * arthur/xml_transform/templates/pdf/svg_generator.sh: New.
+
+
2010-07-15 Arthur Crepin-Leblond <crepin(a)stockholm.lrde.epita.fr>
XML Tranform.
diff --git a/scribo/sandbox/arthur/xml_transform/README b/scribo/sandbox/arthur/xml_transform/README
index aedf220..4e98a76 100644
--- a/scribo/sandbox/arthur/xml_transform/README
+++ b/scribo/sandbox/arthur/xml_transform/README
@@ -1,23 +1,29 @@
xml_transform
-
OPTIONS:
HTML output:
- --html <xml> <ppm> <out_dir> : HTML output with non-text regions croped into many png files.
+ --html <xml> <ppm> <out_dir> : HTML output with non-text regions cropped into many png files.
--html-base64 <xml> <out_dir> : HTML output from a container XML file.
PDF output:
- --pdf <xml> <ppm> <out_dir> : PDF output with non-text regions croped into many png files.
+ --pdf <xml> <ppm> <out_dir> : PDF output with non-text regions cropped into many png files.
--pdf-no-crop <xml> <ppm> <out_dir>: PDF output with the entire picture displayed over the text.
--pdf-base64 <xml> <out_dir> : PDF output from a container XML file.
- --pdf-base64-no-crop <xml> <ppm> <out_dir> : PDF with the entire picture displayed over the text,
- the picture is loaded from a container XML file.
+ --pdf-base64-no-crop <xml> <ppm> <out_dir> : PDF with the entire picture displayed over the text, the picture is loaded from a container XML file.
+
+SVG output:
+ --svg <xml> <out_dir> : SVG output (works only with base 64 xml encoded.
Base 64 operations:
- --to-base64 <xml> <ppm> <out_xml> : Produces a container XML file by converting croped pictures into base 64 format.
+ --to-base64 <xml> <ppm> <out_xml> : Produces a container XML file by converting cropped pictures into base 64 format.
--to-base64-no-crop <xml> <ppm> <out_xml> : Same as to-base64 but only the picture is converted in base 64.
--from-base64 <xml> <out_dir> : Decodes a XML container file to produce original image files.
+For PDF/HTML/SVG output, Bourne shell scripts are provided to produce the outputs, just run sh *_generator.sh
+Requirements:
+PDF : fop >= 0.95
+HTML : xsltproc
+SVG : trunk version of fop
BUILD:
@@ -25,5 +31,10 @@ Chnage the environment variable QMAKE_CXXFLAGS in xml_transfrom.pro then
mkdir _build
cd _build
+cp -r ../templates .
qmake ../xml_transfrom.pro
-make
\ No newline at end of file
+make
+
+/!\ IMPORTANT NOTE /!\
+
+xml_transfrom uses a templates directory, binary and this folder should be in the same place.
\ No newline at end of file
diff --git a/scribo/sandbox/arthur/xml_transform/loader.cc b/scribo/sandbox/arthur/xml_transform/loader.cc
index 2b64337..1698899 100644
--- a/scribo/sandbox/arthur/xml_transform/loader.cc
+++ b/scribo/sandbox/arthur/xml_transform/loader.cc
@@ -126,6 +126,21 @@ void Loader::add_pdf_templates(bool crop, bool base64, QString output)
}
}
+void Loader::add_svg_templates(QString output)
+{
+ QFile regions("templates/pdf/regions_svg.xsl");
+ regions.copy(output + "regions.xsl");
+
+ QFile gen("templates/pdf/svg_generator.sh");
+ gen.copy(output + "svg_generator.sh");
+
+ QFile line("templates/pdf/line.xsl");
+ line.copy(output + "line.xsl");
+
+ QFile xsl("templates/pdf/main_crop.xsl");
+ xsl.copy(output + "main.xsl");
+}
+
bool Loader::xml_output(QString xml_file, bool html, QString output)
{
QFile file(xml_file);
diff --git a/scribo/sandbox/arthur/xml_transform/loader.hh b/scribo/sandbox/arthur/xml_transform/loader.hh
index fadceed..3cbae5c 100644
--- a/scribo/sandbox/arthur/xml_transform/loader.hh
+++ b/scribo/sandbox/arthur/xml_transform/loader.hh
@@ -42,6 +42,7 @@ class Loader : public QObject
QDomDocument* xml_to_dom(QString xml_file);
bool set_output(QString& output);
void add_pdf_templates(bool crop, bool base64, QString output);
+ void add_svg_templates(QString output);
void add_html_templates(bool base64, QString output);
};
diff --git a/scribo/sandbox/arthur/xml_transform/main.cc b/scribo/sandbox/arthur/xml_transform/main.cc
index c259c76..d1c789d 100644
--- a/scribo/sandbox/arthur/xml_transform/main.cc
+++ b/scribo/sandbox/arthur/xml_transform/main.cc
@@ -6,20 +6,27 @@ int main(int argc, char **argv)
{
std::string man;
- man = "xml_transform\n";
- man += "OPTIONS:\n\n";
- man += "HTML output:\n";
- man += "\t--html <xml> <ppm> <out_dir> : HTML output with non-text regions cropped into many png files.\n";
- man += "\t--html-base64 <xml> <out_dir> : HTML output from a container XML file.\n\n";
- man += "PDF output:\n";
- man += "\t--pdf <xml> <ppm> <out_dir> : PDF output with non-text regions cropped into many png files.\n";
- man += "\t--pdf-no-crop <xml> <ppm> <out_dir>: PDF output with the entire picture displayed over the text.\n";
- man += "\t--pdf-base64 <xml> <out_dir> : PDF output from a container XML file.\n";
- man += "\t--pdf-base64-no-crop <xml> <ppm> <out_dir> : PDF with the entire picture displayed over the text, the picture is loaded from a container XML file.\n\n";
- man += "Base 64 operations:\n";
- man += "\t--to-base64 <xml> <ppm> <out_xml> : Produces a container XML file by converting cropped pictures into base 64 format.\n";
- man += "\t--to-base64-no-crop <xml> <ppm> <out_xml> : Same as to-base64 but only the picture is converted in base 64.\n";
- man += "\t--from-base64 <xml> <out_dir> : Decodes a XML container file to produce original image files.\n";
+ man = "xml_transform\n"
+ "OPTIONS:\n\n"
+ "HTML output:\n"
+ "\t--html <xml> <ppm> <out_dir> : HTML output with non-text regions cropped into many png files.\n"
+ "\t--html-base64 <xml> <out_dir> : HTML output from a container XML file.\n\n"
+ "PDF output:\n"
+ "\t--pdf <xml> <ppm> <out_dir> : PDF output with non-text regions cropped into many png files.\n"
+ "\t--pdf-no-crop <xml> <ppm> <out_dir>: PDF output with the entire picture displayed over the text.\n"
+ "\t--pdf-base64 <xml> <out_dir> : PDF output from a container XML file.\n"
+ "\t--pdf-base64-no-crop <xml> <ppm> <out_dir> : PDF with the entire picture displayed over the text, the picture is loaded from a container XML file.\n\n"
+ "SVG output:\n"
+ "\t--svg <xml> <out_dir> : SVG output (works only with base 64 xml encoded.\n\n"
+ "Base 64 operations:\n"
+ "\t--to-base64 <xml> <ppm> <out_xml> : Produces a container XML file by converting cropped pictures into base 64 format.\n"
+ "\t--to-base64-no-crop <xml> <ppm> <out_xml> : Same as to-base64 but only the picture is converted in base 64.\n"
+ "\t--from-base64 <xml> <out_dir> : Decodes a XML container file to produce original image files.\n\n"
+ "For PDF/HTML/SVG output, Bourne shell scripts are provided to produce the outputs, just run sh *_generator.sh \n"
+ "Requirements:\n"
+ "PDF : fop >= 0.95\n"
+ "HTML : xsltproc\n"
+ "SVG : trunk version of fop\n";
if (argc > 4)
{
@@ -60,6 +67,7 @@ int main(int argc, char **argv)
else if (argc > 3)
{
std::string pdfbase64 = "--pdf-base64";
+ std::string svg = "--svg";
std::string pdfbase64nocrop = "--pdf-base64-no-crop";
std::string htmlbase64 = "--html-base64";
std::string from_base64 = "--from-base64";
@@ -69,6 +77,11 @@ int main(int argc, char **argv)
XmlTransform xmlt(argv[2], QString::Null(), argv[3]);
xmlt.createPDF(true, true);
}
+ else if (svg.compare(argv[1]) == 0)
+ {
+ XmlTransform xmlt(argv[2], QString::Null(), argv[3]);
+ xmlt.createSVG();
+ }
else if (pdfbase64nocrop.compare(argv[1]) == 0)
{
XmlTransform xmlt(argv[2], QString::Null(), argv[3]);
diff --git a/scribo/sandbox/arthur/xml_transform/templates/pdf/regions_svg.xsl b/scribo/sandbox/arthur/xml_transform/templates/pdf/regions_svg.xsl
new file mode 100644
index 0000000..86b5f51
--- /dev/null
+++ b/scribo/sandbox/arthur/xml_transform/templates/pdf/regions_svg.xsl
@@ -0,0 +1,98 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
+
+ <!-- FILE: regions.xsl
+ DESCRIPTION: Match all regions that are not text to display them -->
+
+ <xsl:template match="pcGts/page/image_region|
+ pcGts/page/graphic_region|
+ pcGts/page/chart_region|
+ pcGts/page/table_region|
+ pcGts/page/separator_region">
+
+ <!-- ID of the region, used to display id.png -->
+ <xsl:variable name="data">
+ <xsl:value-of select="container/data" />
+ </xsl:variable>
+
+ <!-- Regions coordinates -->
+ <xsl:variable name="y1">
+ <xsl:for-each select="coords/point">
+ <xsl:sort select="@y" order="ascending" data-type="number"/>
+ <xsl:if test="position() = 1">
+ <xsl:value-of select="@y" />
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="x1">
+ <xsl:for-each select="coords/point">
+ <xsl:sort select="@x" order="ascending" data-type="number"/>
+ <xsl:if test="position() = 1">
+ <xsl:value-of select="@x" />
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="y2">
+ <xsl:for-each select="coords/point">
+ <xsl:sort select="@y" order="descending" data-type="number"/>
+ <xsl:if test="position() = 1">
+ <xsl:value-of select="@y" />
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="x2">
+ <xsl:for-each select="coords/point">
+ <xsl:sort select="@x" order="descending" data-type="number"/>
+ <xsl:if test="position() = 1">
+ <xsl:value-of select="@x" />
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <!-- END OF regions coordinates -->
+
+ <fo:block-container>
+
+ <fo:block>
+ <fo:instream-foreign-object>
+ <svg:svg xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ Version="1.1">
+
+ <xsl:attribute name="viewBox">
+ <xsl:value-of select="$x1" /> <xsl:value-of select="$y1" /> <xsl:value-of select="$x2" /> <xsl:value-of select="$y2" />
+ </xsl:attribute>
+
+ <svg:image position="absolute">
+
+ <xsl:attribute name="y">
+ <xsl:value-of select="$y1" />
+ </xsl:attribute>
+
+ <xsl:attribute name="x">
+ <xsl:value-of select="$x1" />
+ </xsl:attribute>
+
+ <xsl:attribute name="width">
+ <xsl:value-of select="$x2 - $x1" />
+ </xsl:attribute>
+
+ <xsl:attribute name="height">
+ <xsl:value-of select="$y2 - $y1" />
+ </xsl:attribute>
+
+ <xsl:attribute name="xlink:href">data:image/png;base64,<xsl:value-of select="$data" /></xsl:attribute>
+ </svg:image>
+
+ </svg:svg>
+
+ </fo:instream-foreign-object>
+
+ </fo:block>
+ </fo:block-container>
+
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/scribo/sandbox/arthur/xml_transform/templates/pdf/svg_generator.sh b/scribo/sandbox/arthur/xml_transform/templates/pdf/svg_generator.sh
new file mode 100644
index 0000000..0d4907c
--- /dev/null
+++ b/scribo/sandbox/arthur/xml_transform/templates/pdf/svg_generator.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+fop -xsl main.xsl -xml output.xml -svg output.svg
\ No newline at end of file
diff --git a/scribo/sandbox/arthur/xml_transform/xml_transform.cc b/scribo/sandbox/arthur/xml_transform/xml_transform.cc
index ebfbed8..c40366a 100644
--- a/scribo/sandbox/arthur/xml_transform/xml_transform.cc
+++ b/scribo/sandbox/arthur/xml_transform/xml_transform.cc
@@ -117,6 +117,16 @@ void XmlTransform::createPDF (bool crop, bool base64)
abort();
}
+void XmlTransform::createSVG ()
+{
+ if (loader_->xml_output(xml_file_, false, output_dir_))
+ {
+ loader_->add_svg_templates(output_dir_);
+ }
+ else
+ abort();
+}
+
void XmlTransform::createHTML(bool base64)
{
if (loader_->xml_output(xml_file_, true, output_dir_))
diff --git a/scribo/sandbox/arthur/xml_transform/xml_transform.hh b/scribo/sandbox/arthur/xml_transform/xml_transform.hh
index 172bddb..30d5c6c 100644
--- a/scribo/sandbox/arthur/xml_transform/xml_transform.hh
+++ b/scribo/sandbox/arthur/xml_transform/xml_transform.hh
@@ -42,6 +42,7 @@ class XmlTransform : public QObject
void createHTML(bool base64);
void createPDF(bool crop, bool base64);
+ void createSVG();
void toBase64(bool crop);
void fromBase64();
--
1.5.6.5
1
0
13 Aug '10
* arthur/xml_transform/templates/opendoc/css.css,
* arthur/xml_transform/templates/opendoc/opendoc_generator.sh,
* arthur/xml_transform/templates/opendoc/xsl.xsl: New.
* arthur/xml_transform/README
* arthur/xml_transform/loader.cc
* arthur/xml_transform/loader.hh
* arthur/xml_transform/main.cc
* arthur/xml_transform/xml_transform.cc
* arthur/xml_transform/xml_transform.hh
---
scribo/sandbox/ChangeLog | 15 ++++++++++++
scribo/sandbox/arthur/xml_transform/README | 9 ++++++-
scribo/sandbox/arthur/xml_transform/loader.cc | 12 ++++++++++
scribo/sandbox/arthur/xml_transform/loader.hh | 1 +
scribo/sandbox/arthur/xml_transform/main.cc | 18 ++++++++++++--
.../templates/{html => opendoc}/css.css | 1 -
.../templates/opendoc/opendoc_generator.sh | 24 ++++++++++++++++++++
.../templates/{html => opendoc}/xsl.xsl | 6 +----
.../sandbox/arthur/xml_transform/xml_transform.cc | 19 +++++++++++++++
.../sandbox/arthur/xml_transform/xml_transform.hh | 1 +
10 files changed, 96 insertions(+), 10 deletions(-)
copy scribo/sandbox/arthur/xml_transform/templates/{html => opendoc}/css.css (93%)
mode change 100644 => 100755
create mode 100755 scribo/sandbox/arthur/xml_transform/templates/opendoc/opendoc_generator.sh
copy scribo/sandbox/arthur/xml_transform/templates/{html => opendoc}/xsl.xsl (95%)
mode change 100644 => 100755
diff --git a/scribo/sandbox/ChangeLog b/scribo/sandbox/ChangeLog
index 7c53037..176e809 100644
--- a/scribo/sandbox/ChangeLog
+++ b/scribo/sandbox/ChangeLog
@@ -1,3 +1,18 @@
+2010-07-23 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
+
+ OpenDocument output (odt and odf).
+
+ * arthur/xml_transform/templates/opendoc/css.css,
+ * arthur/xml_transform/templates/opendoc/opendoc_generator.sh,
+ * arthur/xml_transform/templates/opendoc/xsl.xsl: New.
+
+ * arthur/xml_transform/README
+ * arthur/xml_transform/loader.cc
+ * arthur/xml_transform/loader.hh
+ * arthur/xml_transform/main.cc
+ * arthur/xml_transform/xml_transform.cc
+ * arthur/xml_transform/xml_transform.hh
+
2010-07-22 Arthur Crepin-Leblond <crepin(a)ptaouchnok.lrde.epita.fr>
SVG output.
diff --git a/scribo/sandbox/arthur/xml_transform/README b/scribo/sandbox/arthur/xml_transform/README
index 4e98a76..9ac4973 100644
--- a/scribo/sandbox/arthur/xml_transform/README
+++ b/scribo/sandbox/arthur/xml_transform/README
@@ -16,14 +16,21 @@ SVG output:
Base 64 operations:
--to-base64 <xml> <ppm> <out_xml> : Produces a container XML file by converting cropped pictures into base 64 format.
+
+OpenDocument output:
+ --open <xml> <ppm> <out_dir> : OpenDocument output (odt, odf).
+
+Base 64 operations:
+ --to-base64 <xml> <ppm> <out_xml> : Produces a container XML file by converting cropped pictures into base 64 format.
--to-base64-no-crop <xml> <ppm> <out_xml> : Same as to-base64 but only the picture is converted in base 64.
--from-base64 <xml> <out_dir> : Decodes a XML container file to produce original image files.
-For PDF/HTML/SVG output, Bourne shell scripts are provided to produce the outputs, just run sh *_generator.sh
+For PDF/HTML/SVG/OD output, Bourne shell scripts are provided to produce the outputs, just run sh *_generator.sh
Requirements:
PDF : fop >= 0.95
HTML : xsltproc
SVG : trunk version of fop
+OpenDocument : ooconvert
BUILD:
diff --git a/scribo/sandbox/arthur/xml_transform/loader.cc b/scribo/sandbox/arthur/xml_transform/loader.cc
index 1698899..d4778a9 100644
--- a/scribo/sandbox/arthur/xml_transform/loader.cc
+++ b/scribo/sandbox/arthur/xml_transform/loader.cc
@@ -141,6 +141,18 @@ void Loader::add_svg_templates(QString output)
xsl.copy(output + "main.xsl");
}
+void Loader::add_open_templates(QString output)
+{
+ QFile css("templates/opendoc/css.css");
+ css.copy(output + "css.css");
+
+ QFile gen("templates/opendoc/opendoc_generator.sh");
+ gen.copy(output + "opendoc_generator.sh");
+
+ QFile xsl("templates/opendoc/xsl.xsl");
+ xsl.copy(output + "xsl.xsl");
+}
+
bool Loader::xml_output(QString xml_file, bool html, QString output)
{
QFile file(xml_file);
diff --git a/scribo/sandbox/arthur/xml_transform/loader.hh b/scribo/sandbox/arthur/xml_transform/loader.hh
index 3cbae5c..a5c3637 100644
--- a/scribo/sandbox/arthur/xml_transform/loader.hh
+++ b/scribo/sandbox/arthur/xml_transform/loader.hh
@@ -43,6 +43,7 @@ class Loader : public QObject
bool set_output(QString& output);
void add_pdf_templates(bool crop, bool base64, QString output);
void add_svg_templates(QString output);
+ void add_open_templates(QString output);
void add_html_templates(bool base64, QString output);
};
diff --git a/scribo/sandbox/arthur/xml_transform/main.cc b/scribo/sandbox/arthur/xml_transform/main.cc
index d1c789d..34a1b6e 100644
--- a/scribo/sandbox/arthur/xml_transform/main.cc
+++ b/scribo/sandbox/arthur/xml_transform/main.cc
@@ -19,18 +19,25 @@ int main(int argc, char **argv)
"SVG output:\n"
"\t--svg <xml> <out_dir> : SVG output (works only with base 64 xml encoded.\n\n"
"Base 64 operations:\n"
+ "\t--to-base64 <xml> <ppm> <out_xml> : Produces a container XML file by converting cropped pictures into base 64 format.\n\n"
+
+ "OpenDocument output:\n"
+ "\t--open <xml> <ppm> <out_dir> : OpenDocument output (odt, odf).\n\n"
+ "Base 64 operations:\n"
"\t--to-base64 <xml> <ppm> <out_xml> : Produces a container XML file by converting cropped pictures into base 64 format.\n"
"\t--to-base64-no-crop <xml> <ppm> <out_xml> : Same as to-base64 but only the picture is converted in base 64.\n"
"\t--from-base64 <xml> <out_dir> : Decodes a XML container file to produce original image files.\n\n"
- "For PDF/HTML/SVG output, Bourne shell scripts are provided to produce the outputs, just run sh *_generator.sh \n"
+ "For PDF/HTML/SVG/OD output, Bourne shell scripts are provided to produce the outputs, just run sh *_generator.sh \n"
"Requirements:\n"
"PDF : fop >= 0.95\n"
"HTML : xsltproc\n"
- "SVG : trunk version of fop\n";
+ "SVG : trunk version of fop\n"
+ "OpenDocument : ooconvert";
if (argc > 4)
{
std::string html = "--html";
+ std::string open = "--open";
std::string pdf = "--pdf";
std::string pdf_no_crop = "--pdf-no-crop";
std::string to_base64 = "--to-base64";
@@ -41,11 +48,16 @@ int main(int argc, char **argv)
XmlTransform xmlt(argv[2], argv[3], argv[4]);
xmlt.createHTML(false);
}
- if (pdf.compare(argv[1]) == 0)
+ else if (pdf.compare(argv[1]) == 0)
{
XmlTransform xmlt(argv[2], argv[3], argv[4]);
xmlt.createPDF(true, false);
}
+ else if (open.compare(argv[1]) == 0)
+ {
+ XmlTransform xmlt(argv[2], argv[3], argv[4]);
+ xmlt.createOpen();
+ }
else if (pdf_no_crop.compare(argv[1]) == 0)
{
XmlTransform xmlt(argv[2], argv[3], argv[4]);
diff --git a/scribo/sandbox/arthur/xml_transform/templates/html/css.css b/scribo/sandbox/arthur/xml_transform/templates/opendoc/css.css
old mode 100644
new mode 100755
similarity index 93%
copy from scribo/sandbox/arthur/xml_transform/templates/html/css.css
copy to scribo/sandbox/arthur/xml_transform/templates/opendoc/css.css
index 0443390..1559149
--- a/scribo/sandbox/arthur/xml_transform/templates/html/css.css
+++ b/scribo/sandbox/arthur/xml_transform/templates/opendoc/css.css
@@ -1,7 +1,6 @@
.line
{
position:absolute;
- background-color:white;
z-index:7;
display:inline;
white-space:pre;
diff --git a/scribo/sandbox/arthur/xml_transform/templates/opendoc/opendoc_generator.sh b/scribo/sandbox/arthur/xml_transform/templates/opendoc/opendoc_generator.sh
new file mode 100755
index 0000000..c2d9e6f
--- /dev/null
+++ b/scribo/sandbox/arthur/xml_transform/templates/opendoc/opendoc_generator.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+if [ -z "$1" ]
+then
+ echo "opendoc_generator <odt|odf>";
+else
+ if [ "$1" == "odt" ]
+ then
+ echo "saving to output.odt";
+ xsltproc xsl.xsl output.xml > output.html
+ ooconvert output.html output.odt
+ rm output.html
+ elif [ "$1" == "odf" ]
+ then
+ echo "saving to output.odf";
+ xsltproc xsl.xsl output.xml > output.html
+ ooconvert output.html output.odf;
+ rm output.html
+ else
+ echo "opendoc_generator <odt|odf>";
+ fi
+fi
+
+#rm output.html
\ No newline at end of file
diff --git a/scribo/sandbox/arthur/xml_transform/templates/html/xsl.xsl b/scribo/sandbox/arthur/xml_transform/templates/opendoc/xsl.xsl
old mode 100644
new mode 100755
similarity index 95%
copy from scribo/sandbox/arthur/xml_transform/templates/html/xsl.xsl
copy to scribo/sandbox/arthur/xml_transform/templates/opendoc/xsl.xsl
index 1f29044..bf1cc30
--- a/scribo/sandbox/arthur/xml_transform/templates/html/xsl.xsl
+++ b/scribo/sandbox/arthur/xml_transform/templates/opendoc/xsl.xsl
@@ -15,8 +15,6 @@
pcGts/page/chart_region|
pcGts/page/table_region|
pcGts/page/separator_region|
- pcGts/page/text_region|
- pcGts/page/text_region/paragraph|
pcGts/page/text_region/paragraph/line">
<!-- Regions Coordinates -->
@@ -129,10 +127,8 @@
</xsl:choose>
</xsl:variable>
- <div class="line" onmouseover="this.style.opacity=0.2;this.filters.alpha.opacity=20"
- onmouseout="this.style.opacity=1;this.filters.alpha.opacity=100">
+ <div class="line">
<xsl:attribute name="style">
- opacity:1;
height:auto;
font-size:<xsl:value-of select="$a+$d" />px;
width:<xsl:value-of select="$x2 - $x1" />px;
diff --git a/scribo/sandbox/arthur/xml_transform/xml_transform.cc b/scribo/sandbox/arthur/xml_transform/xml_transform.cc
index c40366a..90af5a5 100644
--- a/scribo/sandbox/arthur/xml_transform/xml_transform.cc
+++ b/scribo/sandbox/arthur/xml_transform/xml_transform.cc
@@ -117,6 +117,25 @@ void XmlTransform::createPDF (bool crop, bool base64)
abort();
}
+void XmlTransform::createOpen ()
+{
+ if (loader_->xml_output(xml_file_, false, output_dir_))
+ {
+ QString output = output_dir_;
+ output.append("img");
+
+ if (loader_->set_output(output))
+ {
+ crop_->crop_regions();
+ loader_->add_open_templates(output_dir_);
+ }
+ else
+ abort();
+ }
+ else
+ abort();
+}
+
void XmlTransform::createSVG ()
{
if (loader_->xml_output(xml_file_, false, output_dir_))
diff --git a/scribo/sandbox/arthur/xml_transform/xml_transform.hh b/scribo/sandbox/arthur/xml_transform/xml_transform.hh
index 30d5c6c..ad83fd5 100644
--- a/scribo/sandbox/arthur/xml_transform/xml_transform.hh
+++ b/scribo/sandbox/arthur/xml_transform/xml_transform.hh
@@ -43,6 +43,7 @@ class XmlTransform : public QObject
void createHTML(bool base64);
void createPDF(bool crop, bool base64);
void createSVG();
+ void createOpen();
void toBase64(bool crop);
void fromBase64();
--
1.5.6.5
1
0