MIRA
|
Namespaces | |
rpc | |
Classes | |
struct | ActiveEdgeCuts |
struct | ArgumentTuple |
struct | ConcreteRPCInvoker |
class | EdgeCuts |
class | FunctionTraits |
struct | FunctionTraits< F & > |
struct | FunctionTraits< F && > |
class | FunctionTraits< F, typename std::enable_if< Private::HasParenthesis< F >::value >::type > |
struct | FunctionTraits< R(*)(Args...)> |
class | FunctionTraits< R(Args...)> |
class | FunctionTraits< R(C::*)(Args...) const > |
class | FunctionTraits< R(C::*)(Args...)> |
class | FunctionTraits< R(C::*)> |
class | HasParenthesis |
struct | Interval |
class | Intervals |
class | MemberInvoker |
struct | RPCInvokeHelper |
struct | RPCInvokeHelper< void > |
Typedefs | |
template<typename P > | |
using | StrippedType = typename std::remove_const< typename std::remove_reference< P >::type >::type |
Functions | |
template<class Visitor > | |
bool | processActiveEdges (ActiveEdgeCuts &activeEdges, const Rect2i ®ion, Visitor &visitor) |
Process all active edges at current y, advance y, remove any edges that are finished, then return. More... | |
template<class Visitor > | |
bool | processTwoActiveEdges (ActiveEdgeCuts &activeEdges, const Rect2i ®ion, Visitor &visitor, const int nextY) |
Optimization of processActiveEdges() for exactly 2 active edges: None of them can finish before another edge gets active (or the polygon is done) - designated by nextY. More... | |
template<class Visitor > | |
bool | processIntervals (const ActiveEdgeCuts &activeEdges, Intervals &intervals, const Rect2i ®ion, Visitor &visitor, uint precision) |
template<class Visitor > | |
bool | processActiveEdges (ActiveEdgeCuts &activeEdges, Intervals &intervals, const Rect2i ®ion, Visitor &visitor, uint precision) |
See above. More... | |
template<class Visitor > | |
bool | processTwoActiveEdges (ActiveEdgeCuts &activeEdges, Intervals &intervals, const Rect2i ®ion, Visitor &visitor, const uint precision, const int nextY) |
See above. More... | |
Point2f | roundAwayFromGrid (Point2f point) |
void | processEdge (const Point2f ¤t, const Point2f &prev, std::vector< EdgeCuts > &cuts) |
template<class Transformation > | |
std::vector< EdgeCuts > | createEdgeList (const Polygon2f &polygon, Transformation &&F) |
bool | intervalsOverlap (const Interval &interval1, const Interval &interval2) |
int | scaleDown (int numToRound, int multiple) |
bool | compareCurrentCut (const EdgeCuts &a, const EdgeCuts &b) |
void | removeEmptyEdges (ActiveEdgeCuts &activeEdges) |
move empty edges to front of container (and continue behind them) More... | |
void | advanceEdgeCuts (ActiveEdgeCuts &activeEdges) |
advance edge cuts, move empty edges to front of container (and continue behind them) More... | |
template<class Visitor > | |
bool | visitInterval (int x_start, int x_end, int y, Visitor &visitor) |
template<typename Backend , typename T > | |
StrippedType< T > | getFromRequest (typename Backend::ServerRequest &request) |
template<typename Response > | |
void | throwRPCException (Response &response) |
template<typename A , typename B > | |
static constexpr bool | isConstr () |
using StrippedType = typename std::remove_const<typename std::remove_reference<P>::type>::type |
bool mira::Private::processActiveEdges | ( | ActiveEdgeCuts & | activeEdges, |
const Rect2i & | region, | ||
Visitor & | visitor | ||
) |
Process all active edges at current y, advance y, remove any edges that are finished, then return.
Gets called for each y by an external loop.
bool mira::Private::processTwoActiveEdges | ( | ActiveEdgeCuts & | activeEdges, |
const Rect2i & | region, | ||
Visitor & | visitor, | ||
const int | nextY | ||
) |
Optimization of processActiveEdges() for exactly 2 active edges: None of them can finish before another edge gets active (or the polygon is done) - designated by nextY.
Simply loop over y till reaching that point and finally remove finished edges just once.
bool mira::Private::processIntervals | ( | const ActiveEdgeCuts & | activeEdges, |
Intervals & | intervals, | ||
const Rect2i & | region, | ||
Visitor & | visitor, | ||
uint | precision | ||
) |
bool mira::Private::processActiveEdges | ( | ActiveEdgeCuts & | activeEdges, |
Intervals & | intervals, | ||
const Rect2i & | region, | ||
Visitor & | visitor, | ||
uint | precision | ||
) |
See above.
bool mira::Private::processTwoActiveEdges | ( | ActiveEdgeCuts & | activeEdges, |
Intervals & | intervals, | ||
const Rect2i & | region, | ||
Visitor & | visitor, | ||
const uint | precision, | ||
const int | nextY | ||
) |
See above.
|
inline |
std::vector<EdgeCuts> mira::Private::createEdgeList | ( | const Polygon2f & | polygon, |
Transformation && | F | ||
) |
|
inline |
|
inline |
|
inline |
move empty edges to front of container (and continue behind them)
|
inline |
advance edge cuts, move empty edges to front of container (and continue behind them)
bool mira::Private::visitInterval | ( | int | x_start, |
int | x_end, | ||
int | y, | ||
Visitor & | visitor | ||
) |
StrippedType<T> mira::Private::getFromRequest | ( | typename Backend::ServerRequest & | request | ) |
void mira::Private::throwRPCException | ( | Response & | response | ) |
|
static |