Todo List

File accu/all.hh

Update accumulators s.a. count so that they are like min_/min.

Propagate those updates to mln/estim/.

Update the include list...

File accu/compute.hh
Specialize for fastest images.

File accu/histo.hh
Use histo::array instead of std::vector!

File accu/line.hh
Suppress integer manipulations (redundant with ptr arith).

File accu/logic/land.hh
Have land be parameterized.

File accu/logic/lor.hh
Have lor be parameterized.

File accu/nil.hh
A macro to generate the meta version.

File accu/stat/mean.hh
Use accu::pair just like in accu::stat::min_max.

File accu/stat/min_max.hh
A macro to create such accumulators.

File adjacency_matrix.hh

the underlying data structure is chosen according to the value type quantification however we may like to make it depend on the number of elements.

Have theo re-read this file.

File adjust_duplicate.hh
Fix doc.

File adjust_fill.hh
Fix doc.

File algebra/h_mat.hh
Add traits.

File all.hh
Do not include essentials.

File arith/diff_abs.hh
Speedup; some versions are not optimal.

File arith/div.hh
Speedup; some versions are not optimal.

File arith/minus.hh
Speedup; some versions are not optimal.

File arith/plus.hh
Speedup; some versions are not optimal.

File arith/times.hh
Speedup; some versions are not optimal.

File asf-complex1d.cc
There should be a second version of this program, where the graph structure is implemented with an actual mln::util::graph.

File binarization.hh
Rename and/or remove (that is this?)

File border/mirror.hh
Awful code: rewrite it!

File c.hh
Fix category: super is not defined! See mln/value/builtin/integers.hh for an example.

File cast_image.hh
Rename as cast_image (without '_')!

File center.hh
Fix to_result() value when invalid...

File classical_window_base.hh

Remove the .vect() method.

Add a test that overridden delta_() and win.delta() give the same result.

File cloud/load.hh

Support 1 and 2d images.

Make it generic?

File coefficients.hh
Add a clean reference Rachid Deriche Recursively implementing the gaussian and its derivatives (1993)

File compute_attribute_image.hh
Specialize for low quant (and try fastest).

File compute_parent.hh

Specialize for low quant (and try fastest).

Augment and improve documentation.

Change data::sort so that the explanations below are valid whatever the choice 'increasing or decreasing'.

File compute_with_weights.hh
Add a meta version for the labeling variation.

File concept/integer.hh
Similar files needs to be cleaned-up.

File concept/window.hh

Operator== should test if the cmp is possible.

The is_centered() method could also exist when the window is not regular...

File contrast.hh
Save memory.

File core/alias/neighb2d.hh
Add symmetry and non-centering tests in conversion.

File core/concept/proxy.hh

preinc and predec are not tested; post-like ops are not handled.

add "opT()const" when possible.

add "op=(T)" when possible, so add a constness property.

File core/image/image2d.hh

Re-activate include at EOF when make::image2d is up again.

Rename delta_index and point_at_index as offset and point_at_offset.

File core/internal/data.hh
Rename as image_data (more explicit!)

File core/internal/image_base.hh
Provide coord iff the site is a grid point.

File core/pixel.hh
Answer these questions:

File core/routine/all.hh
Move files, update, and activate.

File core/site_set/box.hh
Test if the safety code in box::box() is not too slow.

File core/w_window.hh
Generalize W_Window -> Image.

File count.hh
Add an optional parameter to set the type of the counter.

File data/fill.hh
Add a conversion "arr->fun" then get rid of the C array overload.

File data/transform.hh

Clean this file + overload with pixel iterators.

Re-activate tests and make them static.

File debug/histo.hh
Move to io::histo::save.

File delta.hh
Add doc.

File dilation.hh
The overloads are hidden and I don't know why!

File dindex.hh

Remove coord and dim, then make window<dindex> work.

Add inheritance to Object so add operators and traits.

File distance_functor.hh
Move all functors into their corresponding file.

File double_neighb2d.hh
Add overload with 'when_*' being Neighborhood<N>...

File dpoints_pixter.hh
In init_ use offsets_wrt (defined in concept/window.hh).

File draw_graph.hh
write a version for graph images.

File dump/save.hh
handle endianness.

File elementary.hh
Add fastest version.

File elementary/gradient.hh
Add fastest version for sets.

File elementary/laplacian.hh
Handle the set case?

File elementary/top_hat.hh
Save memory.

File enlarge.hh
Make it much more generic.

File erosion.hh
The overloads are hidden and I don't know why!

File erosion_tolerant.hh

Add support for erosion on functions, etc...

Use morpho::general dispatch? How?

File estim/min_max.hh
Overload while returning an std::pair.

File estim/sum.hh
Sum works on level so move into mln/level; otherwise on pix then ambiguous.

File extend.hh

Use the 'instant' mechanism.

Deal with ambiguities.

Check that there is no extension yet (except "extendable").

File extended.hh
Add a special case for "ima | box"; think about some other special cases...

File extension/adjust.hh
Fix doc.

File extension/all.hh
Also include "extension images" + "extended"?

File extension/duplicate.hh
Fix doc.

File extension/essential.hh
Also include "extension images" + "extended"?

File extension/fill.hh
Test the compatibility between val and mln_value(I) because, while unmorphing, this type can change...

File extension_fun.hh

Deal with two-ways functions...

Use an envelop as lvalue to test extension writing.

File extension_val.hh

Use the 'instant' mechanism.

Use an envelop as lvalue to test extension writing.

File fast_median.hh
There are implicit assumptions about input being 2D!!!

File fill_with_image.hh
Specialize with line_piter...

File fill_with_value.hh

Move specializations in a extra file.

Activate fill_with_value_cell_wise.

Optimize when ima is large and sizeof(mln_value(I)) > 1.

File find_root.hh
write a 'parent' image instead?

File flat_image.hh
Zed: Address the values v. destination issue.

File fld/save.hh
Handle not high speed images.

File from_double_to_value.hh
Augment code + add checks.

File from_float_to_value.hh
Augment code + add checks.

File from_image_to_site_set.hh

Augment code + add checks.

Add (?) the case p_run-based -> site set.

File from_int_to_value.hh
Augment code + add checks.

File from_to.hh

Test the effectiveness of guards.

Dispatch code in appropriate files.

Find a solution for g++-2.95 and '...'; see FIXME below.

File from_unsigned_to_value.hh
Augment code + add checks.

File from_value_to_value.hh
Augment code + add checks.

File fun/all.hh
Incomplete list of files.

File fun/meta/impl.hh
Remove this deprecated code and its deps.

File fun/v2v/cast.hh
The function is intrisically meta; how to handle that particular case?

File fun/v2v/wrap.hh
Prefer not to cast towards 'unsigned long'; use a procedure such as enc(l) that can work on 'unsigned', 'int_u8', 'label<n>', and also other label types.

File gaussian.hh
Add a clean reference Rachid Deriche Recursively implementing the gaussian and its derivatives (1993)

File gaussian_1d.hh
This is experimental code to be merged with regular code...

File gaussian_directional_2d.hh
This is experimental code to be merged with regular code...

File general.hh
Have infimum and supremum for value types, apart from morphology!

File geom/bbox.hh

Re-activate precondition so introduce "set::nsites(Site_Set)"...

Add a static check "domain is ok for bbox (like grid)".

Add the weighted_window case.

File gradient.hh
Save memory.

File gradient_external.hh
Fix the extension issue (see todo in like_ero_fun and _set).

File gradient_internal.hh
Fix the extension issue (see todo in like_ero_fun and _set).

File graph_elt_window_if.hh
Allow to pass a function instead of an image.

File graph_first_search.hh
Code "next(const S& stack)".

File graph_iter_base.hh
Have special types for ids (vertex_id) to disambiguate the conversion op.

File graph_psite_base.hh
Do not compile when id_t is unsigned (so the conversion operator is defined twice!)

File hit_or_miss.hh
Save memory.

File hsl_to_rgb.hh
Etienne: Remove the global variables!

File icp.hh
encode distances on 12 bits.

File image/props.hh
Remove space_from_point and fwd decls at EOF.

File image1d.hh
Rewrite from_to(histo, image1d) after Etienne's work.

File image_identity.hh
Move "fastest impl" elsewhere; it can be used by some other classes.

File image_morpher.hh
Add the appropriate checks in .rw().

File index.hh

Remove coord and dim, then make window<dindex> work.

Add inheritance to Object so add operators and traits.

File influence_zone_adjacency_graph.hh

Add dispatch for fast images.

Use an adjacency matrix when available in the library.

File internal/check/image_fastest.hh
Check and convert p in index_of_point towards E::psite.

File interpolated.hh
think having has(algebra::vec v) as a method

File interval.hh
Likewise, code value::not_equal(t), less_than, etc.

File is_separator.hh
Make it work in n-D.

File labeling/all.hh
Many files in this directory have to be updated with the test and dispatch mechanisms.

File labeling/blobs.hh

Handle abort in a nice way...

Add a 2nd version precising the 'value' to label.

File labeling/compute.hh
write fastest version.

File land_basic.hh
Have land_basic be parameterized.

File laplacian.hh
Save memory.

File like_ero_fun.hh
Add a choice between adjust_fill and adjust_duplicate.

File like_ero_set.hh
Add a choice between adjust_fill and adjust_duplicate.

File linear/gaussian/filter.hh
Add a clean reference Rachid Deriche Recursively implementing the gaussian and its derivatives (1993)

File linear/gaussian/impl.hh
Add a clean reference Rachid Deriche Recursively implementing the gaussian and its derivatives (1993)

File lor_basic.hh
Have lor_basic be parameterized.

File lut_vec.hh
Use fun::saturate in lut_vec ctor.

File make/box2d.hh
Accept long int as args and test overflow (out of def::coord bounds).

File make/image.hh
I guess that we should modify V into mln_unconst(V); test with C arrays being "const int[]" and run g++-2.95...

File make/image2d.hh
Think about removing make::image2d since it is redundant with convert::to and convert::from_to.

File make/image3d.hh
Think about removing make::image3d since it is redundant with convert::to and convert::from_to.

File make/neighb2d.hh
Add overload with 'when_*' being Neighborhood<N>...

File max_site.hh
Use accu::pair just like in accu::stat::min_max.

File mean_values.hh

handle mean value for label 0 correctly.

merge rgb and generic version.

File median.hh
Add versions for fastest and semi-linear images.

File memcpy_.hh
Overload with images and points; Cf. memset_.

File metal/math/sqrt.hh
Rely on nth-root.

File mixed_neighb.hh
See if the impl of from_to is fine. What about removing the origin? etc.

Namespace mln

Complete those definitions (...) + Overload for const (?)

Optimize deduced ops to eliminate object creation. E.g. in the unary minus op: literal::zero_t* p_zero = 0; return O(*p_zero) - exact(rhs); can become: static O zero =... return zero - exact(rhs);

Address the remark in op/=.

Rename 'front' because it is ambiguous for C++ users; we have:

  • 'p_queuepop' means 'dequepop_front'
  • 'p_queuepop_front' means 'return deque::front and run deque::pop_front'

Implements parameter support

try not to use tracked_ptr.

try not to call T::plus_infty(). This is not generic enough but it works with mln::point<>.

File mln/core/concept/site_set.hh
Add a "composite" property.

File mln/core/neighb.hh
See if the impl of from_to is fine. What about removing the origin? etc.

File mln/data/convert.hh
Re-write doc.

File mln/fun/v2v/convert.hh
The function is intrisically meta; how to handle that particular case?

File mln/trait/images.hh

Split this file into many.

the 'nature' prop is not set yet in image types.

The image list is not up-to-date (and move it elsewhere !)

Class mln::accu::internal::couple< A1, A2, R, E >
Check that, when T is not provided, A1 and A2 have the same value.

Class mln::accu::pair< A1, A2, T >
Check that, when T is not provided, A1 and A2 have the same value.

Member mln::border::duplicate (const Image< I > &ima)
Optimize with memcpy if possible.

Member mln::border::fill (const Image< I > &ima, const typename I::value &v)
Optimize with memset if possible.

Member mln::border::mirror (const Image< I > &ima)
Implement 3d version + optimize with memset if possible.

Member mln::data::apply (Image< I > &input, const Function_v2v< F > &f)
Add versions for lowq images.

Member mln::extension::fill (const Image< I > &ima, const typename I::value &val)
Optimize with memset if possible.

Class mln::Generalized_Pixel< E >
(later) Add an access to the targetted image.

Class mln::internal::set_of_< E >
Add a remove method.

Member mln::operator<= (const p_complex< D, G > &lhs, const p_complex< D, G > &rhs)
Refine this later, when we are able to express subcomplex relations.

Member mln::operator<= (const p_edges< G, F > &lhs, const p_edges< G, F > &rhs)
Refine this later, when we are able to express subgraph relations.

Member mln::operator<= (const p_faces< N, D, P > &lhs, const p_faces< N, D, P > &rhs)
Refine this later, when we are able to express subcomplex relations.

Member mln::operator<= (const p_vertices< G, F > &lhs, const p_vertices< G, F > &rhs)
Refine this later, when we are able to express subgraph relations.

Member mln::p_faces< N, D, P >::p_faces (const p_complex< D, P > &pc)
When available, get location information from pc.

Class mln::p_run< P >
Test if P being a Point_Site is ok.

Class mln::util::lazy_set_< E >
Add a remove method.

File morpho/attribute/card.hh
Add a static check in the accumulator concept so that when_pix::use_none => take_as_init() is provided.

File morpho/attribute/count_adjacent_vertices.hh
Check that the image is based on a graph.

File morpho/closing/height.hh
The test result looks very weird... Debug!

File morpho/tree/data.hh
Think about site iterator (using image site iterator instead of S container iterator) to go faster.

File multiple.hh
Implementation of the bkd_qiter (see FIXME).

File multiple_size.hh
Use n for tests and code!!!

File neighborhood_base.hh
Complete conditional implementation inheritance w.r.t. properties.

File operators.hh
Fix code for multi-sets.

File p_array.hh

Add a facade to index_of_in so that it dispatches when calling it with Object<p_array_site>.

Use util::index (instead of int) as many times as possible.

See also the 'todo' entry in mln/core/concept/pseudo_site.hh.

File p_centered.hh

Add the bkd iter.

Code is_valid() and change_target() for the site set.

File p_double.hh

Document!

Add tests about validity of compounded site sets (?)

File p_if.hh
Change s_ attribute type to S*.

File p_image.hh
Add an init method (deferred initialization).

File p_key.hh
Be more verbose in run_().

File p_mutable_array_of.hh

Zed: Add another version (p_array_of) of this class that can inherit, when possible, nsites and bbox (just like in p_vaccess). It is a different class since such a feature is incompatible with the "op[] mutable".

Zed: Add element browsing.

File p_queue_fast.hh
Add insert.

File p_run.hh
Use a lazy approach (in subj) like in p_array psite.

File p_set_of.hh
Zed: Add element browsing.

File p_vaccess.hh
Fix the FIXMEs.

File piter_adaptor.hh

Rename as site_iterator_adaptor_base.

Distinguish between adaptors of site_set_iterator, site_relative_iterator, etc. (?)

File pixel_impl.hh
Clean-up code.

File point.hh
the structure subject_point_impl is useless: first it is only used for 3D points (and it can be usefull for other points); second there is a room for the couple of methods (in the subject_impl specializations defined in core/alias/point*d.hh).

File primary.hh
We also need to get the extension image to handle border routines.

File println.hh
Revamp.

File pseudo_site.hh
Inconsistency: "if_possible::change_target" expects "::target_t" from a pseudo-site, whereas the concept checks for "::target".

File quat.hh
Inline computations in rotate routine.

File rag_and_labeled_wsl.hh
Do not use mln_max() as background label!

File rank.hh
It should be renamed as rank_h since it relies on histogram (thus low quantization).

File rank_bool.hh

There is no-arg-ctor so this accumulator does not support deferred initialization!

Add untake routines...

File rank_filter.hh
Rely on the same mechanism as erosion/dilation.

File raw/save.hh
handle endianness.

File Rd.hh
Reform code! Also go and see sandbox/theo/Rd.

File rectangle2d.hh
Reactivate includes at EOF.

File region_adjacency_graph.hh
add dispatch.

File resize.hh
This code is not complete: an image can be composed of several images whose multiple borders have to be resized! For instance an image extended by an image, or a stack of images.

File revert.hh
Add static assertion and save one iterator in in-place version.

File root.hh
Have consistent writing of math meta-routines.

File rotation.hh
store the quaternion instead of (axis, alpha) => better precision while composing two rotation matrices.

File safe.hh
Use 'instant' as the routine safe returns.

File samples-complex1d.cc
There should be a second version of this program, where the graph structure is implemented with an actual mln::util::graph.

File separator_to_pixels.hh
Generalize to n-D.

File set/diff.hh
Add a diff(Site_Set& in_place, Function_v2b).

File set/get.hh
Layout and specialize.

File set/has.hh
Layout and specialize.

File site_iterator.hh
Fix mln/core/concept/doc/site_iterator.hh

File site_relative_iterator_base.hh
Add a method to get the site set (if the center is defined) or the site set at a given center.

File site_set/props.hh
Precise the differences (?) between dynamic, growing, and free...

File skeleton_constrained.hh
Add an extension handling policy for the user to set it. The fast version does not give the exact result!

File slice_image.hh
Write init_.

File sobel_2d.hh
Extends to the case of other dimensions (only the 2-d case is handled here).

File sort_offsets.hh
Factor code + optimize.

File sort_psites.hh
Factor code + optimize.

File stretch.hh

Make it work with other types than scalars (e.g., vectors).

Think about adding a stretch_inplace(?)

File sub_image.hh
Add a special case for "ima | box"; think about some other special cases...

File sub_image_if.hh
Activate preconditions.

File take_n_times.hh
Add versions with n as unsigned.

File templated_by.hh
: make it more generic, make it work on g++-2.95 (where templated_by< X, Y >check() compile)

File thru_image.hh
Debug constness of thru_image

File tiff/load.hh

Add support for several tiles.

Use ReadScanline instead of ReadRGBAImage in order to avoid a dispatch and share the same code whatever is the value type.

File to.hh
Prefer a static check that fails in the "unknown" case.

File to_p_array.hh
Move these conversion in from_to related mechanisms.

File top_hat.hh
Save memory.

File trait/op/lor.hh
Add land (for logical and).

File trait/value/internal/comp.hh
Revamp to directly access to the most internal helper instead of bumping from one helper to another.

File transform_diagonal.hh

Split dispatch and impl.

Pass the accumulator to the function-object.

File transform_directional.hh

Split dispatch and impl.

Pass the accumulator to the function-object.

File transform_inplace.hh
Take into account more properties; see data/transform.hh.

File transform_line.hh

Import code from sandox/geraud/browsing/fwd.cc to handle the case of no-domain-extension.

Make a particular version that ignores any domain extension.

File transform_snake.hh

Make it n-D.

Split dispatch and impl.

Pass the accumulator to the function-object.

File transformed_image.hh
It is a rough code.

File unqualif.hh
Handle (or not) 'T*'.

File util/array.hh
Zed: Add a lazy removal method (based on an extra attribute std::vector<bool> has_). Then add a purge/compress method.

File util/couple.hh
revamp and refactor with util::site_pair or ord_pair.

File util/pix.hh

Rename as util::pixel.

Think about separating this class between util::pixel<"mutable" I> and util::pixel<const I>.

Look at the todo entry of mln/core/pixel.hh.

File util/set.hh

Clean code and test!

Zed: Group methods into 2 categories: when frozen, when not.

File utils.hh
Remove this file after ./data.hh is completed!

File value/all.hh
Incomplete list of files.

File value/proxy.hh

Maybe we should overload conversion operator with proxy or... (we have to choose) maybe we should add cpy ctors (with proxy and proxy<J>).

Rename value::proxy as value::shell and fix the specific code from Fred (the 2nd parameter, namely F, is useless)

Checks in ~proxy eventually should be re-activated.

File video.hh
Can we get rid of 'deja_vu' (while playing with the border) in the fastest video version?

File viter.hh
Proxify it!

File weighted_window.hh
Make sym() be optional.

File win_chamfer.hh
Revamp!

File window.hh

Make naming coherent: we have window (without '_') but point_, neighb_, etc.

Code other comparisons (< and <=).

Add static checks in insert methods.

Rename dps_hook_ as util_set_.

File window/props.hh
Precise the differences (?) between dynamic, growing, and free...

File zero.hh
Macro-ification of similar code (when no trivial conversion ops are involved).