normalizedZoom() == zoom level of the visual appearance

This commit is contained in:
Konstantin Käfer
2014-03-24 14:44:44 +01:00
parent 31912731d4
commit 5c613b5455
4 changed files with 13 additions and 8 deletions

View File

@@ -37,6 +37,7 @@ public:
// Getters
void matrixFor(mat4& matrix, const Tile::ID& id) const;
float getZoom() const;
float getNormalizedZoom() const;
int32_t getIntegerZoom() const;
double getScale() const;
double getAngle() const;

View File

@@ -46,7 +46,7 @@ void Map::loadSettings() {
transform.setAngle(settings.angle);
transform.setScale(settings.scale);
transform.setLonLat(settings.longitude, settings.latitude);
style.cascade(transform.getZoom());
style.cascade(transform.getNormalizedZoom());
update();
}
@@ -87,7 +87,7 @@ void Map::stopPanning() {
void Map::scaleBy(double ds, double cx, double cy, double duration) {
transform.scaleBy(ds, cx, cy, duration);
style.cascade(transform.getZoom());
style.cascade(transform.getNormalizedZoom());
update();
transform.getLonLat(settings.longitude, settings.latitude);
@@ -137,7 +137,7 @@ void Map::getLonLat(double& lon, double& lat) const {
void Map::setLonLatZoom(double lon, double lat, double zoom, double duration) {
transform.setLonLatZoom(lon, lat, zoom, duration);
style.cascade(transform.getZoom());
style.cascade(transform.getNormalizedZoom());
update();
transform.getLonLat(settings.longitude, settings.latitude);
@@ -151,7 +151,7 @@ void Map::getLonLatZoom(double& lon, double& lat, double& zoom) const {
void Map::setScale(double scale, double cx, double cy, double duration) {
transform.setScale(scale, cx, cy, duration);
style.cascade(transform.getZoom());
style.cascade(transform.getNormalizedZoom());
update();
transform.getLonLat(settings.longitude, settings.latitude);
@@ -161,7 +161,7 @@ void Map::setScale(double scale, double cx, double cy, double duration) {
void Map::setZoom(double zoom, double duration) {
transform.setZoom(zoom, duration);
style.cascade(transform.getZoom());
style.cascade(transform.getNormalizedZoom());
update();
transform.getLonLat(settings.longitude, settings.latitude);
@@ -215,7 +215,7 @@ void Map::resetPosition() {
transform.setAngle(0);
transform.setLonLat(0, 0);
transform.setZoom(0);
style.cascade(transform.getZoom());
style.cascade(transform.getNormalizedZoom());
update();
transform.getLonLat(settings.longitude, settings.latitude);

View File

@@ -256,6 +256,10 @@ float Transform::getZoom() const {
return log(scale) / M_LN2;
}
float Transform::getNormalizedZoom() const {
return log(scale * util::tileSize / 256.0f) / M_LN2;
}
int32_t Transform::getIntegerZoom() const {
return floor(log(scale) / M_LN2);
}

View File

@@ -153,7 +153,7 @@ void Painter::render(const Tile& tile) {
return;
}
frameHistory.record(transform.getZoom());
frameHistory.record(transform.getNormalizedZoom());
matrix = tile.matrix;
glStencilFunc(GL_EQUAL, tile.clip_id, 0xFF);
@@ -534,7 +534,7 @@ void Painter::renderText(TextBucket& bucket, const std::string& layer_name, cons
textShader->setAngle((int32_t)(angle + 256) % 256);
textShader->setFlip(bucket.geom_desc.path == TextPathType::Curve ? 1 : 0);
textShader->setZoom((transform.getZoom() - zoomAdjust) * 10); // current zoom level
textShader->setZoom((transform.getNormalizedZoom() - zoomAdjust) * 10); // current zoom level
// Label fading
const float duration = 300.0f;