regl-shape
Version:
2D shape shader for regl
42 lines (41 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateDashTextureAndGetLength = void 0;
const dashMult = 2;
const defaultDashData = new Uint8Array(8).fill(255);
function updateDashTextureAndGetLength(texture, dashes) {
let dashLength = 0;
let dashData = null;
if (dashes.length < 2) {
dashLength = 1;
dashData = defaultDashData;
}
else {
dashLength = 0;
for (let i = 0; i < dashes.length; ++i) {
dashLength += dashes[i];
}
dashData = new Uint8Array(dashLength * dashMult);
let ptr = 0;
let fillColor = 255;
// repeat texture two times to provide smooth 0-step
for (let k = 0; k < 2; k++) {
for (let i = 0; i < dashes.length; ++i) {
for (let j = 0, l = dashes[i] * dashMult * 0.5; j < l; ++j) {
dashData[ptr++] = fillColor;
}
fillColor ^= 255;
}
}
}
texture({
channels: 1,
data: dashData,
width: dashData.length,
height: 1,
mag: "linear",
min: "linear",
});
return dashLength;
}
exports.updateDashTextureAndGetLength = updateDashTextureAndGetLength;