remove poly2tri triangulator for now

This commit is contained in:
Hannes Janetzek 2012-08-07 03:11:45 +02:00
parent 124624785d
commit 5df4ac883a
6 changed files with 183 additions and 402 deletions

View File

@ -24,7 +24,7 @@ class GLMapTile extends MapTile {
LineLayers lineLayers; LineLayers lineLayers;
PolygonLayers polygonLayers; PolygonLayers polygonLayers;
MeshLayers meshLayers; // MeshLayers meshLayers;
boolean newData; boolean newData;
boolean loading; boolean loading;

View File

@ -58,7 +58,7 @@ public class MapGenerator implements IMapGenerator, IRenderCallback, IMapDatabas
private LineLayers mLineLayers; private LineLayers mLineLayers;
private PolygonLayers mPolyLayers; private PolygonLayers mPolyLayers;
private MeshLayers mMeshLayers; // private MeshLayers mMeshLayers;
private int mDrawingLayer; private int mDrawingLayer;
private int mLevels; private int mLevels;
@ -365,10 +365,10 @@ public class MapGenerator implements IMapGenerator, IRenderCallback, IMapDatabas
mLineLayers = new LineLayers(); mLineLayers = new LineLayers();
mPolyLayers = new PolygonLayers(); mPolyLayers = new PolygonLayers();
mMeshLayers = new MeshLayers(); // mMeshLayers = new MeshLayers();
mCurrentTile.lineLayers = mLineLayers; mCurrentTile.lineLayers = mLineLayers;
mCurrentTile.polygonLayers = mPolyLayers; mCurrentTile.polygonLayers = mPolyLayers;
mCurrentTile.meshLayers = mMeshLayers; // mCurrentTile.meshLayers = mMeshLayers;
firstMatch = true; firstMatch = true;

View File

@ -30,7 +30,6 @@ import static android.opengl.GLES20.GL_SCISSOR_TEST;
import static android.opengl.GLES20.GL_SRC_ALPHA; import static android.opengl.GLES20.GL_SRC_ALPHA;
import static android.opengl.GLES20.GL_STENCIL_BUFFER_BIT; import static android.opengl.GLES20.GL_STENCIL_BUFFER_BIT;
import static android.opengl.GLES20.GL_STENCIL_TEST; import static android.opengl.GLES20.GL_STENCIL_TEST;
import static android.opengl.GLES20.GL_TRIANGLES;
import static android.opengl.GLES20.GL_TRIANGLE_FAN; import static android.opengl.GLES20.GL_TRIANGLE_FAN;
import static android.opengl.GLES20.GL_TRIANGLE_STRIP; import static android.opengl.GLES20.GL_TRIANGLE_STRIP;
import static android.opengl.GLES20.GL_ZERO; import static android.opengl.GLES20.GL_ZERO;
@ -101,7 +100,7 @@ public class MapRenderer implements org.mapsforge.android.IMapRenderer {
private static final String TAG = "MapRenderer"; private static final String TAG = "MapRenderer";
private static final int MB = 1024 * 1024; private static final int MB = 1024 * 1024;
private boolean mTriangulate = false; // private boolean mTriangulate = false;
private static int CACHE_TILES_MAX = 400; private static int CACHE_TILES_MAX = 400;
private static int CACHE_TILES = CACHE_TILES_MAX; private static int CACHE_TILES = CACHE_TILES_MAX;
@ -693,46 +692,46 @@ public class MapRenderer implements org.mapsforge.android.IMapRenderer {
private int mLastBoundVBO; private int mLastBoundVBO;
private boolean drawTriangles(GLMapTile tile, int diff) { // private boolean drawTriangles(GLMapTile tile, int diff) {
//
if (tile.meshLayers == null || tile.meshLayers.array == null) // if (tile.meshLayers == null || tile.meshLayers.array == null)
return true; // return true;
//
glScissor(tile.sx, tile.sy, tile.sw, tile.sh); // glScissor(tile.sx, tile.sy, tile.sw, tile.sh);
//
if (mLastBoundVBO != tile.polygonVBO.id) { // if (mLastBoundVBO != tile.polygonVBO.id) {
mLastBoundVBO = tile.polygonVBO.id; // mLastBoundVBO = tile.polygonVBO.id;
glBindBuffer(GL_ARRAY_BUFFER, tile.polygonVBO.id); // glBindBuffer(GL_ARRAY_BUFFER, tile.polygonVBO.id);
//
if (useHalfFloat) { // if (useHalfFloat) {
glVertexAttribPointer(gPolygonVertexPositionHandle, 2, // glVertexAttribPointer(gPolygonVertexPositionHandle, 2,
OES_HALF_FLOAT, false, 0, // OES_HALF_FLOAT, false, 0,
POLYGON_VERTICES_DATA_POS_OFFSET); // POLYGON_VERTICES_DATA_POS_OFFSET);
} else { // } else {
glVertexAttribPointer(gPolygonVertexPositionHandle, 2, // glVertexAttribPointer(gPolygonVertexPositionHandle, 2,
GL_FLOAT, false, 0, // GL_FLOAT, false, 0,
POLYGON_VERTICES_DATA_POS_OFFSET); // POLYGON_VERTICES_DATA_POS_OFFSET);
} // }
//
// glBindBuffer(GL_ARRAY_BUFFER, 0); // // glBindBuffer(GL_ARRAY_BUFFER, 0);
} // }
setMatrix(tile, diff); // setMatrix(tile, diff);
glUniformMatrix4fv(gPolygonMatrixHandle, 1, false, mMVPMatrix, 0); // glUniformMatrix4fv(gPolygonMatrixHandle, 1, false, mMVPMatrix, 0);
//
MeshLayer[] layers = tile.meshLayers.array; // MeshLayer[] layers = tile.meshLayers.array;
//
for (int i = 0, n = layers.length; i < n; i++) { // for (int i = 0, n = layers.length; i < n; i++) {
MeshLayer l = layers[i]; // MeshLayer l = layers[i];
glUniform4fv(gPolygonColorHandle, 1, l.colors, 0); // glUniform4fv(gPolygonColorHandle, 1, l.colors, 0);
//
// glUniform4f(gPolygonColorHandle, 1, 0, 0, 1); // // glUniform4f(gPolygonColorHandle, 1, 0, 0, 1);
//
// System.out.println("draw: " + l.offset + " " + l.verticesCnt); // // System.out.println("draw: " + l.offset + " " + l.verticesCnt);
glDrawArrays(GL_TRIANGLES, l.offset, l.verticesCnt); // glDrawArrays(GL_TRIANGLES, l.offset, l.verticesCnt);
} // }
//
return true; // return true;
} // }
private boolean drawLines(GLMapTile tile, int diff) { private boolean drawLines(GLMapTile tile, int diff) {
float z = 1; float z = 1;
@ -961,37 +960,37 @@ public class MapRenderer implements org.mapsforge.android.IMapRenderer {
} }
} }
private void drawProxyTriangles(GLMapTile tile) { // private void drawProxyTriangles(GLMapTile tile) {
if (tile.parent != null && tile.parent.isDrawn) { // if (tile.parent != null && tile.parent.isDrawn) {
tile.parent.sx = tile.sx; // tile.parent.sx = tile.sx;
tile.parent.sy = tile.sy; // tile.parent.sy = tile.sy;
tile.parent.sw = tile.sw; // tile.parent.sw = tile.sw;
tile.parent.sh = tile.sh; // tile.parent.sh = tile.sh;
drawTriangles(tile.parent, -1); // drawTriangles(tile.parent, -1);
} else { // } else {
int drawn = 0; // int drawn = 0;
//
for (int i = 0; i < 4; i++) { // for (int i = 0; i < 4; i++) {
GLMapTile c = tile.child[i]; // GLMapTile c = tile.child[i];
//
if (c != null && c.isDrawn && setTileScissor(c, 2)) { // if (c != null && c.isDrawn && setTileScissor(c, 2)) {
drawTriangles(c, 1); // drawTriangles(c, 1);
drawn++; // drawn++;
} // }
} // }
//
if (drawn < 4 && tile.parent != null) { // if (drawn < 4 && tile.parent != null) {
GLMapTile p = tile.parent.parent; // GLMapTile p = tile.parent.parent;
if (p != null && p.isDrawn) { // if (p != null && p.isDrawn) {
p.sx = tile.sx; // p.sx = tile.sx;
p.sy = tile.sy; // p.sy = tile.sy;
p.sw = tile.sw; // p.sw = tile.sw;
p.sh = tile.sh; // p.sh = tile.sh;
drawTriangles(p, -2); // drawTriangles(p, -2);
} // }
} // }
} // }
} // }
private int uploadCnt = 0; private int uploadCnt = 0;
@ -1048,68 +1047,68 @@ public class MapRenderer implements org.mapsforge.android.IMapRenderer {
tile.lineLayers = null; tile.lineLayers = null;
} }
if (!mTriangulate) { // if (!mTriangulate) {
if (useHalfFloat) if (useHalfFloat)
shortBuffer[uploadCnt * 2 + 1] = tile.polygonLayers shortBuffer[uploadCnt * 2 + 1] = tile.polygonLayers
.compileLayerData(shortBuffer[uploadCnt * 2 + 1]); .compileLayerData(shortBuffer[uploadCnt * 2 + 1]);
else else
floatBuffer[uploadCnt * 2 + 1] = tile.polygonLayers floatBuffer[uploadCnt * 2 + 1] = tile.polygonLayers
.compileLayerData(floatBuffer[uploadCnt * 2 + 1]); .compileLayerData(floatBuffer[uploadCnt * 2 + 1]);
// Upload polygon data to vertex buffer object // Upload polygon data to vertex buffer object
if (tile.polygonLayers.size > 0) { if (tile.polygonLayers.size > 0) {
mBufferMemoryUsage -= tile.polygonVBO.size; mBufferMemoryUsage -= tile.polygonVBO.size;
glBindBuffer(GL_ARRAY_BUFFER, tile.polygonVBO.id); glBindBuffer(GL_ARRAY_BUFFER, tile.polygonVBO.id);
// glBufferData(GL_ARRAY_BUFFER, 0, null, // glBufferData(GL_ARRAY_BUFFER, 0, null,
// GL_DYNAMIC_DRAW); // GL_DYNAMIC_DRAW);
if (useHalfFloat) {
tile.polygonVBO.size = tile.polygonLayers.size * SHORT_BYTES;
glBufferData(GL_ARRAY_BUFFER, tile.polygonVBO.size,
shortBuffer[uploadCnt * 2 + 1], GL_DYNAMIC_DRAW);
} else {
tile.polygonVBO.size = tile.polygonLayers.size * FLOAT_BYTES;
glBufferData(GL_ARRAY_BUFFER, tile.polygonVBO.size,
floatBuffer[uploadCnt * 2 + 1], GL_DYNAMIC_DRAW);
}
mBufferMemoryUsage += tile.polygonVBO.size;
if (useHalfFloat) {
tile.polygonVBO.size = tile.polygonLayers.size * SHORT_BYTES;
glBufferData(GL_ARRAY_BUFFER, tile.polygonVBO.size,
shortBuffer[uploadCnt * 2 + 1], GL_DYNAMIC_DRAW);
} else { } else {
tile.polygonLayers = null; tile.polygonVBO.size = tile.polygonLayers.size * FLOAT_BYTES;
} glBufferData(GL_ARRAY_BUFFER, tile.polygonVBO.size,
} floatBuffer[uploadCnt * 2 + 1], GL_DYNAMIC_DRAW);
else {
if (useHalfFloat)
shortBuffer[uploadCnt * 2 + 1] = tile.meshLayers
.compileLayerData(shortBuffer[uploadCnt * 2 + 1]);
else
floatBuffer[uploadCnt * 2 + 1] = tile.meshLayers
.compileLayerData(floatBuffer[uploadCnt * 2 + 1]);
// Upload triangle data to vertex buffer object
if (tile.meshLayers.size > 0) {
mBufferMemoryUsage -= tile.polygonVBO.size;
glBindBuffer(GL_ARRAY_BUFFER, tile.polygonVBO.id);
// glBufferData(GL_ARRAY_BUFFER, 0, null,
// GL_DYNAMIC_DRAW);
if (useHalfFloat) {
tile.polygonVBO.size = tile.meshLayers.size * SHORT_BYTES;
glBufferData(GL_ARRAY_BUFFER, tile.polygonVBO.size,
shortBuffer[uploadCnt * 2 + 1], GL_DYNAMIC_DRAW);
} else {
tile.polygonVBO.size = tile.meshLayers.size * FLOAT_BYTES;
glBufferData(GL_ARRAY_BUFFER, tile.polygonVBO.size,
floatBuffer[uploadCnt * 2 + 1], GL_DYNAMIC_DRAW);
}
mBufferMemoryUsage += tile.polygonVBO.size;
} else {
tile.meshLayers = null;
} }
mBufferMemoryUsage += tile.polygonVBO.size;
} else {
tile.polygonLayers = null;
} }
// }
// else {
// if (useHalfFloat)
// shortBuffer[uploadCnt * 2 + 1] = tile.meshLayers
// .compileLayerData(shortBuffer[uploadCnt * 2 + 1]);
// else
// floatBuffer[uploadCnt * 2 + 1] = tile.meshLayers
// .compileLayerData(floatBuffer[uploadCnt * 2 + 1]);
//
// // Upload triangle data to vertex buffer object
// if (tile.meshLayers.size > 0) {
// mBufferMemoryUsage -= tile.polygonVBO.size;
//
// glBindBuffer(GL_ARRAY_BUFFER, tile.polygonVBO.id);
// // glBufferData(GL_ARRAY_BUFFER, 0, null,
// // GL_DYNAMIC_DRAW);
//
// if (useHalfFloat) {
// tile.polygonVBO.size = tile.meshLayers.size * SHORT_BYTES;
// glBufferData(GL_ARRAY_BUFFER, tile.polygonVBO.size,
// shortBuffer[uploadCnt * 2 + 1], GL_DYNAMIC_DRAW);
// } else {
// tile.polygonVBO.size = tile.meshLayers.size * FLOAT_BYTES;
// glBufferData(GL_ARRAY_BUFFER, tile.polygonVBO.size,
// floatBuffer[uploadCnt * 2 + 1], GL_DYNAMIC_DRAW);
// }
// mBufferMemoryUsage += tile.polygonVBO.size;
//
// } else {
// tile.meshLayers = null;
// }
// }
tile.newData = false; tile.newData = false;
tile.isDrawn = true; tile.isDrawn = true;
tile.isLoading = false; tile.isLoading = false;
@ -1235,39 +1234,39 @@ public class MapRenderer implements org.mapsforge.android.IMapRenderer {
glUseProgram(gPolygonProgram); glUseProgram(gPolygonProgram);
glEnableVertexAttribArray(gPolygonVertexPositionHandle); glEnableVertexAttribArray(gPolygonVertexPositionHandle);
if (!mTriangulate) { // if (!mTriangulate) {
glDisable(GL_BLEND); glDisable(GL_BLEND);
// Draw Polygons // Draw Polygons
glEnable(GL_STENCIL_TEST); glEnable(GL_STENCIL_TEST);
// glEnableVertexAttribArray(gPolygonVertexPositionHandle); // glEnableVertexAttribArray(gPolygonVertexPositionHandle);
for (int i = 0; i < tileCnt; i++) { for (int i = 0; i < tileCnt; i++) {
if (tiles[i].isVisible) { if (tiles[i].isVisible) {
GLMapTile tile = tiles[i]; GLMapTile tile = tiles[i];
if (tile.isDrawn) if (tile.isDrawn)
drawPolygons(tile, 0); drawPolygons(tile, 0);
else else
drawProxyPolygons(tile); drawProxyPolygons(tile);
}
} }
// GlUtils.checkGlError("polygons");
glDisable(GL_STENCIL_TEST);
} else {
// Draw Triangles
for (int i = 0; i < tileCnt; i++) {
if (tiles[i].isVisible) {
GLMapTile tile = tiles[i];
if (tile.isDrawn)
drawTriangles(tile, 0);
else
drawProxyTriangles(tile);
}
}
// GlUtils.checkGlError("triangles");
} }
// GlUtils.checkGlError("polygons");
glDisable(GL_STENCIL_TEST);
// } else {
// // Draw Triangles
// for (int i = 0; i < tileCnt; i++) {
// if (tiles[i].isVisible) {
// GLMapTile tile = tiles[i];
//
// if (tile.isDrawn)
// drawTriangles(tile, 0);
// else
// drawProxyTriangles(tile);
// }
// }
// // GlUtils.checkGlError("triangles");
// }
// required on GalaxyII, Android 2.3.3 (cant just VAA enable once...) // required on GalaxyII, Android 2.3.3 (cant just VAA enable once...)
glDisableVertexAttribArray(gPolygonVertexPositionHandle); glDisableVertexAttribArray(gPolygonVertexPositionHandle);

View File

@ -1,68 +0,0 @@
/*
* Copyright 2010, 2011, 2012 Hannes Janetzek
*
* This program is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.mapsforge.android.glrenderer;
import java.util.LinkedList;
import org.poly2tri.Poly2Tri;
import org.poly2tri.geometry.polygon.Polygon;
import org.poly2tri.geometry.polygon.PolygonPoint;
import org.poly2tri.triangulation.delaunay.DelaunayTriangle;
public class MeshLayer extends Layer {
MeshLayer(int l, int color) {
super(l, color);
curItem = LayerPool.get();
pool = new LinkedList<PoolItem>();
pool.add(curItem);
}
void addPolygon(float[] points, int position, int length) {
float[] curVertices = curItem.vertices;
int outPos = curItem.used;
int len = length / 2 - 1;
int pos = position;
PolygonPoint[] pp = new PolygonPoint[len];
for (int i = 0; i < len; i++) {
pp[i] = new PolygonPoint(points[pos++], points[pos++]);
}
Polygon poly = new Polygon(pp);
Poly2Tri.triangulate(poly);
for (DelaunayTriangle tri : poly.getTriangles()) {
for (int i = 0; i < 3; i++) {
if (outPos == PoolItem.SIZE) {
curVertices = getNextPoolItem();
outPos = 0;
}
curVertices[outPos++] = (float) tri.points[i].getX();
curVertices[outPos++] = (float) tri.points[i].getY();
}
}
curItem.used = outPos;
verticesCnt += poly.getTriangles().size() * 3;
}
}

View File

@ -1,150 +0,0 @@
/*
* Copyright 2010, 2011, 2012 Hannes Janetzek
*
* This program is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.mapsforge.android.glrenderer;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.nio.ShortBuffer;
import android.util.SparseArray;
public class MeshLayers {
private static final int NUM_VERTEX_FLOATS = 2;
private SparseArray<MeshLayer> layers;
MeshLayer[] array = null;
int size;
MeshLayers() {
layers = new SparseArray<MeshLayer>(10);
size = 0;
}
MeshLayer getLayer(int layer, int color) {
MeshLayer l = layers.get(layer);
if (l != null) {
return l;
}
l = new MeshLayer(layer, color);
layers.put(layer, l);
return l;
}
FloatBuffer compileLayerData(FloatBuffer buf) {
FloatBuffer fbuf = buf;
array = new MeshLayer[layers.size()];
for (int i = 0, n = layers.size(); i < n; i++) {
MeshLayer l = layers.valueAt(i);
array[i] = l;
size += l.verticesCnt;
}
size *= NUM_VERTEX_FLOATS;
if (buf == null || buf.capacity() < size) {
ByteBuffer bbuf = ByteBuffer.allocateDirect(size * 4).order(
ByteOrder.nativeOrder());
// Log.d("GLMap", "allocate buffer " + size);
fbuf = bbuf.asFloatBuffer();
} else {
fbuf.position(0);
}
int pos = 0;
for (int i = 0, n = array.length; i < n; i++) {
MeshLayer l = array[i];
for (PoolItem item : l.pool) {
fbuf.put(item.vertices, 0, item.used);
// for (int j = 0; j < item.used; j++)
// System.out.println(">" + item.vertices[j]);
}
l.offset = pos;
pos += l.verticesCnt;
LayerPool.add(l.pool);
l.pool = null;
}
fbuf.position(0);
// for (int i = 0; i < size; i++)
// System.out.println("<" + fbuf.get());
// fbuf.position(0);
// System.out.println("....... mesh layer size: " + size + " " + array.length);
// not needed for drawing
layers = null;
return fbuf;
}
ShortBuffer compileLayerData(ShortBuffer buf) {
ShortBuffer sbuf = buf;
array = new MeshLayer[layers.size()];
for (int i = 0, n = layers.size(); i < n; i++) {
MeshLayer l = layers.valueAt(i);
array[i] = l;
size += l.verticesCnt;
}
size *= NUM_VERTEX_FLOATS;
if (buf == null || buf.capacity() < size) {
ByteBuffer bbuf = ByteBuffer.allocateDirect(size * 2).order(
ByteOrder.nativeOrder());
sbuf = bbuf.asShortBuffer();
} else {
sbuf.position(0);
}
short[] data = new short[PoolItem.SIZE];
int pos = 0;
for (int i = 0, n = array.length; i < n; i++) {
MeshLayer l = array[i];
for (int k = 0, m = l.pool.size(); k < m; k++) {
PoolItem item = l.pool.get(k);
PoolItem.toHalfFloat(item, data);
sbuf.put(data, 0, item.used);
}
l.offset = pos;
pos += l.verticesCnt;
LayerPool.add(l.pool);
l.pool = null;
}
// System.out.println("....... mesh layer size: " + size + " " + array.length);
sbuf.position(0);
// not needed for drawing
layers = null;
return sbuf;
}
}

View File

@ -19,7 +19,6 @@ import java.util.List;
import org.mapsforge.android.mapgenerator.IMapGenerator; import org.mapsforge.android.mapgenerator.IMapGenerator;
import org.mapsforge.android.mapgenerator.MapGeneratorJob; import org.mapsforge.android.mapgenerator.MapGeneratorJob;
import org.mapsforge.android.mapgenerator.Theme;
import org.mapsforge.android.rendertheme.IRenderCallback; import org.mapsforge.android.rendertheme.IRenderCallback;
import org.mapsforge.android.rendertheme.RenderTheme; import org.mapsforge.android.rendertheme.RenderTheme;
import org.mapsforge.android.rendertheme.renderinstruction.Area; import org.mapsforge.android.rendertheme.renderinstruction.Area;
@ -44,8 +43,9 @@ public class MapGenerator implements IMapGenerator, IRenderCallback,
private static final byte LAYERS = 11; private static final byte LAYERS = 11;
private static final Paint PAINT_WATER_TILE_HIGHTLIGHT = new Paint( private static final Paint PAINT_WATER_TILE_HIGHTLIGHT = new Paint(
Paint.ANTI_ALIAS_FLAG); Paint.ANTI_ALIAS_FLAG);
private static final double STROKE_INCREASE = 1.5;
private static final byte STROKE_MIN_ZOOM_LEVEL = 12; // private static final double STROKE_INCREASE = 1.5;
// private static final byte STROKE_MIN_ZOOM_LEVEL = 12;
private static byte getValidLayer(byte layer) { private static byte getValidLayer(byte layer) {
if (layer < 0) { if (layer < 0) {
@ -65,9 +65,9 @@ public class MapGenerator implements IMapGenerator, IRenderCallback,
private List<PointTextContainer> mNodes; private List<PointTextContainer> mNodes;
private float mPoiX; private float mPoiX;
private float mPoiY; private float mPoiY;
private Theme mPreviousJobTheme; // private Theme mPreviousJobTheme;
private float mPreviousTextScale; // private float mPreviousTextScale;
private byte mPreviousZoomLevel; // private byte mPreviousZoomLevel;
private static RenderTheme renderTheme; private static RenderTheme renderTheme;
private final List<WayTextContainer> mWayNames; private final List<WayTextContainer> mWayNames;
@ -469,12 +469,12 @@ public class MapGenerator implements IMapGenerator, IRenderCallback,
mWaySymbols.clear(); mWaySymbols.clear();
} }
private void createWayLists() { // private void createWayLists() {
int levels = MapGenerator.renderTheme.getLevels(); // int levels = MapGenerator.renderTheme.getLevels();
for (byte i = LAYERS - 1; i >= 0; --i) { // for (byte i = LAYERS - 1; i >= 0; --i) {
mWays[i] = new LayerContainer(levels); // mWays[i] = new LayerContainer(levels);
} // }
} // }
/** /**
* Converts a latitude value into an Y coordinate on the current tile. * Converts a latitude value into an Y coordinate on the current tile.
@ -504,17 +504,17 @@ public class MapGenerator implements IMapGenerator, IRenderCallback,
- mCurrentTileX; - mCurrentTileX;
} }
/** // /**
* Sets the scale stroke factor for the given zoom level. // * Sets the scale stroke factor for the given zoom level.
* // *
* @param zoomLevel // * @param zoomLevel
* the zoom level for which the scale stroke factor should be set. // * the zoom level for which the scale stroke factor should be set.
*/ // */
private static void setScaleStrokeWidth(byte zoomLevel) { // private static void setScaleStrokeWidth(byte zoomLevel) {
int zoomLevelDiff = Math.max(zoomLevel - STROKE_MIN_ZOOM_LEVEL, 0); // int zoomLevelDiff = Math.max(zoomLevel - STROKE_MIN_ZOOM_LEVEL, 0);
MapGenerator.renderTheme.scaleStrokeWidth((float) Math.pow(STROKE_INCREASE, // MapGenerator.renderTheme.scaleStrokeWidth((float) Math.pow(STROKE_INCREASE,
zoomLevelDiff)); // zoomLevelDiff));
} // }
@Override @Override
public IMapDatabase getMapDatabase() { public IMapDatabase getMapDatabase() {