15#ifndef O2_MCH_CONTOUR_EDGE_H
16#define O2_MCH_CONTOUR_EDGE_H
71 throw std::invalid_argument(
"edge should be either horizontal or vertical");
92 return std::max(edge.
begin().y, edge.
end().y);
98 return std::min(edge.
begin().y, edge.
end().y);
104 return edge.
begin().y > edge.
end().y;
128 return std::min(edge.
begin().x, edge.
end().x);
134 return std::max(edge.
begin().x, edge.
end().x);
140 return edge.
begin().x < edge.
end().x;
152 os <<
"[" << edge.
begin() <<
"," << edge.
end() <<
"]";
159 os << static_cast<const ManhattanEdge<T>>(edge);
167 os << static_cast<const ManhattanEdge<T>>(edge);
175 return lhs.begin() == rhs.begin() && rhs.end() == rhs.end();
181 return !(rhs == lhs);
HorizontalEdge(T y={}, T x1={}, T x2={})
ManhattanEdge(Vertex< T > b={}, Vertex< T > e={})
Vertex< T > begin() const
VerticalEdge(T x={}, T y1={}, T y2={})
GLuint GLfloat GLfloat GLfloat GLfloat y1
GLuint GLfloat GLfloat GLfloat x1
GLdouble GLdouble GLdouble GLdouble top
GLboolean GLboolean GLboolean b
bool operator!=(const ManhattanEdge< T > &&lhs, const ManhattanEdge< T > &rhs)
bool isLeftEdge(const VerticalEdge< T > &edge)
bool isVertical(const ManhattanEdge< T > &edge)
bool isTopToBottom(const VerticalEdge< T > &edge)
bool operator==(const ManhattanEdge< T > &lhs, const ManhattanEdge< T > &rhs)
bool isBottomToTop(const VerticalEdge< T > &edge)
bool isLeftToRight(const HorizontalEdge< T > &edge)
bool isHorizontal(const ManhattanEdge< T > &edge)
bool isRightEdge(const VerticalEdge< T > &edge)
std::ostream & operator<<(std::ostream &os, const ManhattanEdge< T > &edge)
bool isRightToLeft(const HorizontalEdge< T > &edge)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...