Merge remote-tracking branch 'origin/main' into compression

This commit is contained in:
Erica Fischer
2023-01-27 13:24:40 -08:00
183 changed files with 166613 additions and 166241 deletions
+12 -6
View File
@@ -150,7 +150,7 @@ struct compressor {
// Offset coordinates to keep them positive
#define COORD_OFFSET (4LL << 32)
#define SHIFT_RIGHT(a) ((((a) + COORD_OFFSET) >> geometry_scale) - (COORD_OFFSET >> geometry_scale))
#define SHIFT_RIGHT(a) ((long long) std::round((double)(a) / (1LL << geometry_scale)))
#define XSTRINGIFY(s) STRINGIFY(s)
#define STRINGIFY(s) #s
@@ -419,6 +419,10 @@ struct ordercmp {
}
}
if (a.index < b.index) {
return true;
}
return false; // greater than or equal
}
} ordercmp;
@@ -1910,12 +1914,12 @@ static bool line_is_too_small(drawvec const &geometry, int z, int detail) {
return true;
}
long long x = geometry[0].x >> (32 - detail - z);
long long y = geometry[0].y >> (32 - detail - z);
long long x = std::round((double) geometry[0].x / (1LL << (32 - detail - z)));
long long y = std::round((double) geometry[0].y / (1LL << (32 - detail - z)));
for (auto &g : geometry) {
long long xx = g.x >> (32 - detail - z);
long long yy = g.y >> (32 - detail - z);
long long xx = std::round((double) g.x / (1LL << (32 - detail - z)));
long long yy = std::round((double) g.y / (1LL << (32 - detail - z)));
if (xx != x || yy != y) {
return false;
@@ -2190,7 +2194,9 @@ long long write_tile(FILE *geoms, std::atomic<long long> *geompos_in, char *stri
}
} else if (additional[A_DROP_SMALLEST_AS_NEEDED]) {
add_sample_to(extents, sf.extent, extents_increment, seq);
if (sf.extent + coalesced_area <= minextent && find_partial(partials, sf, which_partial, layer_unmaps, minextent)) {
// search here is for LLONG_MAX, not minextent, because we are dropping features, not coalescing them,
// so we shouldn't expect to find anything small that we can related this feature to.
if (sf.extent + coalesced_area <= minextent && find_partial(partials, sf, which_partial, layer_unmaps, LLONG_MAX)) {
preserve_attributes(arg->attribute_accum, sf, stringpool, pool_off, partials[which_partial]);
strategy->dropped_as_needed++;
continue;