in src/main/java/com/uber/h3core/H3Core.java [539:570]
public List<Long> polygonToCells(List<LatLng> points, List<List<LatLng>> holes, int res) {
checkResolution(res);
// pack the data for use by the polyfill JNI call
double[] verts = new double[points.size() * 2];
packGeofenceVertices(verts, points, 0);
int[] holeSizes = new int[0];
double[] holeVerts = new double[0];
if (holes != null) {
holeSizes = new int[holes.size()];
int totalSize = 0;
for (int i = 0; i < holes.size(); i++) {
totalSize += holes.get(i).size() * 2;
// Note we are storing the number of doubles
holeSizes[i] = holes.get(i).size() * 2;
}
holeVerts = new double[totalSize];
int offset = 0;
for (int i = 0; i < holes.size(); i++) {
offset = packGeofenceVertices(holeVerts, holes.get(i), offset);
}
}
int flags = 0;
int sz = longToIntSize(h3Api.maxPolygonToCellsSize(verts, holeSizes, holeVerts, res, flags));
long[] results = new long[sz];
h3Api.polygonToCells(verts, holeSizes, holeVerts, res, flags, results);
return nonZeroLongArrayToList(results);
}