return FALSE;
}
+static boolean node_in_box(node_t *n, boxf b)
+{
+ return boxf_overlap(ND_bb(n), b);
+}
+
static void emit_node(GVJ_t * job, node_t * n)
{
GVC_t *gvc = job->gvc;
return;
if (node_in_layer(job, n->graph, n)
- && overlap_node(n, job->pageBoxClip)
+ && node_in_box(n, job->pageBoxClip)
&& (ND_state(n) != gvc->viewNum)) {
gvrender_comment(job, n->name);
gvrender_end_context(job);
}
+static boolean edge_in_box(edge_t *e, boxf b)
+{
+ splines *spl;
+ textlabel_t *lp;
+
+ spl = ED_spl(e);
+ if (spl && boxf_overlap(spl->bb, b))
+ return TRUE;
+
+ lp = ED_label(e);
+ if (lp && overlap_label(lp, b))
+ return TRUE;
+
+ return FALSE;
+}
+
static void emit_edge(GVJ_t * job, edge_t * e)
{
char *s, *url = NULL, *label = NULL, *tooltip = NULL, *target = NULL;
textlabel_t *lab = NULL;
- if (! overlap_edge(e, job->pageBoxClip)
+ if (! edge_in_box(e, job->pageBoxClip)
|| ! edge_in_layer(job, e->head->graph, e))
return;
extern void osize_label(textlabel_t *, int *, int *, int *, int *);
extern boolean overlap_edge(edge_t *e, boxf b);
extern boolean overlap_node(node_t *n, boxf b);
+ extern boolean overlap_label(textlabel_t *lp, boxf b);
extern char **parse_style(char *s);
extern void place_graph_label(Agraph_t *);
extern void place_portlabel(edge_t * e, boolean head_p);
return TRUE;
}
-static boolean overlap_label(textlabel_t *lp, boxf b)
+boolean overlap_label(textlabel_t *lp, boxf b)
{
double sx, sy;
boxf bb;
}
lp = ED_label(e);
- if (lp && overlap_label(lp, b))
- return TRUE;
+ if (lp && overlap_label(lp, b))
+ return TRUE;
return FALSE;
}