Warning, file /education/kstars/kstars/libtess/src/tessellate.js was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 tessellate = (function() {
0002 
0003 var c_tessellate = Module.cwrap('tessellate', 'void', ['number', 'number', 'number', 
0004                                                        'number', 'number', 'number']);
0005 var tessellate = function(loops)
0006 {
0007     var i;
0008     if (loops.length === 0)
0009         throw "Expected at least one loop";
0010 
0011     var vertices = [];
0012     var boundaries = [0];
0013 
0014     for (var l=0; l<loops.length; ++l) {
0015         var loop = loops[l];
0016         if (loop.length % 2 !== 0)
0017             throw "Expected even number of coordinates";
0018         vertices.push.apply(vertices, loop);
0019         boundaries.push(vertices.length);
0020     }
0021 
0022     var p = Module._malloc(vertices.length * 8);
0023 
0024     for (i=0; i<vertices.length; ++i)
0025         Module.setValue(p+i*8, vertices[i], "double");
0026 
0027     var contours = Module._malloc(boundaries.length * 4);
0028     for (i=0; i<boundaries.length; ++i)
0029         Module.setValue(contours + 4 * i, p + 8 * boundaries[i], 'i32');
0030 
0031     var ppcoordinates_out = Module._malloc(4);
0032     var pptris_out = Module._malloc(4);
0033     var pnverts = Module._malloc(4);
0034     var pntris = Module._malloc(4);
0035 
0036     c_tessellate(ppcoordinates_out, pnverts, pptris_out, pntris, 
0037                  contours, contours+4*boundaries.length);
0038 
0039     var pcoordinates_out = Module.getValue(ppcoordinates_out, 'i32');
0040     var ptris_out = Module.getValue(pptris_out, 'i32');
0041 
0042     var nverts = Module.getValue(pnverts, 'i32');
0043     var ntris = Module.getValue(pntris, 'i32');
0044 
0045     var result_vertices = new Float64Array(nverts * 2);
0046     var result_triangles = new Int32Array(ntris * 3);
0047 
0048     for (i=0; i<2*nverts; ++i) {
0049         result_vertices[i] = Module.getValue(pcoordinates_out + i*8, 'double');
0050     }
0051     for (i=0; i<3*ntris; ++i) {
0052         result_triangles[i] = Module.getValue(ptris_out + i*4, 'i32');
0053     }
0054     Module._free(pnverts);
0055     Module._free(pntris);
0056     Module._free(ppcoordinates_out);
0057     Module._free(pptris_out);
0058     Module._free(pcoordinates_out);
0059     Module._free(ptris_out);
0060     Module._free(p);
0061     Module._free(contours);
0062     return {
0063         vertices: result_vertices,
0064         triangles: result_triangles
0065     };
0066 };
0067 
0068 return tessellate;
0069 
0070 })();