Go to the documentation of this file.
12 #include <type_traits>
14 #include <boost/operators.hpp>
45 :
public boost::addable2<Segment<T>, T>
46 ,
public boost::subtractable2<Segment<T>, T>
47 ,
public boost::multipliable2<Segment<T>, T>
48 ,
public boost::dividable2<Segment<T>, T>
49 ,
public boost::andable<Segment<T>>
68 template <bool T_is_int = std::is_same<int, typename std::remove_cv<T>::type>::value>
187 const auto end =
getEnd();
198 template <
typename U>
202 static_cast<U
>(
start),
203 static_cast<U
>(
size),
222 template <
typename T>
228 template <
typename T>
234 template <
typename T>
245 template <
typename T>
T round_up_to_multiple_of(T value, T factor)
Definition: rounding.hh:38
bool isZero< double >(double v)
Definition: linearsegment.hh:32
Definition: assertions.hh:14
T round_down_to_multiple_of(T value, T factor)
Definition: rounding.hh:44
Segment< value_type > & operator+=(value_type n)
Definition: linearsegment.hh:158
bool contains(value_type p) const
Definition: linearsegment.hh:77
Segment< value_type > & operator&=(const Segment< value_type > &other)
Definition: linearsegment.hh:180
constexpr double epsilon
Definition: linearsegment.hh:20
value_type getEnd() const
Definition: linearsegment.hh:135
void normalize()
Definition: linearsegment.hh:208
Segment< T > make_segment_from_start_end(T start, T end)
Definition: linearsegment.hh:229
T value_type
Definition: linearsegment.hh:52
Segment()
Definition: linearsegment.hh:54
bool operator==(const Segment< value_type > &other) const
Definition: linearsegment.hh:141
Segment< value_type > & operator-=(value_type n)
Definition: linearsegment.hh:163
void setSize(value_type n)
Definition: linearsegment.hh:191
Segment< value_type > & operator/=(value_type n)
Definition: linearsegment.hh:174
bool contains(const Segment< value_type > &other) const
Definition: linearsegment.hh:79
bool intersects(const Segment< value_type > &other) const
Definition: linearsegment.hh:84
bool areEqual(T a, T b)
Definition: linearsegment.hh:38
bool isZero< int >(int v)
Definition: linearsegment.hh:26
Definition: linearsegment.hh:44
void reduceSizeToMultipleOf(value_type m)
Definition: linearsegment.hh:89
value_type size
Definition: linearsegment.hh:219
value_type start
Definition: linearsegment.hh:218
void intersect(const Segment< value_type > &other)
Definition: linearsegment.hh:105
static void b(const B::Ptr &)
Definition: gtkhelper-tests.cc:32
Segment< U > to() const
Definition: linearsegment.hh:199
Segment(value_type start_, value_type size_)
Definition: linearsegment.hh:60
Segment moveTo(value_type p) const
Definition: linearsegment.hh:75
bool operator!=(const Segment< value_type > &other) const
Definition: linearsegment.hh:156
Segment< value_type > intersection(const Segment< value_type > &other) const
Definition: linearsegment.hh:91
void setEnd(value_type n)
Definition: linearsegment.hh:192
Segment< T > make_segment(T start, T size)
Definition: linearsegment.hh:223
T center(Segment< T > s)
Definition: linearsegment.hh:246
value_type getStart() const
Definition: linearsegment.hh:133
std::ostream & operator<<(std::ostream &os, const Segment< T > &s)
Definition: linearsegment.hh:235
Segment< double > roundOutward(Segment< double > s)
Definition: linearsegment.hh:240
bool isEmpty() const
Definition: linearsegment.hh:139
value_type getSize() const
Definition: linearsegment.hh:137
Segment(typename std::enable_if<!T_is_int, Segment< int > const & >::type other)
Definition: linearsegment.hh:69
Segment< value_type > & operator*=(value_type n)
Definition: linearsegment.hh:168
Segment< value_type > before(value_type v) const
Definition: linearsegment.hh:107
Segment< value_type > after(value_type v) const
Definition: linearsegment.hh:120
void setStart(value_type n)
Definition: linearsegment.hh:185