sigmajs-triangle-with-contour.js 1.08 KB
/**
 * Sigma.js WebGL Renderer Node Program
 * =====================================
 *
 * Simple program rendering nodes as triangles.
 * It does not extend AbstractNodeProgram, which works very differently, and
 * really targets the gl.POINTS drawing methods.
 * @module
 */

import { NodeDisplayData } from "sigma/types";
import { floatColor } from "sigma/utils";
import TriangleProgram from "./sigmajs-triangle-abstract";

const POINTS = 6;
const ATTRIBUTES = 5;

const ANGLE_1 = - (0.5 * Math.PI) / 3;
const ANGLE_2 =   (1.5 * Math.PI) / 3;
const ANGLE_3 =   (3.5 * Math.PI) / 3;

export default class NodeProgram extends TriangleProgram {
  constructor(gl) {
    super(gl, POINTS, ATTRIBUTES);
  }

  triangleDefinitions(data) {
    const gray = floatColor('#aaa')
    const size = data.size / 2.3;  // experimental...
    const contourSize = size + 0.8;  // experimental...

    return [ { x: data.x, y: data.y, size: contourSize, color: '#aaa', angles: [ANGLE_1, ANGLE_2, ANGLE_3] },
             { x: data.x, y: data.y, size: size, color: data.color, angles: [ANGLE_1, ANGLE_2, ANGLE_3] }];
  }
}