LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
tikz_edge_router.h File Reference

Port of jline.io.tikz.TikZEdgeRouter: orthogonal waypoints that keep an edge off the nodes it would otherwise cross. More...

#include <algorithm>
#include <cmath>
#include <limits>
#include <string>
#include <vector>
#include "line/io/tikz/tikz_graph.h"
#include "line/io/tikz/tikz_options.h"
Include dependency graph for tikz_edge_router.h:

Go to the source code of this file.

Classes

struct  line::io::TikzPoint
 A waypoint in cm. More...
class  line::io::TikzEdgeRouter

Namespaces

namespace  line
 Conservation laws of a layered queueing network, enumerated from its structure.
namespace  line::io

Functions

std::string line::io::tikz_render_routed_edge (const std::string &from_id, const std::string &to_id, const std::string &from_anchor, const std::string &to_anchor, const std::vector< TikzPoint > &wp, double prob, const TikzOptions &opt)
 TikZEdgeRouter.renderRoutedEdge.

Detailed Description

Port of jline.io.tikz.TikZEdgeRouter: orthogonal waypoints that keep an edge off the nodes it would otherwise cross.

A forward edge is straight unless a node's box (plus margin) lies on it, and is then routed above or below the obstacles' mean height. A BACKWARD edge (feedback) is routed around the whole drawing, above it when its source is not below its target, and each one takes the next channel out, so the waypoints of a backward edge depend on how many were routed before it: the router is STATEFUL and the order edges are routed in is part of the output. An edge between two nodes of one layer is offset to the right.

The JAR's bounds start at Double.MIN_VALUE for the maxima (the smallest POSITIVE double, not the most negative); that is kept, since every drawing has a node at y >= 0 and the two starts then give the same bounds anyway.

Definition in file tikz_edge_router.h.