26 #ifndef MLN_MORPHO_COMPLEMENTATION_HH
27 # define MLN_MORPHO_COMPLEMENTATION_HH
36 # include <mln/data/compare.hh>
37 # include <mln/logical/not.hh>
38 # include <mln/arith/revert.hh>
63 # ifndef MLN_INCLUDE_ONLY
73 complementation_(trait::image::kind::logic,
74 const Image<I>& input)
76 return logical::not_(input);
82 complementation_inplace_(trait::image::kind::logic,
94 complementation_(trait::image::kind::any,
95 const Image<I>& input)
100 template <
typename I>
103 complementation_inplace_(trait::image::kind::any,
114 template <
typename I>
118 trace::entering(
"morpho::complementation");
119 mln_precondition(exact(input).is_valid());
121 mln_concrete(I) output = impl::complementation_(mln_trait_image_kind(I)(),
124 trace::exiting(
"morpho::complementation");
128 template <
typename I>
132 trace::entering(
"morpho::complementation_inplace");
133 mln_precondition(exact(input).is_valid());
135 impl::complementation_inplace_(mln_trait_image_kind(I)(),
138 trace::exiting(
"morpho::complementation_inplace");
141 # endif // ! MLN_INCLUDE_ONLY
148 #endif // ! MLN_MORPHO_COMPLEMENTATION_HH