let TileLoaderHook stop further processing

- return false when no other loader hook should process
  the current element
This commit is contained in:
Hannes Janetzek 2014-03-10 03:37:27 +01:00
parent c234507edb
commit 402e4c3cd6
4 changed files with 19 additions and 13 deletions

View File

@ -91,11 +91,11 @@ public class BuildingLayer extends Layer implements TileLoaderHook {
private final static int MIN_ZOOM = 17; private final static int MIN_ZOOM = 17;
@Override @Override
public void render(MapTile tile, ElementLayers layers, MapElement element, public boolean render(MapTile tile, ElementLayers layers, MapElement element,
RenderStyle style, int level) { RenderStyle style, int level) {
if (!(style instanceof ExtrusionStyle)) if (!(style instanceof ExtrusionStyle))
return; return false;
ExtrusionStyle extrusion = (ExtrusionStyle) style; ExtrusionStyle extrusion = (ExtrusionStyle) style;
@ -125,6 +125,8 @@ public class BuildingLayer extends Layer implements TileLoaderHook {
height = 12 * 100; height = 12 * 100;
l.add(element, height, minHeight); l.add(element, height, minHeight);
return true;
} }
//@Override //@Override

View File

@ -124,7 +124,7 @@ public class VectorTileLayer extends TileLayer {
} }
public interface TileLoaderHook { public interface TileLoaderHook {
public void render(MapTile tile, ElementLayers layers, public boolean render(MapTile tile, ElementLayers layers,
MapElement element, RenderStyle style, int level); MapElement element, RenderStyle style, int level);
} }
@ -137,8 +137,8 @@ public class VectorTileLayer extends TileLayer {
public void addHook(TileLoaderHook h) { public void addHook(TileLoaderHook h) {
int length = mLoaderHooks.length; int length = mLoaderHooks.length;
TileLoaderHook[] tmp = new TileLoaderHook[length + 1]; TileLoaderHook[] tmp = new TileLoaderHook[length + 1];
System.arraycopy(mLoaderHooks, 0, tmp, 1, length); System.arraycopy(mLoaderHooks, 0, tmp, 0, length);
tmp[0] = h; tmp[length] = h;
mLoaderHooks = tmp; mLoaderHooks = tmp;
} }

View File

@ -294,12 +294,14 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
public void renderSymbol(SymbolStyle symbol) { public void renderSymbol(SymbolStyle symbol) {
for (TileLoaderHook h : mTileLayer.getLoaderHooks()) for (TileLoaderHook h : mTileLayer.getLoaderHooks())
h.render(mTile, mLayers, mElement, symbol, 0); if (h.render(mTile, mLayers, mElement, symbol, 0))
break;
} }
public void renderExtrusion(ExtrusionStyle extrusion, int level) { public void renderExtrusion(ExtrusionStyle extrusion, int level) {
for (TileLoaderHook h : mTileLayer.getLoaderHooks()) for (TileLoaderHook h : mTileLayer.getLoaderHooks())
h.render(mTile, mLayers, mElement, extrusion, level); if (h.render(mTile, mLayers, mElement, extrusion, level))
break;
} }
@Override @Override
@ -309,6 +311,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
@Override @Override
public void renderText(TextStyle text) { public void renderText(TextStyle text) {
for (TileLoaderHook h : mTileLayer.getLoaderHooks()) for (TileLoaderHook h : mTileLayer.getLoaderHooks())
h.render(mTile, mLayers, mElement, text, 0); if (h.render(mTile, mLayers, mElement, text, 0))
break;
} }
} }

View File

@ -31,7 +31,7 @@ public class LabelTileLoaderHook implements TileLoaderHook {
} }
@Override @Override
public void render(MapTile tile, ElementLayers layers, MapElement element, public boolean render(MapTile tile, ElementLayers layers, MapElement element,
RenderStyle style, int level) { RenderStyle style, int level) {
if (style instanceof TextStyle) { if (style instanceof TextStyle) {
@ -41,7 +41,7 @@ public class LabelTileLoaderHook implements TileLoaderHook {
if (element.type == LINE) { if (element.type == LINE) {
String value = element.tags.getValue(text.textKey); String value = element.tags.getValue(text.textKey);
if (value == null || value.length() == 0) if (value == null || value.length() == 0)
return; return false;
int offset = 0; int offset = 0;
for (int i = 0, n = element.index.length; i < n; i++) { for (int i = 0, n = element.index.length; i < n; i++) {
@ -58,7 +58,7 @@ public class LabelTileLoaderHook implements TileLoaderHook {
// TODO place somewhere on polygon // TODO place somewhere on polygon
String value = element.tags.getValue(text.textKey); String value = element.tags.getValue(text.textKey);
if (value == null || value.length() == 0) if (value == null || value.length() == 0)
return; return false;
float x = 0; float x = 0;
float y = 0; float y = 0;
@ -76,7 +76,7 @@ public class LabelTileLoaderHook implements TileLoaderHook {
else if (element.type == POINT) { else if (element.type == POINT) {
String value = element.tags.getValue(text.textKey); String value = element.tags.getValue(text.textKey);
if (value == null || value.length() == 0) if (value == null || value.length() == 0)
return; return false;
for (int i = 0, n = element.getNumPoints(); i < n; i++) { for (int i = 0, n = element.getNumPoints(); i < n; i++) {
PointF p = element.getPoint(i); PointF p = element.getPoint(i);
@ -88,7 +88,7 @@ public class LabelTileLoaderHook implements TileLoaderHook {
SymbolStyle symbol = (SymbolStyle) style; SymbolStyle symbol = (SymbolStyle) style;
if (symbol.texture == null) if (symbol.texture == null)
return; return false;
LabelTileData ld = get(tile); LabelTileData ld = get(tile);
@ -100,6 +100,7 @@ public class LabelTileLoaderHook implements TileLoaderHook {
ld.symbols.push(it); ld.symbols.push(it);
} }
} }
return false;
} }
} }