19 #ifndef MIR_GEOMETRY_DIMENSIONS_H_
20 #define MIR_GEOMETRY_DIMENSIONS_H_
37 template<DimensionTag Tag>
44 template<
typename AnyInteger>
49 return (uint32_t)value;
64 template<DimensionTag Tag>
65 std::ostream& operator<<(std::ostream& out, IntWrapper<Tag>
const& value)
67 out << value.as_int();
71 template<DimensionTag Tag>
77 template<DimensionTag Tag>
83 template<DimensionTag Tag>
86 return lhs.
as_int() <= rhs.as_int();
89 template<DimensionTag Tag>
95 template<DimensionTag Tag>
98 return lhs.
as_int() < rhs.as_int();
101 template<DimensionTag Tag>
134 template<
typename Target,
typename Source>
135 inline Target
dim_cast(Source s) {
return Target(s.as_int()); }
bool operator==(IntWrapper< Tag > const &lhs, IntWrapper< Tag > const &rhs)
Definition: dimensions.h:72
detail::IntWrapper< detail::dx > DeltaX
Definition: dimensions.h:115
float as_float() const
Definition: dimensions.h:55
DeltaX operator-(DeltaX lhs, DeltaX rhs)
Definition: dimensions.h:121
detail::IntWrapper< detail::height > Height
Definition: dimensions.h:109
int ValueType
Definition: dimensions.h:41
Definition: dimensions.h:35
detail::IntWrapper< detail::stride > Stride
Definition: dimensions.h:111
Definition: dimensions.h:35
DimensionTag
Definition: dimensions.h:35
Definition: dimensions.h:35
detail::IntWrapper< detail::width > Width
Definition: dimensions.h:108
uint32_t as_uint32_t() const
Definition: dimensions.h:47
bool operator>=(IntWrapper< Tag > const &lhs, IntWrapper< Tag > const &rhs)
Definition: dimensions.h:90
Definition: dimensions.h:35
detail::IntWrapper< detail::x > X
Definition: dimensions.h:113
detail::IntWrapper< detail::dy > DeltaY
Definition: dimensions.h:116
bool operator>(IntWrapper< Tag > const &lhs, IntWrapper< Tag > const &rhs)
Definition: dimensions.h:102
Target dim_cast(Source s)
Definition: dimensions.h:135
DeltaX operator+(DeltaX lhs, DeltaX rhs)
Definition: dimensions.h:119
Definition: dimensions.h:35
Definition: dimensions.h:35
bool operator!=(IntWrapper< Tag > const &lhs, IntWrapper< Tag > const &rhs)
Definition: dimensions.h:78
detail::IntWrapper< detail::y > Y
Definition: dimensions.h:114
Definition: dimensions.h:38
Definition: dimensions.h:35
IntWrapper(AnyInteger value)
Definition: dimensions.h:45
int as_int() const
Definition: dimensions.h:51
IntWrapper()
Definition: dimensions.h:43