26 #ifndef MLN_WIN_RECTANGLE2D_HH
27 # define MLN_WIN_RECTANGLE2D_HH
35 # include <mln/core/internal/classical_window_base.hh>
36 # include <mln/core/alias/dpoint2d.hh>
37 # include <mln/core/def/coord.hh>
43 mln_internal_add_classical_window_trait(rectangle2d);
64 struct rectangle2d :
public internal::classical_window_base< dpoint2d, rectangle2d >
80 unsigned width()
const;
83 unsigned area()
const;
88 unsigned delta_()
const;
92 const std::vector<dpoint2d>&
std_vector()
const;
94 void print_(std::ostream& ostr)
const;
98 unsigned height_, width_;
103 # ifndef MLN_INCLUDE_ONLY
110 mln_precondition(height % 2 == 1 && width % 2 == 1);
134 return width_ * height_;
138 unsigned rectangle2d::delta_()
const
140 return width_ > height_ ? width_ / 2 : height_ / 2;
144 const std::vector<dpoint2d>&
147 return win_.std_vector();
152 rectangle2d::print_(std::ostream& ostr)
const
154 ostr <<
"[rectangle2d: width=" << width_ <<
", height=" << height_ <<
']';
157 # endif // ! MLN_INCLUDE_ONLY
166 # include <mln/win/hline2d.hh>
167 # include <mln/win/vline2d.hh>
170 #endif // ! MLN_WIN_RECTANGLE2D_HH