263 |
263 |
" //c.w = 0.0;\n" +
|
264 |
264 |
" gl_FragColor = c;\n" +
|
265 |
265 |
" }\n" +
|
266 |
|
" else\n" +
|
267 |
|
" {\n" +
|
268 |
|
" if (dash == 1.0)\n" +
|
269 |
|
" {\n" +
|
270 |
|
" if (m <= dash_pattern.x)\n" +
|
271 |
|
" {\n" +
|
272 |
|
" gl_FragColor = v_color / 255.0;\n" +
|
273 |
|
" }\n" +
|
274 |
|
" else\n" +
|
275 |
|
" {\n" +
|
276 |
|
" discard;\n" +
|
277 |
|
" }\n" +
|
278 |
|
" }\n" +
|
279 |
|
" else\n" +
|
280 |
|
" {\n" +
|
281 |
|
" gl_FragColor = v_color / 255.0;\n" +
|
282 |
|
" }\n" +
|
|
266 |
" else if (dash == 1.0)\n" +
|
|
267 |
" {\n" +
|
|
268 |
" if (m <= dash_pattern.x)\n" +
|
|
269 |
" {\n" +
|
|
270 |
" gl_FragColor = v_color / 255.0;\n" +
|
|
271 |
" }\n" +
|
|
272 |
" else\n" +
|
|
273 |
" {\n" +
|
|
274 |
" discard;\n" +
|
|
275 |
" }\n" +
|
|
276 |
" } else if (dash == 0.0)\n" +
|
|
277 |
" {\n" +
|
|
278 |
" gl_FragColor = v_color / 255.0;\n" +
|
283 |
279 |
" }\n" +
|
284 |
280 |
"}\n";
|
285 |
281 |
/*
|
... | ... | |
1667 |
1663 |
this.triangles = [];
|
1668 |
1664 |
this.cacheTextureData = new Uint8ClampedArray(p2j.screen.webgl.canvas.width * p2j.screen.webgl.canvas.height * 4);
|
1669 |
1665 |
this.imageTextureData = new Uint8ClampedArray(p2j.screen.webgl.canvas.width * p2j.screen.webgl.canvas.height * 4);
|
|
1666 |
gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);
|
1670 |
1667 |
gl.clear(gl.COLOR_BUFFER_BIT);
|
1671 |
|
|
|
1668 |
//var trgSet = new Map();
|
1672 |
1669 |
if (numTriangles > 0)
|
1673 |
1670 |
{
|
1674 |
1671 |
var numVertices = 3 * numTriangles;
|
... | ... | |
1676 |
1673 |
//Fill array buffer
|
1677 |
1674 |
var dv = new DataView(buffer);
|
1678 |
1675 |
var j = 0;
|
|
1676 |
|
1679 |
1677 |
for (var i = 0; i < numTriangles; i++)
|
1680 |
1678 |
{
|
1681 |
1679 |
var t = triangles[i];
|
... | ... | |
1685 |
1683 |
var y2 = t[3];
|
1686 |
1684 |
var x3 = t[4];
|
1687 |
1685 |
var y3 = t[5];
|
|
1686 |
// var trg = [x1, y1, x2, y2, x3, y3];
|
|
1687 |
// const reducer = (accumulator, currentValue) => 2*accumulator + currentValue;
|
|
1688 |
// var h = trg.reduce(reducer);
|
|
1689 |
// var inds = trgSet.get(h);
|
|
1690 |
// if (!inds)
|
|
1691 |
// {
|
|
1692 |
// inds = [];
|
|
1693 |
// trgSet.set(h, inds);
|
|
1694 |
// }
|
|
1695 |
// inds.push(i);
|
1688 |
1696 |
var c1 = t[6];
|
1689 |
1697 |
var c2 = t[7];
|
1690 |
1698 |
var c3 = t[8];
|
... | ... | |
1802 |
1810 |
var count = numVertices;
|
1803 |
1811 |
gl.drawArrays(primitiveType, offset, count);
|
1804 |
1812 |
}
|
1805 |
|
|
|
1813 |
|
|
1814 |
// function logMapElements(value, key, map)
|
|
1815 |
// {
|
|
1816 |
// if (value.length && value.length > 1)
|
|
1817 |
// {
|
|
1818 |
// var trg = triangles[value[0]];
|
|
1819 |
// console.debug("common triangle: " + trg[0] + ", " + trg[1] + " -> " + trg[2] + ", " + trg[3] +
|
|
1820 |
// " -> " + trg[4] + ", " + trg[5]);
|
|
1821 |
// for (var k = 0; k < value.length; k++)
|
|
1822 |
// {
|
|
1823 |
// var t = triangles[value[k]];
|
|
1824 |
// console.debug("triangle: " + t[0] + ", " + t[1] + " -> " + t[2] + ", " + t[3] +
|
|
1825 |
// " -> " + t[4] + ", " + t[5] + " has these attributes:");
|
|
1826 |
// var styleObj = t[10];
|
|
1827 |
// console.debug("color: " + t[6] + ", " + t[7] + ", " + t[8] + ", " + t[9] + " lineStyle -> dash " + ((styleObj) ? "on" : "off"));
|
|
1828 |
// }
|
|
1829 |
// }
|
|
1830 |
// };
|
|
1831 |
//
|
|
1832 |
// trgSet.forEach(logMapElements);
|
|
1833 |
|
1806 |
1834 |
this.screenCtx.save();
|
1807 |
1835 |
this.screenCtx.globalAlpha = 1;
|
1808 |
1836 |
this.screenCtx.globalCompositeOperation = "source-over";
|
... | ... | |
2912 |
2940 |
this.setStrokeStyleId(strokeStyleId);
|
2913 |
2941 |
this.setStrokeWidth(width);
|
2914 |
2942 |
this.strokesManager.applyStrokeToCanvas(this.offscreenCtx, strokeStyleId, width);
|
|
2943 |
//to prevent combo box issues
|
|
2944 |
//this.flash(); // this call causes that some areas become hidden and repainted if the mouse pointer is over them
|
2915 |
2945 |
};
|
2916 |
2946 |
|
2917 |
2947 |
/**
|