17 #ifndef MIR_GEOMETRY_SIZE_H_
18 #define MIR_GEOMETRY_SIZE_H_
40 constexpr Size()
noexcept {}
41 constexpr Size(
Size const&)
noexcept =
default;
45 explicit constexpr Size(
Size<U>
const& other)
noexcept
51 template<
typename WidthType,
typename HeightType>
61 return lhs.width == rhs.width && lhs.height == rhs.height;
67 return lhs.width != rhs.width || lhs.height != rhs.height;
71 std::ostream& operator<<(std::ostream& out,
Size<T>
const& value)
73 out <<
'(' << value.width <<
", " << value.height <<
')';
77 template<
typename T,
typename Scalar>
80 return Size<T>{scale*size.width, scale*size.height};
83 template<
typename T,
typename Scalar>
89 template<
typename T,
typename Scalar>
92 return Size<T>{size.width / scale, size.height / scale};
98 return Size<T>{point.x.as_value(), point.y.as_value()};
104 return Point<T>{size.width.as_value(), size.height.as_value()};