Merge pull request from Gustl22/buildinglayer_rendertheme

Fix Rendertheme set after creation of BuildingLayer
This commit is contained in:
Emux 2019-02-26 17:39:15 +02:00 committed by GitHub
commit 6af46cf8cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -33,7 +33,6 @@ import org.oscim.renderer.OffscreenRenderer.Mode;
import org.oscim.renderer.bucket.ExtrusionBuckets; import org.oscim.renderer.bucket.ExtrusionBuckets;
import org.oscim.renderer.bucket.RenderBuckets; import org.oscim.renderer.bucket.RenderBuckets;
import org.oscim.renderer.light.ShadowRenderer; import org.oscim.renderer.light.ShadowRenderer;
import org.oscim.theme.IRenderTheme;
import org.oscim.theme.styles.ExtrusionStyle; import org.oscim.theme.styles.ExtrusionStyle;
import org.oscim.theme.styles.RenderStyle; import org.oscim.theme.styles.RenderStyle;
import org.oscim.utils.geom.GeometryUtils; import org.oscim.utils.geom.GeometryUtils;
@ -77,7 +76,7 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim
private final ZoomLimiter mZoomLimiter; private final ZoomLimiter mZoomLimiter;
protected final IRenderTheme mRenderTheme; protected final VectorTileLayer mTileLayer;
class BuildingElement { class BuildingElement {
MapElement element; MapElement element;
@ -108,7 +107,8 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim
public BuildingLayer(Map map, VectorTileLayer tileLayer, int zoomMin, int zoomMax, boolean mesh, boolean shadow) { public BuildingLayer(Map map, VectorTileLayer tileLayer, int zoomMin, int zoomMax, boolean mesh, boolean shadow) {
super(map); super(map);
tileLayer.addHook(this); mTileLayer = tileLayer;
mTileLayer.addHook(this);
// Use zoomMin as zoomLimit to render buildings only once // Use zoomMin as zoomLimit to render buildings only once
mZoomLimiter = new ZoomLimiter(tileLayer.getManager(), zoomMin, zoomMax, zoomMin); mZoomLimiter = new ZoomLimiter(tileLayer.getManager(), zoomMin, zoomMax, zoomMin);
@ -119,8 +119,6 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim
mRenderer = new ShadowRenderer(mExtrusionRenderer); mRenderer = new ShadowRenderer(mExtrusionRenderer);
else if (POST_AA) else if (POST_AA)
mRenderer = new OffscreenRenderer(Mode.SSAO_FXAA, mRenderer); mRenderer = new OffscreenRenderer(Mode.SSAO_FXAA, mRenderer);
mRenderTheme = tileLayer.getTheme();
} }
@Override @Override
@ -182,7 +180,7 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim
int height = 0; // cm int height = 0; // cm
int minHeight = 0; // cm int minHeight = 0; // cm
Float f = element.getHeight(mRenderTheme); Float f = element.getHeight(mTileLayer.getTheme());
if (f != null) if (f != null)
height = (int) (f * 100); height = (int) (f * 100);
else { else {
@ -192,7 +190,7 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim
height = (int) (Float.parseFloat(v) * BUILDING_LEVEL_HEIGHT); height = (int) (Float.parseFloat(v) * BUILDING_LEVEL_HEIGHT);
} }
f = element.getMinHeight(mRenderTheme); f = element.getMinHeight(mTileLayer.getTheme());
if (f != null) if (f != null)
minHeight = (int) (f * 100); minHeight = (int) (f * 100);
else { else {
@ -273,9 +271,9 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim
} }
protected String getKeyOrDefault(String key) { protected String getKeyOrDefault(String key) {
if (mRenderTheme == null) if (mTileLayer.getTheme() == null)
return key; return key;
String res = mRenderTheme.transformKey(key); String res = mTileLayer.getTheme().transformKey(key);
return res != null ? res : key; return res != null ? res : key;
} }