}
/* initAnchor:
- * Save current map values
+ * Save current map values.
* Initialize fields in job->obj pertaining to anchors.
* In particular, this also sets the output rectangle.
- * If there is something to do, close current anchor if
- * necessary, start the anchor and returns 1.
+ * If there is something to do,
+ * start the anchor and returns 1.
* Otherwise, it returns 0.
*
* FIX: Should we provide a tooltip if none is set, as is done
*/
static int
initAnchor(GVJ_t * job, htmlenv_t * env, htmldata_t * data, boxf b,
- htmlmap_data_t * save, int closePrev)
+ htmlmap_data_t * save)
{
obj_state_t *obj = job->obj;
int changed;
agxbfree(&xb);
if (changed) {
- if (closePrev && (save->url || save->explicit_tooltip))
- gvrender_end_anchor(job);
if (obj->url || obj->explicit_tooltip) {
emit_map_rect(job, b);
gvrender_begin_anchor(job,
/* endAnchor:
* Pop context pushed by initAnchor.
* This is done by ending current anchor, restoring old values and
- * freeing new, and reopening previous anchor if necessary.
+ * freeing new.
*
* NB: We don't save or restore geometric map info. This is because
* this preservation of map context is only necessary for SVG-like
* top-down. For ordinary map anchors, this is all done bottom-up, so
* the geometric map info at the higher level hasn't been emitted yet.
*/
-static void endAnchor(GVJ_t * job, htmlmap_data_t * save, int openPrev)
+static void endAnchor(GVJ_t * job, htmlmap_data_t * save)
{
obj_state_t *obj = job->obj;
RESET(target);
RESET(id);
obj->explicit_tooltip = save->explicit_tooltip;
- if (openPrev && (obj->url || obj->explicit_tooltip))
- gvrender_begin_anchor(job,
- obj->url, obj->tooltip, obj->target,
- obj->id);
}
/* forward declaration */
pts.UR.y += pos.y;
if (doAnchor && !(job->flags & EMIT_CLUSTERS_LAST))
- anchor = initAnchor(job, env, &tbl->data, pts, &saved, 1);
+ anchor = initAnchor(job, env, &tbl->data, pts, &saved);
else
anchor = 0;
}
if (anchor)
- endAnchor(job, &saved, 1);
+ endAnchor(job, &saved);
if (doAnchor && (job->flags & EMIT_CLUSTERS_LAST)) {
- if (initAnchor(job, env, &tbl->data, pts, &saved, 0))
- endAnchor(job, &saved, 0);
+ if (initAnchor(job, env, &tbl->data, pts, &saved))
+ endAnchor(job, &saved);
}
if (tbl->font)
pts.UR.y += pos.y;
if (doAnchor && !(job->flags & EMIT_CLUSTERS_LAST))
- inAnchor = initAnchor(job, env, &cp->data, pts, &saved, 1);
+ inAnchor = initAnchor(job, env, &cp->data, pts, &saved);
else
inAnchor = 0;
}
if (inAnchor)
- endAnchor(job, &saved, 1);
+ endAnchor(job, &saved);
if (doAnchor && (job->flags & EMIT_CLUSTERS_LAST)) {
- if (initAnchor(job, env, &cp->data, pts, &saved, 0))
- endAnchor(job, &saved, 0);
+ if (initAnchor(job, env, &cp->data, pts, &saved))
+ endAnchor(job, &saved);
}
}