From f557704a522f412ae9273e279a96de765825143c Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Fri, 17 Apr 2026 00:35:15 +0200 Subject: [PATCH] SAG/embedded edge fixes --- rogueviz/embeddings/embeddings.cpp | 12 ++++++++++-- rogueviz/sag/sag.cpp | 5 +++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/rogueviz/embeddings/embeddings.cpp b/rogueviz/embeddings/embeddings.cpp index 72fc6a69..16058c0c 100644 --- a/rogueviz/embeddings/embeddings.cpp +++ b/rogueviz/embeddings/embeddings.cpp @@ -11,6 +11,11 @@ vector > directed_edges; rogueviz::edgetype *any; +edgetype *ensure_edge() { + if(!any) any = add_edgetype("embedded edge"); + return any; + } + struct rv_embedding : public tiled_embedding { virtual string name() override { return "RogueViz internal representation"; } pair as_location(int id) override { @@ -27,7 +32,7 @@ void read_edgelist(const string& fname) { current = nullptr; }); - any = rogueviz::add_edgetype("embedded edges"); + ensure_edge(); indenter_finish ind(true, "Reading edgelist..."); fhstream f(fname, "rt"); @@ -117,7 +122,10 @@ int a = arg::add3("-edgelist", [] { arg::shift(); read_edgelist(arg::args()); }) + arg::add3("-esaveas", [] { arg::shift(); esave(arg::args()); }) + arg::add3("-missing-edges", [] { arg::shift(); set_missing_edges(arg::argf()); }) + arg::add3("-missing-edges-env", [] { auto env = std::getenv("MISSING_EDGES"); if(env) set_missing_edges(atof(env)); }) - + arg::add3("-el-rv", [] { if(rogueviz::rv_quality == 0) force_rvgraph(); current = std::make_shared (); }); + + arg::add3("-el-rv", [] { if(rogueviz::rv_quality == 0) force_rvgraph(); current = std::make_shared (); }) + + arg::add3("-edge-arrow", [] { + arg::shift(); any->arrow_scale = arg::argf(); + }); } diff --git a/rogueviz/sag/sag.cpp b/rogueviz/sag/sag.cpp index 2db2dc3e..00be0fb8 100644 --- a/rogueviz/sag/sag.cpp +++ b/rogueviz/sag/sag.cpp @@ -322,7 +322,9 @@ int readArgs() { else if(argis("-sag-unoptimize")) { unoptimize(); } - + else if(argis("-sag-edge-arrow")) { + shift(); ensure_sag_edge()->arrow_scale = arg::argf(); + } else return 1; #endif return 0; @@ -356,7 +358,6 @@ void clear() { cell_matrix.clear(); cellpoint.clear(); sagdist.clear(); - sag_edge = nullptr; state = 0; qon.clear(); qsf.clear(); }