mirror of
https://github.com/felt/tippecanoe.git
synced 2026-10-05 09:55:41 +02:00
Reduce magic
This commit is contained in:
+22
-5
@@ -383,6 +383,7 @@ struct reader {
|
|||||||
long long y = 0;
|
long long y = 0;
|
||||||
int z_flag = 0;
|
int z_flag = 0;
|
||||||
int maxzoom_so_far = 0;
|
int maxzoom_so_far = 0;
|
||||||
|
bool done = false;
|
||||||
|
|
||||||
std::string data = "";
|
std::string data = "";
|
||||||
|
|
||||||
@@ -402,10 +403,6 @@ struct reader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void advance() {
|
void advance() {
|
||||||
if (zoom > maxzoom_so_far) {
|
|
||||||
maxzoom_so_far = zoom;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (db != NULL) {
|
if (db != NULL) {
|
||||||
if (sqlite3_step(stmt) == SQLITE_ROW) {
|
if (sqlite3_step(stmt) == SQLITE_ROW) {
|
||||||
zoom = sqlite3_column_int(stmt, 0);
|
zoom = sqlite3_column_int(stmt, 0);
|
||||||
@@ -418,10 +415,12 @@ struct reader {
|
|||||||
data = std::string(s, len);
|
data = std::string(s, len);
|
||||||
} else {
|
} else {
|
||||||
zoom = 32;
|
zoom = 32;
|
||||||
|
done = true;
|
||||||
}
|
}
|
||||||
} else if (pmtiles_map != NULL) {
|
} else if (pmtiles_map != NULL) {
|
||||||
if (pmtiles_entries.size() == 0) {
|
if (pmtiles_entries.size() == 0) {
|
||||||
zoom = 32;
|
zoom = 32;
|
||||||
|
done = true;
|
||||||
} else {
|
} else {
|
||||||
zoom = pmtiles_entries.back().z;
|
zoom = pmtiles_entries.back().z;
|
||||||
x = pmtiles_entries.back().x;
|
x = pmtiles_entries.back().x;
|
||||||
@@ -434,6 +433,7 @@ struct reader {
|
|||||||
} else {
|
} else {
|
||||||
if (dirtiles.size() == 0) {
|
if (dirtiles.size() == 0) {
|
||||||
zoom = 32;
|
zoom = 32;
|
||||||
|
done = true;
|
||||||
} else {
|
} else {
|
||||||
zoom = dirtiles[0].z;
|
zoom = dirtiles[0].z;
|
||||||
x = dirtiles[0].x;
|
x = dirtiles[0].x;
|
||||||
@@ -444,6 +444,10 @@ struct reader {
|
|||||||
dirtiles.erase(dirtiles.begin());
|
dirtiles.erase(dirtiles.begin());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!done && zoom > maxzoom_so_far) {
|
||||||
|
maxzoom_so_far = zoom;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string get_tile(zxy tile) {
|
std::string get_tile(zxy tile) {
|
||||||
@@ -541,6 +545,19 @@ struct reader {
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool all_done() {
|
||||||
|
if (!done) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (struct reader *r = next; r != NULL; r = r->next) {
|
||||||
|
if (!r->done) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void close() {
|
void close() {
|
||||||
if (pmtiles_map) {
|
if (pmtiles_map) {
|
||||||
db = pmtilesmeta2tmp(name.c_str(), pmtiles_map);
|
db = pmtilesmeta2tmp(name.c_str(), pmtiles_map);
|
||||||
@@ -851,7 +868,7 @@ void decode(struct reader *readers, std::map<std::string, layermap_entry> &layer
|
|||||||
double maxlon2 = INT_MIN;
|
double maxlon2 = INT_MIN;
|
||||||
int zoom_for_bbox = -1;
|
int zoom_for_bbox = -1;
|
||||||
|
|
||||||
while (readers != NULL && readers->zoom < 32) {
|
while (readers != NULL && !readers->all_done()) {
|
||||||
// pull a reader off the front of the queue,
|
// pull a reader off the front of the queue,
|
||||||
// process whatever tile it has ready to read
|
// process whatever tile it has ready to read
|
||||||
reader *r = readers;
|
reader *r = readers;
|
||||||
|
|||||||
Reference in New Issue
Block a user