remove poly2tri triangulator for now
This commit is contained in:
parent
124624785d
commit
5df4ac883a
@ -24,7 +24,7 @@ class GLMapTile extends MapTile {
|
||||
|
||||
LineLayers lineLayers;
|
||||
PolygonLayers polygonLayers;
|
||||
MeshLayers meshLayers;
|
||||
// MeshLayers meshLayers;
|
||||
|
||||
boolean newData;
|
||||
boolean loading;
|
||||
|
||||
@ -58,7 +58,7 @@ public class MapGenerator implements IMapGenerator, IRenderCallback, IMapDatabas
|
||||
|
||||
private LineLayers mLineLayers;
|
||||
private PolygonLayers mPolyLayers;
|
||||
private MeshLayers mMeshLayers;
|
||||
// private MeshLayers mMeshLayers;
|
||||
|
||||
private int mDrawingLayer;
|
||||
private int mLevels;
|
||||
@ -365,10 +365,10 @@ public class MapGenerator implements IMapGenerator, IRenderCallback, IMapDatabas
|
||||
|
||||
mLineLayers = new LineLayers();
|
||||
mPolyLayers = new PolygonLayers();
|
||||
mMeshLayers = new MeshLayers();
|
||||
// mMeshLayers = new MeshLayers();
|
||||
mCurrentTile.lineLayers = mLineLayers;
|
||||
mCurrentTile.polygonLayers = mPolyLayers;
|
||||
mCurrentTile.meshLayers = mMeshLayers;
|
||||
// mCurrentTile.meshLayers = mMeshLayers;
|
||||
|
||||
firstMatch = true;
|
||||
|
||||
|
||||
@ -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_STENCIL_BUFFER_BIT;
|
||||
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_STRIP;
|
||||
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 int MB = 1024 * 1024;
|
||||
|
||||
private boolean mTriangulate = false;
|
||||
// private boolean mTriangulate = false;
|
||||
|
||||
private static int CACHE_TILES_MAX = 400;
|
||||
private static int CACHE_TILES = CACHE_TILES_MAX;
|
||||
@ -693,46 +692,46 @@ public class MapRenderer implements org.mapsforge.android.IMapRenderer {
|
||||
|
||||
private int mLastBoundVBO;
|
||||
|
||||
private boolean drawTriangles(GLMapTile tile, int diff) {
|
||||
|
||||
if (tile.meshLayers == null || tile.meshLayers.array == null)
|
||||
return true;
|
||||
|
||||
glScissor(tile.sx, tile.sy, tile.sw, tile.sh);
|
||||
|
||||
if (mLastBoundVBO != tile.polygonVBO.id) {
|
||||
mLastBoundVBO = tile.polygonVBO.id;
|
||||
glBindBuffer(GL_ARRAY_BUFFER, tile.polygonVBO.id);
|
||||
|
||||
if (useHalfFloat) {
|
||||
glVertexAttribPointer(gPolygonVertexPositionHandle, 2,
|
||||
OES_HALF_FLOAT, false, 0,
|
||||
POLYGON_VERTICES_DATA_POS_OFFSET);
|
||||
} else {
|
||||
glVertexAttribPointer(gPolygonVertexPositionHandle, 2,
|
||||
GL_FLOAT, false, 0,
|
||||
POLYGON_VERTICES_DATA_POS_OFFSET);
|
||||
}
|
||||
|
||||
// glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
}
|
||||
setMatrix(tile, diff);
|
||||
glUniformMatrix4fv(gPolygonMatrixHandle, 1, false, mMVPMatrix, 0);
|
||||
|
||||
MeshLayer[] layers = tile.meshLayers.array;
|
||||
|
||||
for (int i = 0, n = layers.length; i < n; i++) {
|
||||
MeshLayer l = layers[i];
|
||||
glUniform4fv(gPolygonColorHandle, 1, l.colors, 0);
|
||||
|
||||
// glUniform4f(gPolygonColorHandle, 1, 0, 0, 1);
|
||||
|
||||
// System.out.println("draw: " + l.offset + " " + l.verticesCnt);
|
||||
glDrawArrays(GL_TRIANGLES, l.offset, l.verticesCnt);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
// private boolean drawTriangles(GLMapTile tile, int diff) {
|
||||
//
|
||||
// if (tile.meshLayers == null || tile.meshLayers.array == null)
|
||||
// return true;
|
||||
//
|
||||
// glScissor(tile.sx, tile.sy, tile.sw, tile.sh);
|
||||
//
|
||||
// if (mLastBoundVBO != tile.polygonVBO.id) {
|
||||
// mLastBoundVBO = tile.polygonVBO.id;
|
||||
// glBindBuffer(GL_ARRAY_BUFFER, tile.polygonVBO.id);
|
||||
//
|
||||
// if (useHalfFloat) {
|
||||
// glVertexAttribPointer(gPolygonVertexPositionHandle, 2,
|
||||
// OES_HALF_FLOAT, false, 0,
|
||||
// POLYGON_VERTICES_DATA_POS_OFFSET);
|
||||
// } else {
|
||||
// glVertexAttribPointer(gPolygonVertexPositionHandle, 2,
|
||||
// GL_FLOAT, false, 0,
|
||||
// POLYGON_VERTICES_DATA_POS_OFFSET);
|
||||
// }
|
||||
//
|
||||
// // glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
// }
|
||||
// setMatrix(tile, diff);
|
||||
// glUniformMatrix4fv(gPolygonMatrixHandle, 1, false, mMVPMatrix, 0);
|
||||
//
|
||||
// MeshLayer[] layers = tile.meshLayers.array;
|
||||
//
|
||||
// for (int i = 0, n = layers.length; i < n; i++) {
|
||||
// MeshLayer l = layers[i];
|
||||
// glUniform4fv(gPolygonColorHandle, 1, l.colors, 0);
|
||||
//
|
||||
// // glUniform4f(gPolygonColorHandle, 1, 0, 0, 1);
|
||||
//
|
||||
// // System.out.println("draw: " + l.offset + " " + l.verticesCnt);
|
||||
// glDrawArrays(GL_TRIANGLES, l.offset, l.verticesCnt);
|
||||
// }
|
||||
//
|
||||
// return true;
|
||||
// }
|
||||
|
||||
private boolean drawLines(GLMapTile tile, int diff) {
|
||||
float z = 1;
|
||||
@ -961,37 +960,37 @@ public class MapRenderer implements org.mapsforge.android.IMapRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
private void drawProxyTriangles(GLMapTile tile) {
|
||||
if (tile.parent != null && tile.parent.isDrawn) {
|
||||
tile.parent.sx = tile.sx;
|
||||
tile.parent.sy = tile.sy;
|
||||
tile.parent.sw = tile.sw;
|
||||
tile.parent.sh = tile.sh;
|
||||
drawTriangles(tile.parent, -1);
|
||||
} else {
|
||||
int drawn = 0;
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
GLMapTile c = tile.child[i];
|
||||
|
||||
if (c != null && c.isDrawn && setTileScissor(c, 2)) {
|
||||
drawTriangles(c, 1);
|
||||
drawn++;
|
||||
}
|
||||
}
|
||||
|
||||
if (drawn < 4 && tile.parent != null) {
|
||||
GLMapTile p = tile.parent.parent;
|
||||
if (p != null && p.isDrawn) {
|
||||
p.sx = tile.sx;
|
||||
p.sy = tile.sy;
|
||||
p.sw = tile.sw;
|
||||
p.sh = tile.sh;
|
||||
drawTriangles(p, -2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// private void drawProxyTriangles(GLMapTile tile) {
|
||||
// if (tile.parent != null && tile.parent.isDrawn) {
|
||||
// tile.parent.sx = tile.sx;
|
||||
// tile.parent.sy = tile.sy;
|
||||
// tile.parent.sw = tile.sw;
|
||||
// tile.parent.sh = tile.sh;
|
||||
// drawTriangles(tile.parent, -1);
|
||||
// } else {
|
||||
// int drawn = 0;
|
||||
//
|
||||
// for (int i = 0; i < 4; i++) {
|
||||
// GLMapTile c = tile.child[i];
|
||||
//
|
||||
// if (c != null && c.isDrawn && setTileScissor(c, 2)) {
|
||||
// drawTriangles(c, 1);
|
||||
// drawn++;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (drawn < 4 && tile.parent != null) {
|
||||
// GLMapTile p = tile.parent.parent;
|
||||
// if (p != null && p.isDrawn) {
|
||||
// p.sx = tile.sx;
|
||||
// p.sy = tile.sy;
|
||||
// p.sw = tile.sw;
|
||||
// p.sh = tile.sh;
|
||||
// drawTriangles(p, -2);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
private int uploadCnt = 0;
|
||||
|
||||
@ -1048,7 +1047,7 @@ public class MapRenderer implements org.mapsforge.android.IMapRenderer {
|
||||
tile.lineLayers = null;
|
||||
}
|
||||
|
||||
if (!mTriangulate) {
|
||||
// if (!mTriangulate) {
|
||||
if (useHalfFloat)
|
||||
shortBuffer[uploadCnt * 2 + 1] = tile.polygonLayers
|
||||
.compileLayerData(shortBuffer[uploadCnt * 2 + 1]);
|
||||
@ -1078,38 +1077,38 @@ public class MapRenderer implements org.mapsforge.android.IMapRenderer {
|
||||
} 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;
|
||||
}
|
||||
}
|
||||
// }
|
||||
// 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.isDrawn = true;
|
||||
tile.isLoading = false;
|
||||
@ -1235,7 +1234,7 @@ public class MapRenderer implements org.mapsforge.android.IMapRenderer {
|
||||
glUseProgram(gPolygonProgram);
|
||||
glEnableVertexAttribArray(gPolygonVertexPositionHandle);
|
||||
|
||||
if (!mTriangulate) {
|
||||
// if (!mTriangulate) {
|
||||
glDisable(GL_BLEND);
|
||||
// Draw Polygons
|
||||
glEnable(GL_STENCIL_TEST);
|
||||
@ -1254,20 +1253,20 @@ public class MapRenderer implements org.mapsforge.android.IMapRenderer {
|
||||
}
|
||||
// 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");
|
||||
}
|
||||
// } 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...)
|
||||
glDisableVertexAttribArray(gPolygonVertexPositionHandle);
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -19,7 +19,6 @@ import java.util.List;
|
||||
|
||||
import org.mapsforge.android.mapgenerator.IMapGenerator;
|
||||
import org.mapsforge.android.mapgenerator.MapGeneratorJob;
|
||||
import org.mapsforge.android.mapgenerator.Theme;
|
||||
import org.mapsforge.android.rendertheme.IRenderCallback;
|
||||
import org.mapsforge.android.rendertheme.RenderTheme;
|
||||
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 Paint PAINT_WATER_TILE_HIGHTLIGHT = new Paint(
|
||||
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) {
|
||||
if (layer < 0) {
|
||||
@ -65,9 +65,9 @@ public class MapGenerator implements IMapGenerator, IRenderCallback,
|
||||
private List<PointTextContainer> mNodes;
|
||||
private float mPoiX;
|
||||
private float mPoiY;
|
||||
private Theme mPreviousJobTheme;
|
||||
private float mPreviousTextScale;
|
||||
private byte mPreviousZoomLevel;
|
||||
// private Theme mPreviousJobTheme;
|
||||
// private float mPreviousTextScale;
|
||||
// private byte mPreviousZoomLevel;
|
||||
private static RenderTheme renderTheme;
|
||||
|
||||
private final List<WayTextContainer> mWayNames;
|
||||
@ -469,12 +469,12 @@ public class MapGenerator implements IMapGenerator, IRenderCallback,
|
||||
mWaySymbols.clear();
|
||||
}
|
||||
|
||||
private void createWayLists() {
|
||||
int levels = MapGenerator.renderTheme.getLevels();
|
||||
for (byte i = LAYERS - 1; i >= 0; --i) {
|
||||
mWays[i] = new LayerContainer(levels);
|
||||
}
|
||||
}
|
||||
// private void createWayLists() {
|
||||
// int levels = MapGenerator.renderTheme.getLevels();
|
||||
// for (byte i = LAYERS - 1; i >= 0; --i) {
|
||||
// mWays[i] = new LayerContainer(levels);
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* Converts a latitude value into an Y coordinate on the current tile.
|
||||
@ -504,17 +504,17 @@ public class MapGenerator implements IMapGenerator, IRenderCallback,
|
||||
- mCurrentTileX;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the scale stroke factor for the given zoom level.
|
||||
*
|
||||
* @param zoomLevel
|
||||
* the zoom level for which the scale stroke factor should be set.
|
||||
*/
|
||||
private static void setScaleStrokeWidth(byte zoomLevel) {
|
||||
int zoomLevelDiff = Math.max(zoomLevel - STROKE_MIN_ZOOM_LEVEL, 0);
|
||||
MapGenerator.renderTheme.scaleStrokeWidth((float) Math.pow(STROKE_INCREASE,
|
||||
zoomLevelDiff));
|
||||
}
|
||||
// /**
|
||||
// * Sets the scale stroke factor for the given zoom level.
|
||||
// *
|
||||
// * @param zoomLevel
|
||||
// * the zoom level for which the scale stroke factor should be set.
|
||||
// */
|
||||
// private static void setScaleStrokeWidth(byte zoomLevel) {
|
||||
// int zoomLevelDiff = Math.max(zoomLevel - STROKE_MIN_ZOOM_LEVEL, 0);
|
||||
// MapGenerator.renderTheme.scaleStrokeWidth((float) Math.pow(STROKE_INCREASE,
|
||||
// zoomLevelDiff));
|
||||
// }
|
||||
|
||||
@Override
|
||||
public IMapDatabase getMapDatabase() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user