Revert "Serialize and deserialize the distance with the vertices"

This reverts commit 753f1b7909.
This commit is contained in:
Erica Fischer
2024-08-05 10:56:36 -07:00
parent 753f1b7909
commit a9445d2a69
4 changed files with 14 additions and 22 deletions
+4 -4
View File
@@ -895,13 +895,13 @@ static drawvec simplify_lines_basic(drawvec &geom, int z, int detail, double sim
for (size_t i = 0; i < geom.size(); i++) {
if (geom[i].op == VT_MOVETO) {
geom[i].necessary = 127;
geom[i].necessary = 1;
} else if (geom[i].op == VT_LINETO) {
geom[i].necessary = 0;
// if this is actually the endpoint, not an intermediate point,
// it will be marked as necessary below
} else {
geom[i].necessary = 127;
geom[i].necessary = 1;
}
}
@@ -914,8 +914,8 @@ static drawvec simplify_lines_basic(drawvec &geom, int z, int detail, double sim
}
}
geom[i].necessary = 127;
geom[j - 1].necessary = 127;
geom[i].necessary = 1;
geom[j - 1].necessary = 1;
if (j - i > 1) {
douglas_peucker(geom, i, j - i, res * simplification, 2, retain, false);
+8 -11
View File
@@ -40,11 +40,9 @@ drawvec decode_geometry(const char **meta, int z, unsigned tx, unsigned ty, long
if (d.op == VT_MOVETO || d.op == VT_LINETO) {
long long dx, dy;
signed char necessary;
deserialize_long_long(meta, &dx);
deserialize_long_long(meta, &dy);
deserialize_byte(meta, &necessary);
wx += dx * (1 << geometry_scale);
wy += dy * (1 << geometry_scale);
@@ -64,7 +62,6 @@ drawvec decode_geometry(const char **meta, int z, unsigned tx, unsigned ty, long
d.x = wwx;
d.y = wwy;
d.necessary = necessary;
}
out.push_back(d);
@@ -227,11 +224,11 @@ drawvec impose_tile_boundaries(const drawvec &geom, long long extent) {
if (c > 1) { // clipped
if (x1 != geom[i - 1].x || y1 != geom[i - 1].y) {
out.emplace_back(VT_LINETO, x1, y1);
out[out.size() - 1].necessary = 127;
out[out.size() - 1].necessary = 1;
}
if (x2 != geom[i - 0].x || y2 != geom[i - 0].y) {
out.emplace_back(VT_LINETO, x2, y2);
out[out.size() - 1].necessary = 127;
out[out.size() - 1].necessary = 1;
}
}
}
@@ -248,13 +245,13 @@ drawvec simplify_lines(drawvec &geom, int z, int tx, int ty, int detail, bool ma
for (size_t i = 0; i < geom.size(); i++) {
if (geom[i].op == VT_MOVETO) {
geom[i].necessary = 127;
geom[i].necessary = 1;
} else if (geom[i].op == VT_LINETO) {
geom[i].necessary = 0;
// if this is actually the endpoint, not an intermediate point,
// it will be marked as necessary below
} else {
geom[i].necessary = 127;
geom[i].necessary = 1;
}
if (prevent[P_SIMPLIFY_SHARED_NODES]) {
@@ -268,7 +265,7 @@ drawvec simplify_lines(drawvec &geom, int z, int tx, int ty, int detail, bool ma
auto pt = std::lower_bound(shared_nodes.begin(), shared_nodes.end(), geom[i]);
if (pt != shared_nodes.end() && *pt == geom[i]) {
geom[i].necessary = 127;
geom[i].necessary = true;
}
if (nodepos > 0) {
@@ -284,7 +281,7 @@ drawvec simplify_lines(drawvec &geom, int z, int tx, int ty, int detail, bool ma
n.index = encode_quadkey((unsigned) d.x, (unsigned) d.y);
if (bsearch(&n, shared_nodes_map, nodepos / sizeof(node), sizeof(node), nodecmp) != NULL) {
geom[i].necessary = 127;
geom[i].necessary = true;
}
}
}
@@ -303,8 +300,8 @@ drawvec simplify_lines(drawvec &geom, int z, int tx, int ty, int detail, bool ma
}
}
geom[i].necessary = 127;
geom[j - 1].necessary = 127;
geom[i].necessary = 1;
geom[j - 1].necessary = 1;
// empirical mapping from douglas-peucker simplifications
// to visvalingam simplifications that yield similar
+2 -6
View File
@@ -27,24 +27,20 @@ struct draw {
long long x : 40;
signed char op;
long long y : 40;
// 0: not necessary
// 127: always necessary
// other n: necessary at detail n/4
signed char necessary;
draw(int nop, long long nx, long long ny)
: x(nx),
op(nop),
y(ny),
necessary(127) {
necessary(0) {
}
draw()
: x(0),
op(0),
y(0),
necessary(127) {
necessary(0) {
}
bool operator<(draw const &s) const {
-1
View File
@@ -160,7 +160,6 @@ static void write_geometry(drawvec const &dv, std::string &out, long long wx, lo
serialize_byte(out, dv[i].op);
serialize_long_long(out, dv[i].x - wx);
serialize_long_long(out, dv[i].y - wy);
serialize_byte(out, dv[i].necessary);
wx = dv[i].x;
wy = dv[i].y;
} else {