last-svn-commit-495-g87288fe Fix issues with object_links and ignored components.

* scribo/filter/object_links_bbox_overlap.hh, * scribo/filter/object_links_bbox_ratio.hh, * scribo/filter/object_links_non_aligned_simple.hh, * scribo/primitive/link/merge_double_link.hh: Ignore invalid links. --- scribo/ChangeLog | 9 +++++++++ scribo/scribo/filter/object_links_bbox_overlap.hh | 2 +- scribo/scribo/filter/object_links_bbox_ratio.hh | 7 ++++--- .../filter/object_links_non_aligned_simple.hh | 9 +++++---- scribo/scribo/primitive/link/merge_double_link.hh | 5 +++-- 5 files changed, 22 insertions(+), 10 deletions(-) diff --git a/scribo/ChangeLog b/scribo/ChangeLog index f6c6a4b..9493a12 100644 --- a/scribo/ChangeLog +++ b/scribo/ChangeLog @@ -1,5 +1,14 @@ 2010-10-21 Guillaume Lazzara <z@lrde.epita.fr> + Fix issues with object_links and ignored components. + + * scribo/filter/object_links_bbox_overlap.hh, + * scribo/filter/object_links_bbox_ratio.hh, + * scribo/filter/object_links_non_aligned_simple.hh, + * scribo/primitive/link/merge_double_link.hh: Ignore invalid links. + +2010-10-21 Guillaume Lazzara <z@lrde.epita.fr> + * scribo/core/component_set.hh: Fix component_set id type. 2010-10-21 Guillaume Lazzara <z@lrde.epita.fr> diff --git a/scribo/scribo/filter/object_links_bbox_overlap.hh b/scribo/scribo/filter/object_links_bbox_overlap.hh index ffcbb6c..995ad68 100644 --- a/scribo/scribo/filter/object_links_bbox_overlap.hh +++ b/scribo/scribo/filter/object_links_bbox_overlap.hh @@ -81,7 +81,7 @@ namespace scribo object_links<L> output(links); for_all_comps(i, components) - if (components(i).is_valid() && links(i) != i) + if (components(i).is_valid() && links(i) && links(i) != i) { bool has_intersection = true; mln_site(L) pmin, pmax; diff --git a/scribo/scribo/filter/object_links_bbox_ratio.hh b/scribo/scribo/filter/object_links_bbox_ratio.hh index e5d41c6..5318b57 100644 --- a/scribo/scribo/filter/object_links_bbox_ratio.hh +++ b/scribo/scribo/filter/object_links_bbox_ratio.hh @@ -1,4 +1,5 @@ -// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE) +// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory +// (LRDE) // // This file is part of Olena. // @@ -79,8 +80,8 @@ namespace scribo const component_set<L>& components = links.components(); object_links<L> output = links.duplicate(); - for (unsigned i = 1; i < links.nelements(); ++i) - if (links(i) != i) + for_all_links(i, links) + if (links(i) && links(i) != i) { float lmin = components(i).bbox().pmax()[dim] diff --git a/scribo/scribo/filter/object_links_non_aligned_simple.hh b/scribo/scribo/filter/object_links_non_aligned_simple.hh index 1f56d85..2381d88 100644 --- a/scribo/scribo/filter/object_links_non_aligned_simple.hh +++ b/scribo/scribo/filter/object_links_non_aligned_simple.hh @@ -109,10 +109,11 @@ namespace scribo float max_alpha_rad = (max_alpha / 180.0f) * math::pi; for_all_comps(i, comps) - if (!::scribo::filter::internal::component_aligned_rad(comps, i, links(i), - anchor, - max_alpha_rad)) - output(i) = i; + if (comps(i).is_valid() && links(i)) + if (!::scribo::filter::internal::component_aligned_rad(comps, i, links(i), + anchor, + max_alpha_rad)) + output(i) = i; trace::exiting("scribo::filter::object_links_non_aligned_simple"); diff --git a/scribo/scribo/primitive/link/merge_double_link.hh b/scribo/scribo/primitive/link/merge_double_link.hh index 94a44ef..e58c1ab 100644 --- a/scribo/scribo/primitive/link/merge_double_link.hh +++ b/scribo/scribo/primitive/link/merge_double_link.hh @@ -1,4 +1,5 @@ -// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE) +// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory +// (LRDE) // // This file is part of Olena. // @@ -92,7 +93,7 @@ namespace scribo const component_set<L>& components = left_link.components(); - object_links<L> merge(left_link); + object_links<L> merge = left_link.duplicate(); for_all_ncomponents(i, components.nelements()) { -- 1.5.6.5
participants (1)
-
Guillaume Lazzara