Commit 9f8dd4c5 authored by Romain Loth's avatar Romain Loth

WIP port: re-add our label rendering as a method override (instead of inline...

WIP port: re-add our label rendering as a method override (instead of inline like in sigma.v1.customized.js)
parent a8b9992f
......@@ -236,13 +236,18 @@ if(RES["OK"]) {
console.log("customSettings", customSettings)
// custom rendering
// custom nodes rendering
if (customSettings['twNodeRendBorder']) {
// overriding the def is simplest
// (could also do it by type)
sigma.canvas.nodes.def = sigma_utils.twRender.canvas.nodes.withBorders
}
// custom labels rendering
// - based on the normal one sigma.canvas.labels.def
// - additionnaly supports 'forcelabel' node property
sigma.canvas.labels.def = sigma_utils.twRender.canvas.labels.def
// ==================================================================
// sigma js library invocation (https://github.com/jacomyal/sigma.js)
// ==================================================================
......
......@@ -92,7 +92,42 @@ SigmaUtils = function () {
// cf. http://yomguithereal.github.io/articles/node-border-renderer/
// same hierarchy as in sigma.canvas
this.twRender = {canvas: {nodes: {}}}
this.twRender = {canvas: {nodes: {}, labels: {}}}
this.twRender.canvas.labels.def = function(node, context, settings) {
var fontSize,
prefix = settings('prefix') || '',
size = node[prefix + 'size'];
activeFlag = node['active'] || node['forceLabel']
// NB active is used in all TW selections
// forceLabel is seldom used
if (!activeFlag && size < settings('labelThreshold'))
return;
if (!node.label || typeof node.label !== 'string')
return;
fontSize = (settings('labelSize') === 'fixed') ?
settings('defaultLabelSize') :
settings('labelSizeRatio') * size;
// we also boost size of active nodes
if (activeFlag) fontSize *= 3
context.font = (settings('fontStyle') ? settings('fontStyle') + ' ' : '') +
fontSize + 'px ' + settings('font');
context.fillStyle = (settings('labelColor') === 'node') ?
(node.color || settings('defaultNodeColor')) :
settings('defaultLabelColor');
context.fillText(
node.label,
Math.round(node[prefix + 'x'] + size + 3),
Math.round(node[prefix + 'y'] + fontSize / 3)
);
};
// node rendering with borders
this.twRender.canvas.nodes.withBorders = function(node, context, settings) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment