Fade steps alpha interpolation, fix #486
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
- Improved theme styles [#479](https://github.com/mapsforge/vtm/pull/479)
|
- Improved theme styles [#479](https://github.com/mapsforge/vtm/pull/479)
|
||||||
- Map fractional zoom [#487](https://github.com/mapsforge/vtm/issues/487)
|
- Map fractional zoom [#487](https://github.com/mapsforge/vtm/issues/487)
|
||||||
- Render theme fallback internal resources [#477](https://github.com/mapsforge/vtm/issues/477)
|
- Render theme fallback internal resources [#477](https://github.com/mapsforge/vtm/issues/477)
|
||||||
|
- Fix FadeStep alpha interpolation [#486](https://github.com/mapsforge/vtm/issues/486)
|
||||||
- Fix libGDX flickering [#148](https://github.com/mapsforge/vtm/issues/148) [#149](https://github.com/mapsforge/vtm/issues/149)
|
- Fix libGDX flickering [#148](https://github.com/mapsforge/vtm/issues/148) [#149](https://github.com/mapsforge/vtm/issues/149)
|
||||||
- JTS (LocationTech) [#484](https://github.com/mapsforge/vtm/issues/484)
|
- JTS (LocationTech) [#484](https://github.com/mapsforge/vtm/issues/484)
|
||||||
- Many other minor improvements and bug fixes
|
- Many other minor improvements and bug fixes
|
||||||
|
|||||||
@@ -42,11 +42,14 @@ public class BitmapTileLayer extends TileLayer {
|
|||||||
|
|
||||||
public static class FadeStep {
|
public static class FadeStep {
|
||||||
public final double scaleStart, scaleEnd;
|
public final double scaleStart, scaleEnd;
|
||||||
|
public final double zoomStart, zoomEnd;
|
||||||
public final float alphaStart, alphaEnd;
|
public final float alphaStart, alphaEnd;
|
||||||
|
|
||||||
public FadeStep(int zoomStart, int zoomEnd, float alphaStart, float alphaEnd) {
|
public FadeStep(int zoomStart, int zoomEnd, float alphaStart, float alphaEnd) {
|
||||||
this.scaleStart = 1 << zoomStart;
|
this.scaleStart = 1 << zoomStart;
|
||||||
this.scaleEnd = 1 << zoomEnd;
|
this.scaleEnd = 1 << zoomEnd;
|
||||||
|
this.zoomStart = zoomStart;
|
||||||
|
this.zoomEnd = zoomEnd;
|
||||||
this.alphaStart = alphaStart;
|
this.alphaStart = alphaStart;
|
||||||
this.alphaEnd = alphaEnd;
|
this.alphaEnd = alphaEnd;
|
||||||
}
|
}
|
||||||
@@ -54,6 +57,8 @@ public class BitmapTileLayer extends TileLayer {
|
|||||||
public FadeStep(double scaleStart, double scaleEnd, float alphaStart, float alphaEnd) {
|
public FadeStep(double scaleStart, double scaleEnd, float alphaStart, float alphaEnd) {
|
||||||
this.scaleStart = scaleStart;
|
this.scaleStart = scaleStart;
|
||||||
this.scaleEnd = scaleEnd;
|
this.scaleEnd = scaleEnd;
|
||||||
|
this.zoomStart = Math.log(scaleStart) / Math.log(2);
|
||||||
|
this.zoomEnd = Math.log(scaleEnd) / Math.log(2);
|
||||||
this.alphaStart = alphaStart;
|
this.alphaStart = alphaStart;
|
||||||
this.alphaEnd = alphaEnd;
|
this.alphaEnd = alphaEnd;
|
||||||
}
|
}
|
||||||
@@ -110,7 +115,7 @@ public class BitmapTileLayer extends TileLayer {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
float alpha = 0f;
|
float alpha = mBitmapAlpha;
|
||||||
for (FadeStep f : fade) {
|
for (FadeStep f : fade) {
|
||||||
if (pos.scale < f.scaleStart || pos.scale > f.scaleEnd)
|
if (pos.scale < f.scaleStart || pos.scale > f.scaleEnd)
|
||||||
continue;
|
continue;
|
||||||
@@ -119,11 +124,8 @@ public class BitmapTileLayer extends TileLayer {
|
|||||||
alpha = f.alphaStart;
|
alpha = f.alphaStart;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
double range = f.scaleEnd - f.scaleStart;
|
|
||||||
float a = (float) ((pos.scale - f.scaleStart) / range);
|
|
||||||
a = FastMath.clamp(a, 0f, 1f);
|
|
||||||
// interpolate alpha between start and end
|
// interpolate alpha between start and end
|
||||||
alpha = (1 - a) * f.alphaStart + a * f.alphaEnd;
|
alpha = (float) (f.alphaStart + (pos.getZoom() - f.zoomStart) * (f.alphaEnd - f.alphaStart) / (f.zoomEnd - f.zoomStart));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user