19 #ifndef MIR_GEOMETRY_DIMENSIONS_H_
20 #define MIR_GEOMETRY_DIMENSIONS_H_
37 template<DimensionTag Tag>
44 template<
typename AnyInteger>
45 explicit IntWrapper(AnyInteger value) : value(static_cast<ValueType>(value)) {}
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>
120 inline DeltaY
operator+(DeltaY lhs, DeltaY rhs) {
return DeltaY(lhs.as_int() + rhs.as_int()); }
122 inline DeltaY
operator-(DeltaY lhs, DeltaY rhs) {
return DeltaY(lhs.as_int() - rhs.as_int()); }
125 inline X
operator+(X lhs, DeltaX rhs) {
return X(lhs.as_int() + rhs.as_int()); }
126 inline Y
operator+(Y lhs, DeltaY rhs) {
return Y(lhs.as_int() + rhs.as_int()); }
127 inline X
operator-(X lhs, DeltaX rhs) {
return X(lhs.as_int() - rhs.as_int()); }
128 inline Y
operator-(Y lhs, DeltaY rhs) {
return Y(lhs.as_int() - rhs.as_int()); }
131 inline DeltaX
operator-(X lhs, X rhs) {
return DeltaX(lhs.as_int() - rhs.as_int()); }
132 inline DeltaY
operator-(Y lhs, Y rhs) {
return DeltaY(lhs.as_int() - rhs.as_int()); }
134 template<
typename Target,
typename Source>
135 inline Target
dim_cast(Source s) {
return Target(s.as_int()); }
All things Mir.
Definition: aging_buffer.h:24
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
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
Displacement operator+(Displacement const &lhs, Displacement const &rhs)
Definition: displacement.h:62
uint32_t as_uint32_t() const
Definition: dimensions.h:47
bool operator>=(IntWrapper< Tag > const &lhs, IntWrapper< Tag > const &rhs)
Definition: dimensions.h:90
Displacement operator-(Displacement const &lhs, Displacement const &rhs)
Definition: displacement.h:67
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
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