Sha256: 300620ce51f03339b4051cd8c4c6768905cc2b609bbe29d44fd481aa16ab2765
Contents?: true
Size: 1.46 KB
Versions: 3
Compression:
Stored size: 1.46 KB
Contents
/* * L.PolyUtil contains utilify functions for polygons (clipping, etc.). */ /*jshint bitwise:false */ // allow bitwise oprations here L.PolyUtil = {}; /* * Sutherland-Hodgeman polygon clipping algorithm. * Used to avoid rendering parts of a polygon that are not currently visible. */ L.PolyUtil.clipPolygon = function (points, bounds) { var min = bounds.min, max = bounds.max, clippedPoints, edges = [1, 4, 2, 8], i, j, k, a, b, len, edge, p, lu = L.LineUtil; for (i = 0, len = points.length; i < len; i++) { points[i]._code = lu._getBitCode(points[i], bounds); } // for each edge (left, bottom, right, top) for (k = 0; k < 4; k++) { edge = edges[k]; clippedPoints = []; for (i = 0, len = points.length, j = len - 1; i < len; j = i++) { a = points[i]; b = points[j]; // if a is inside the clip window if (!(a._code & edge)) { // if b is outside the clip window (a->b goes out of screen) if (b._code & edge) { p = lu._getEdgeIntersection(b, a, edge, bounds); p._code = lu._getBitCode(p, bounds); clippedPoints.push(p); } clippedPoints.push(a); // else if b is inside the clip window (a->b enters the screen) } else if (!(b._code & edge)) { p = lu._getEdgeIntersection(b, a, edge, bounds); p._code = lu._getBitCode(p, bounds); clippedPoints.push(p); } } points = clippedPoints; } return points; }; /*jshint bitwise:true */
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
leaflet-ruby-0.3.beta4 | lib/leaflet/src/geometry/PolyUtil.js |
leaflet-ruby-0.3.beta3 | lib/leaflet/src/geometry/PolyUtil.js |
leaflet-ruby-0.3.beta1 | lib/leaflet/src/geometry/PolyUtil.js |