26 #ifndef SCRIBO_CORE_GROUP_INFO_HH
27 # define SCRIBO_CORE_GROUP_INFO_HH
33 # include <mln/util/array.hh>
35 # include <mln/accu/shape/bbox.hh>
37 # include <scribo/core/object_links.hh>
38 # include <scribo/core/component_set.hh>
40 # include <scribo/core/internal/sort_comp_ids.hh>
41 # include <scribo/core/concept/serializable.hh>
64 bool is_valid()
const;
67 unsigned card()
const;
69 unsigned pixel_area()
const;
85 # ifndef MLN_INCLUDE_ONLY
89 group_info::group_info()
97 : id_(id), comps_(comps), valid_(true),
98 pixel_area_(pixel_area), bbox_(bbox)
103 group_info::group_info(
unsigned id,
unsigned pixel_area,
const box2d&
bbox,
bool valid)
104 : id_(id), valid_(valid),
105 pixel_area_(pixel_area), bbox_(bbox)
111 group_info::component_ids()
const
118 group_info::component_ids_()
124 bool group_info::is_valid()
const
131 group_info::invalidate()
138 group_info::card()
const
145 group_info::id()
const
152 group_info::pixel_area()
const
159 group_info::bbox()
const
166 group_info::merge(group_info& rhs)
168 comps_.
append(rhs.component_ids());
169 pixel_area_ += rhs.pixel_area();
174 baccu.
take(rhs.bbox());
182 operator<<(std::ostream& ostr,
const group_info& group_info)
184 ostr <<
"group_info[";
186 ostr <<
"id=" << group_info.id() <<
", "
187 <<
"valid=" << group_info.is_valid() <<
", "
188 <<
"pixel_area=" << group_info.pixel_area() <<
", "
189 <<
"bbox=" << group_info.bbox() <<
", "
190 <<
"component_ids=" << group_info.component_ids();
199 operator==(
const group_info& lhs,
const group_info& rhs)
203 && lhs.component_ids() == rhs.component_ids()
204 && lhs.is_valid() == rhs.is_valid()
205 && lhs.pixel_area() == rhs.pixel_area()
206 && lhs.bbox() == rhs.bbox();
210 # endif // ! MLN_INCLUDE_ONLY
216 #endif // ! SCRIBO_CORE_GROUP_INFO_HH