blob: 0fcd65317b25aa544f9a2dd09885f740b0ff994e [file] [log] [blame]
library graphlib.layout.coordinate_system;
import "../graph.dart" show Graph, Edge;
adjust(Graph g) {
var rankDir = g.graph()["rankdir"].toLowerCase();
if (rankDir == "lr" || rankDir == "rl") {
_swapWidthHeight(g);
}
}
undo(Graph g) {
var rankDir = g.graph()["rankdir"].toLowerCase();
if (rankDir == "bt" || rankDir == "rl") {
_reverseY(g);
}
if (rankDir == "lr" || rankDir == "rl") {
_swapXY(g);
_swapWidthHeight(g);
}
}
_swapWidthHeight(Graph g) {
g.nodes.forEach((v) { _swapWidthHeightOne(g.node(v)); });
g.edges.forEach((e) { _swapWidthHeightOne(g.edgeObj(e)); });
}
_swapWidthHeightOne(Map attrs) {
var w = attrs["width"];
attrs["width"] = attrs["height"];
attrs["height"] = w;
}
_reverseY(Graph g) {
g.nodes.forEach((v) { _reverseYOne(g.node(v)); });
g.edges.forEach((Edge e) {
var edge = g.edgeObj(e);
edge["points"].forEach(_reverseYOne);
if (edge.containsKey("y")) {
_reverseYOne(edge);
}
});
}
_reverseYOne(Map attrs) {
attrs["y"] = -attrs["y"];
}
_swapXY(Graph g) {
g.nodes.forEach((v) { _swapXYOne(g.node(v)); });
g.edges.forEach((Edge e) {
var edge = g.edgeObj(e);
edge["points"].forEach(_swapXYOne);
if (edge.containsKey("x")) {
_swapXYOne(edge);
}
});
}
_swapXYOne(Map attrs) {
var x = attrs["x"];
attrs["x"] = attrs["y"];
attrs["y"] = x;
}