(gl, data, options)
| 2252 | var fs_s$2 = ['precision mediump float;', 'uniform vec4 u_FragColor;', 'void main() {', 'gl_FragColor = u_FragColor;', '}'].join(''); |
| 2253 | |
| 2254 | function draw$4(gl, data, options) { |
| 2255 | |
| 2256 | if (!data) { |
| 2257 | return; |
| 2258 | } |
| 2259 | |
| 2260 | // gl.clearColor(0.0, 0.0, 0.0, 1.0); |
| 2261 | gl.clear(gl.COLOR_BUFFER_BIT); |
| 2262 | gl.viewport(0, 0, gl.canvas.width, gl.canvas.height); |
| 2263 | |
| 2264 | var program = initShaders(gl, vs_s$2, fs_s$2); |
| 2265 | |
| 2266 | gl.enable(gl.BLEND); |
| 2267 | gl.blendFunc(gl.SRC_ALPHA, gl.ONE); |
| 2268 | |
| 2269 | var halfCanvasWidth = gl.canvas.width / 2; |
| 2270 | var halfCanvasHeight = gl.canvas.height / 2; |
| 2271 | |
| 2272 | // Bind the buffer object to target |
| 2273 | gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer()); |
| 2274 | gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, gl.createBuffer()); |
| 2275 | |
| 2276 | var a_Position = gl.getAttribLocation(program, 'a_Position'); |
| 2277 | // Assign the buffer object to a_Position variable |
| 2278 | gl.vertexAttribPointer(a_Position, 2, gl.FLOAT, false, 0, 0); |
| 2279 | |
| 2280 | // Enable the assignment to a_Position variable |
| 2281 | gl.enableVertexAttribArray(a_Position); |
| 2282 | |
| 2283 | var uFragColor = gl.getUniformLocation(program, 'u_FragColor'); |
| 2284 | |
| 2285 | var colored = getColorData(options.fillStyle || 'red'); |
| 2286 | |
| 2287 | gl.uniform4f(uFragColor, colored[0] / 255, colored[1] / 255, colored[2] / 255, colored[3] / 255); |
| 2288 | |
| 2289 | gl.lineWidth(options.lineWidth || 1); |
| 2290 | |
| 2291 | var verticesArr = []; |
| 2292 | var trianglesArr = []; |
| 2293 | |
| 2294 | var maxSize = 65536; |
| 2295 | var indexOffset = 0; |
| 2296 | |
| 2297 | for (var i = 0, len = data.length; i < len; i++) { |
| 2298 | |
| 2299 | var flatten = earcut.flatten(data[i].geometry._coordinates || data[i].geometry.coordinates); |
| 2300 | var vertices = flatten.vertices; |
| 2301 | indexOffset = verticesArr.length / 2; |
| 2302 | for (var j = 0; j < vertices.length; j += 2) { |
| 2303 | vertices[j] = (vertices[j] - halfCanvasWidth) / halfCanvasWidth; |
| 2304 | vertices[j + 1] = (halfCanvasHeight - vertices[j + 1]) / halfCanvasHeight; |
| 2305 | } |
| 2306 | |
| 2307 | if ((verticesArr.length + vertices.length) / 2 > maxSize) { |
| 2308 | gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(verticesArr), gl.STATIC_DRAW); |
| 2309 | gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(trianglesArr), gl.STATIC_DRAW); |
| 2310 | gl.drawElements(gl.TRIANGLES, trianglesArr.length, gl.UNSIGNED_SHORT, 0); |
| 2311 | verticesArr.length = 0; |
nothing calls this directly
no test coverage detected