From 9d078142aa4b15b0676b830f882dbdf5eb0e8432 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Tue, 10 Jun 2014 20:20:56 +0200 Subject: [PATCH] add LineLayer setExtents to not add caps outside visible region --- .../oscim/layers/tile/vector/VectorTileLoader.java | 2 ++ vtm/src/org/oscim/renderer/elements/LineLayer.java | 12 +++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/vtm/src/org/oscim/layers/tile/vector/VectorTileLoader.java b/vtm/src/org/oscim/layers/tile/vector/VectorTileLoader.java index 0ff2f34c..893ed3d4 100644 --- a/vtm/src/org/oscim/layers/tile/vector/VectorTileLoader.java +++ b/vtm/src/org/oscim/layers/tile/vector/VectorTileLoader.java @@ -23,6 +23,7 @@ import org.oscim.core.MapElement; import org.oscim.core.MercatorProjection; import org.oscim.core.Tag; import org.oscim.core.TagSet; +import org.oscim.core.Tile; import org.oscim.layers.tile.MapTile; import org.oscim.layers.tile.TileLoader; import org.oscim.layers.tile.vector.VectorTileLayer.TileLoaderProcessHook; @@ -245,6 +246,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac if (ll.line == null) { ll.line = line; ll.scale = line.fixed ? 1 : mLineScale; + ll.setExtents(-4, Tile.SIZE + 4); } if (line.outline) { diff --git a/vtm/src/org/oscim/renderer/elements/LineLayer.java b/vtm/src/org/oscim/renderer/elements/LineLayer.java index 68e0e797..25bc8f9c 100644 --- a/vtm/src/org/oscim/renderer/elements/LineLayer.java +++ b/vtm/src/org/oscim/renderer/elements/LineLayer.java @@ -24,7 +24,6 @@ import org.oscim.backend.GLAdapter; import org.oscim.backend.canvas.Paint.Cap; import org.oscim.core.GeometryBuffer; import org.oscim.core.MercatorProjection; -import org.oscim.core.Tile; import org.oscim.renderer.GLShader; import org.oscim.renderer.GLState; import org.oscim.renderer.GLUtils; @@ -73,6 +72,8 @@ public final class LineLayer extends RenderElement { public float heightOffset; + private int tmin = Integer.MIN_VALUE, tmax = Integer.MAX_VALUE; + LineLayer(int layer) { super(RenderElement.LINE); this.level = layer; @@ -87,6 +88,11 @@ public final class LineLayer extends RenderElement { outlines = link; } + public void setExtents(int min, int max) { + tmin = min; + tmax = max; + } + /** * For point reduction by minimal distance. Default is 1/8. */ @@ -108,9 +114,6 @@ public final class LineLayer extends RenderElement { addLine(points, null, numPoints, closed); } - private static int tmax = Tile.SIZE + 4; - private static int tmin = -4; - private void addLine(float[] points, short[] index, int numPoints, boolean closed) { boolean rounded = false; @@ -272,7 +275,6 @@ public final class LineLayer extends RenderElement { curX = points[ipos++]; curY = points[ipos++]; - nextX = points[ipos++]; nextY = points[ipos++];