@quartic/bokehjs
Version:
Interactive, novel data visualization
144 lines (143 loc) • 5.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var color_1 = require("core/util/color");
exports.BaseGLGlyph = (function () {
BaseGLGlyph.prototype.GLYPH = '';
BaseGLGlyph.prototype.VERT = '';
BaseGLGlyph.prototype.FRAG = '';
function BaseGLGlyph(gl, glyph) {
this.gl = gl;
this.glyph = glyph;
this.nvertices = 0;
this.size_changed = false;
this.data_changed = false;
this.visuals_changed = false;
this.init();
}
BaseGLGlyph.prototype.set_data_changed = function (n) {
if (n !== this.nvertices) {
this.nvertices = n;
this.size_changed = true;
}
return this.data_changed = true;
};
BaseGLGlyph.prototype.set_visuals_changed = function () {
return this.visuals_changed = true;
};
BaseGLGlyph.prototype.render = function (ctx, indices, mainglyph) {
var dx, dy, ref, ref1, ref2, sx, sy, trans, wx, wy;
wx = wy = 1;
ref = this.glyph.renderer.map_to_screen([0 * wx, 1 * wx, 2 * wx], [0 * wy, 1 * wy, 2 * wy]), dx = ref[0], dy = ref[1];
wx = 100 / Math.min(Math.max(Math.abs(dx[1] - dx[0]), 1e-12), 1e12);
wy = 100 / Math.min(Math.max(Math.abs(dy[1] - dy[0]), 1e-12), 1e12);
ref1 = this.glyph.renderer.map_to_screen([0 * wx, 1 * wx, 2 * wx], [0 * wy, 1 * wy, 2 * wy]), dx = ref1[0], dy = ref1[1];
if (Math.abs((dx[1] - dx[0]) - (dx[2] - dx[1])) > 1e-6 || Math.abs((dy[1] - dy[0]) - (dy[2] - dy[1])) > 1e-6) {
return false;
}
ref2 = [(dx[1] - dx[0]) / wx, (dy[1] - dy[0]) / wy], sx = ref2[0], sy = ref2[1];
trans = {
pixel_ratio: ctx.pixel_ratio,
width: ctx.glcanvas.width,
height: ctx.glcanvas.height,
dx: dx[0] / sx,
dy: dy[0] / sy,
sx: sx,
sy: sy
};
this.draw(indices, mainglyph, trans);
return true;
};
return BaseGLGlyph;
})();
exports.line_width = function (width) {
if (width < 2) {
width = Math.sqrt(width * 2);
}
return width;
};
exports.fill_array_with_float = function (n, val) {
var a, i, k, ref;
a = new Float32Array(n);
for (i = k = 0, ref = n; 0 <= ref ? k < ref : k > ref; i = 0 <= ref ? ++k : --k) {
a[i] = val;
}
return a;
};
exports.fill_array_with_vec = function (n, m, val) {
var a, i, j, k, l, ref, ref1;
a = new Float32Array(n * m);
for (i = k = 0, ref = n; 0 <= ref ? k < ref : k > ref; i = 0 <= ref ? ++k : --k) {
for (j = l = 0, ref1 = m; 0 <= ref1 ? l < ref1 : l > ref1; j = 0 <= ref1 ? ++l : --l) {
a[i * m + j] = val[j];
}
}
return a;
};
exports.visual_prop_is_singular = function (visual, propname) {
return visual[propname].spec.value !== void 0;
};
exports.attach_float = function (prog, vbo, att_name, n, visual, name) {
var a;
if (!visual.doit) {
vbo.used = false;
return prog.set_attribute(att_name, 'float', [0]);
}
else if (exports.visual_prop_is_singular(visual, name)) {
vbo.used = false;
return prog.set_attribute(att_name, 'float', visual[name].value());
}
else {
vbo.used = true;
a = new Float32Array(visual.cache[name + '_array']);
vbo.set_size(n * 4);
vbo.set_data(0, a);
return prog.set_attribute(att_name, 'float', vbo);
}
};
exports.attach_color = function (prog, vbo, att_name, n, visual, prefix) {
var a, alphaname, alphas, colorname, colors, i, j, k, l, m, ref, ref1, rgba;
m = 4;
colorname = prefix + '_color';
alphaname = prefix + '_alpha';
if (!visual.doit) {
vbo.used = false;
return prog.set_attribute(att_name, 'vec4', [0, 0, 0, 0]);
}
else if (exports.visual_prop_is_singular(visual, colorname) && exports.visual_prop_is_singular(visual, alphaname)) {
vbo.used = false;
rgba = color_1.color2rgba(visual[colorname].value(), visual[alphaname].value());
return prog.set_attribute(att_name, 'vec4', rgba);
}
else {
vbo.used = true;
if (exports.visual_prop_is_singular(visual, colorname)) {
colors = (function () {
var k, ref, results;
results = [];
for (i = k = 0, ref = n; 0 <= ref ? k < ref : k > ref; i = 0 <= ref ? ++k : --k) {
results.push(visual[colorname].value());
}
return results;
})();
}
else {
colors = visual.cache[colorname + '_array'];
}
if (exports.visual_prop_is_singular(visual, alphaname)) {
alphas = exports.fill_array_with_float(n, visual[alphaname].value());
}
else {
alphas = visual.cache[alphaname + '_array'];
}
a = new Float32Array(n * m);
for (i = k = 0, ref = n; 0 <= ref ? k < ref : k > ref; i = 0 <= ref ? ++k : --k) {
rgba = color_1.color2rgba(colors[i], alphas[i]);
for (j = l = 0, ref1 = m; 0 <= ref1 ? l < ref1 : l > ref1; j = 0 <= ref1 ? ++l : --l) {
a[i * m + j] = rgba[j];
}
}
vbo.set_size(n * m * 4);
vbo.set_data(0, a);
return prog.set_attribute(att_name, 'vec4', vbo);
}
};