make VectorTileLoader extendable

This commit is contained in:
Hannes Janetzek 2014-02-20 04:33:53 +01:00
parent 5c2eaf961f
commit 99cfdd6e14
2 changed files with 39 additions and 69 deletions

View File

@ -53,36 +53,36 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
static final Logger log = LoggerFactory.getLogger(VectorTileLoader.class);
private static final double STROKE_INCREASE = Math.sqrt(2.5);
private static final byte LAYERS = 11;
protected static final double STROKE_INCREASE = Math.sqrt(2.5);
protected static final byte LAYERS = 11;
public static final byte STROKE_MIN_ZOOM = 12;
public static final byte STROKE_MAX_ZOOM = 17;
private IRenderTheme renderTheme;
private int renderLevels;
protected IRenderTheme renderTheme;
protected int renderLevels;
/** current TileDataSource used by this MapTileLoader */
private ITileDataSource mTileDataSource;
protected ITileDataSource mTileDataSource;
/** currently processed tile */
private MapTile mTile;
protected MapTile mTile;
/** currently processed MapElement */
private MapElement mElement;
protected MapElement mElement;
/** current line layer (will be used for outline layers) */
private LineLayer mCurLineLayer;
protected LineLayer mCurLineLayer;
/** Current layer for adding elements */
private int mCurLayer;
protected int mCurLayer;
/** Line-scale-factor depending on zoom and latitude */
private float mLineScale = 1.0f;
protected float mLineScale = 1.0f;
private final LineClipper mClipper;
protected final LineClipper mClipper;
private final TagSet mFilteredTags;
protected final TagSet mFilteredTags;
public void setRenderTheme(IRenderTheme theme) {
renderTheme = theme;
@ -137,7 +137,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
}
}
private static int getValidLayer(int layer) {
protected static int getValidLayer(int layer) {
if (layer < 0) {
return 0;
} else if (layer >= LAYERS) {
@ -164,37 +164,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
Tag tag;
}
// Replace tags that should only be matched by key in RenderTheme
// to avoid caching RenderInstructions for each way of the same type
// only with different name.
// Maybe this should be done within RenderTheme, also allowing
// to set these replacement rules in theme file.
private static final TagReplacement[] mTagReplacement = {
new TagReplacement(Tag.KEY_NAME),
new TagReplacement(Tag.KEY_HOUSE_NUMBER),
new TagReplacement(Tag.KEY_REF),
new TagReplacement(Tag.KEY_HEIGHT),
new TagReplacement(Tag.KEY_MIN_HEIGHT)
};
private boolean filterTags(TagSet tagSet) {
Tag[] tags = tagSet.tags;
mFilteredTags.clear();
O: for (int i = 0, n = tagSet.numTags; i < n; i++) {
Tag t = tags[i];
for (TagReplacement replacement : mTagReplacement) {
if (t.key == replacement.key) {
mFilteredTags.add(replacement.tag);
continue O;
}
}
mFilteredTags.add(t);
}
protected boolean filterTags(TagSet tagSet) {
return true;
}
@ -231,7 +201,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
mElement = null;
}
//private void debugUnmatched(boolean closed, TagSet tags) {
//protected void debugUnmatched(boolean closed, TagSet tags) {
// log.debug("DBG way not matched: " + closed + " "
// + Arrays.deepToString(tags));
//
@ -243,7 +213,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
// renderWay(ri);
//}
private void renderWay(RenderStyle[] ri) {
protected void renderWay(RenderStyle[] ri) {
if (ri == null)
return;
@ -251,7 +221,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
ri[i].renderWay(this);
}
private void renderNode(RenderStyle[] ri) {
protected void renderNode(RenderStyle[] ri) {
if (ri == null)
return;
@ -259,7 +229,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
ri[i].renderNode(this);
}
private void clearState() {
protected void clearState() {
mCurLineLayer = null;
}
@ -319,7 +289,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
}
}
private final static boolean USE_MESH_POLY = false;
protected final static boolean USE_MESH_POLY = false;
@Override
public void renderArea(Area area, int level) {

View File

@ -59,36 +59,36 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
static final Logger log = LoggerFactory.getLogger(VectorTileLoader.class);
private static final double STROKE_INCREASE = Math.sqrt(2.5);
private static final byte LAYERS = 11;
protected static final double STROKE_INCREASE = Math.sqrt(2.5);
protected static final byte LAYERS = 11;
public static final byte STROKE_MIN_ZOOM = 12;
public static final byte STROKE_MAX_ZOOM = 17;
private IRenderTheme renderTheme;
private int renderLevels;
protected IRenderTheme renderTheme;
protected int renderLevels;
/** current TileDataSource used by this MapTileLoader */
private ITileDataSource mTileDataSource;
protected ITileDataSource mTileDataSource;
/** currently processed tile */
private MapTile mTile;
protected MapTile mTile;
/** currently processed MapElement */
private MapElement mElement;
protected MapElement mElement;
/** current line layer (will be used for outline layers) */
private LineLayer mCurLineLayer;
protected LineLayer mCurLineLayer;
/** Current layer for adding elements */
private int mCurLayer;
protected int mCurLayer;
/** Line-scale-factor depending on zoom and latitude */
private float mLineScale = 1.0f;
protected float mLineScale = 1.0f;
private final LineClipper mClipper;
protected final LineClipper mClipper;
private final TagSet mFilteredTags;
protected final TagSet mFilteredTags;
public void setRenderTheme(IRenderTheme theme) {
renderTheme = theme;
@ -148,7 +148,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
return (result == QueryResult.SUCCESS);
}
private static int getValidLayer(int layer) {
protected static int getValidLayer(int layer) {
if (layer < 0) {
return 0;
} else if (layer >= LAYERS) {
@ -180,7 +180,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
// only with different name.
// Maybe this should be done within RenderTheme, also allowing
// to set these replacement rules in theme file.
private static final TagReplacement[] mTagReplacement = {
protected static final TagReplacement[] mTagReplacement = {
new TagReplacement(Tag.KEY_NAME),
new TagReplacement(Tag.KEY_HOUSE_NUMBER),
new TagReplacement(Tag.KEY_REF),
@ -188,7 +188,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
new TagReplacement(Tag.KEY_MIN_HEIGHT)
};
private boolean filterTags(TagSet tagSet) {
protected boolean filterTags(TagSet tagSet) {
Tag[] tags = tagSet.tags;
mFilteredTags.clear();
@ -243,7 +243,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
mElement = null;
}
//private void debugUnmatched(boolean closed, TagSet tags) {
//protected void debugUnmatched(boolean closed, TagSet tags) {
// log.debug("DBG way not matched: " + closed + " "
// + Arrays.deepToString(tags));
//
@ -255,7 +255,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
// renderWay(ri);
//}
private void renderWay(RenderStyle[] style) {
protected void renderWay(RenderStyle[] style) {
if (style == null)
return;
@ -263,7 +263,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
style[i].renderWay(this);
}
private void renderNode(RenderStyle[] style) {
protected void renderNode(RenderStyle[] style) {
if (style == null)
return;
@ -271,7 +271,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
style[i].renderNode(this);
}
private void clearState() {
protected void clearState() {
mCurLineLayer = null;
}
@ -328,7 +328,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
// slower to load (requires tesselation) and uses
// more memory but should be faster to render
private final static boolean USE_MESH_POLY = false;
protected final static boolean USE_MESH_POLY = false;
@Override
public void renderArea(Area area, int level) {