fixup: layer -> bucket variable names

This commit is contained in:
Hannes Janetzek 2014-09-19 19:46:50 +02:00
parent b057c56466
commit b031f98fff
16 changed files with 116 additions and 135 deletions

View File

@ -266,7 +266,7 @@ public class MapTile extends Tile {
* Get the default ElementLayers which are added
* by {@link VectorTileLoader}
*/
public RenderBuckets getLayers() {
public RenderBuckets getBuckets() {
if (!(data instanceof RenderBuckets))
return null;

View File

@ -175,14 +175,14 @@ public abstract class TileRenderer extends LayerRenderer {
private static int uploadTileData(MapTile tile) {
tile.state = READY;
RenderBuckets layers = tile.getLayers();
RenderBuckets buckets = tile.getBuckets();
/* tile might only contain label layers */
if (layers == null)
if (buckets == null)
return 0;
if (!layers.compile(true)) {
layers.clear();
if (!buckets.compile(true)) {
buckets.clear();
return 0;
}

View File

@ -152,8 +152,8 @@ public class VectorTileRenderer extends TileRenderer {
/* use holder proxy when it is set */
RenderBuckets buckets = (tile.holder == null)
? tile.getLayers()
: tile.holder.getLayers();
? tile.getBuckets()
: tile.holder.getBuckets();
if (buckets == null || buckets.vbo == null)
return;

View File

@ -193,7 +193,7 @@ public class BuildingRenderer extends ExtrusionRenderer {
}
private static ExtrusionBuckets getLayer(MapTile t) {
RenderBuckets layers = t.getLayers();
RenderBuckets layers = t.getBuckets();
if (layers != null && !t.state(READY | NEW_DATA))
return null;

View File

@ -58,12 +58,12 @@ public class TestTileLayer extends TileLayer {
@Override
public boolean loadTile(MapTile tile) {
log.debug("load tile " + tile);
RenderBuckets layers = new RenderBuckets();
tile.data = layers;
RenderBuckets buckets = new RenderBuckets();
tile.data = buckets;
LineBucket ll = layers.getLineBucket(0);
ll.line = mLineStyle;
ll.scale = 2;
LineBucket lb = buckets.getLineBucket(0);
lb.line = mLineStyle;
lb.scale = 2;
int m = 20;
int s = Tile.SIZE - m * 2;
@ -77,7 +77,7 @@ public class TestTileLayer extends TileLayer {
g.addPoint(s, m);
g.addPoint(m, m);
ll.addLine(g);
lb.addLine(g);
return true;
}

View File

@ -197,7 +197,8 @@ public class VectorTileLayer extends TileLayer {
}
public void callHooksComplete(MapTile tile, boolean success) {
/* cannot use simple iterater as this function is called concurently */
/* NB: cannot use internal iterater as this function
* is called concurently by TileLoaders */
LList<TileLoaderThemeHook> th = mLoaderThemeHooks.head();
while (th != null) {

View File

@ -62,16 +62,16 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
/** currently processed MapElement */
protected MapElement mElement;
/** current line layer (will be used for outline layers) */
protected LineBucket mCurLineLayer;
/** current line bucket (will be used for outline bucket) */
protected LineBucket mCurLineBucket;
/** Current layer for adding elements */
protected int mCurLayer;
/** Current bucket for adding elements */
protected int mCurBucket;
/** Line-scale-factor depending on zoom and latitude */
protected float mLineScale = 1.0f;
protected RenderBuckets mLayers;
protected RenderBuckets mBuckets;
private final VectorTileLayer mTileLayer;
@ -109,8 +109,8 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
/* scale line width relative to latitude + PI * thumb */
mLineScale *= 0.4f + 0.6f * ((float) Math.sin(Math.abs(lat) * (Math.PI / 180)));
mLayers = new RenderBuckets();
tile.data = mLayers;
mBuckets = new RenderBuckets();
tile.data = mBuckets;
try {
/* query data source, which calls process() callback */
@ -130,8 +130,8 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
public void completed(QueryResult result) {
mTileLayer.callHooksComplete(mTile, result == QueryResult.SUCCESS);
/* finish layers - tessellate and cleanup on worker-thread */
mLayers.prepare();
/* finish buckets- tessellate and cleanup on worker-thread */
mBuckets.prepare();
super.completed(result);
@ -177,7 +177,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
if (isCanceled() || mTile.state(CANCEL))
return;
if (mTileLayer.callProcessHooks(mTile, mLayers, element))
if (mTileLayer.callProcessHooks(mTile, mBuckets, element))
return;
TagSet tags = filterTags(element.tags);
@ -190,31 +190,16 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
if (element.type == GeometryType.POINT) {
renderNode(renderTheme.matchElement(element.type, tags, mTile.zoomLevel));
} else {
mCurLayer = getValidLayer(element.layer) * renderTheme.getLevels();
mCurBucket = getValidLayer(element.layer) * renderTheme.getLevels();
renderWay(renderTheme.matchElement(element.type, tags, mTile.zoomLevel));
}
clearState();
}
// private final static LineStyle DEBUG_LINE =
// new LineStyle(Integer.MAX_VALUE / 12, Color.MAGENTA, 1.2f);
//
// private final static TextStyle DEBUG_TEXT = new TextBuilder()
// .setFontSize(12)
// .setColor(Color.RED)
// .setCaption(true)
// .setTextKey(Tag.KEY_NAME)
// .build();
protected void renderWay(RenderStyle[] style) {
if (style == null) {
// DEBUG_LINE.renderWay(this);
// String t = mElement.tags.toString();
// mElement.tags.clear();
// mElement.tags.add(new Tag(Tag.KEY_NAME, t));
// DEBUG_TEXT.renderWay(this);
if (style == null)
return;
}
for (int i = 0, n = style.length; i < n; i++)
style[i].renderWay(this);
}
@ -228,54 +213,54 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
}
protected void clearState() {
mCurLineLayer = null;
mCurLineBucket = null;
mElement = null;
}
/*** RenderThemeCallback ***/
@Override
public void renderWay(LineStyle line, int level) {
int numLayer = mCurLayer + level;
int nLevel = mCurBucket + level;
if (line.stipple == 0) {
if (line.outline && mCurLineLayer == null) {
if (line.outline && mCurLineBucket == null) {
log.debug("missing line for outline! " + mElement.tags
+ " lvl:" + level + " layer:" + mElement.layer);
return;
}
LineBucket ll = mLayers.getLineBucket(numLayer);
LineBucket lb = mBuckets.getLineBucket(nLevel);
if (ll.line == null) {
ll.line = line;
ll.scale = line.fixed ? 1 : mLineScale;
ll.setExtents(-4, Tile.SIZE + 4);
if (lb.line == null) {
lb.line = line;
lb.scale = line.fixed ? 1 : mLineScale;
lb.setExtents(-4, Tile.SIZE + 4);
}
if (line.outline) {
ll.addOutline(mCurLineLayer);
lb.addOutline(mCurLineBucket);
return;
}
ll.addLine(mElement);
lb.addLine(mElement);
/* keep reference for outline layer(s) */
mCurLineLayer = ll;
mCurLineBucket = lb;
} else {
LineTexBucket ll = mLayers.getLineTexBucket(numLayer);
LineTexBucket lb = mBuckets.getLineTexBucket(nLevel);
if (ll.line == null) {
ll.line = line;
if (lb.line == null) {
lb.line = line;
float w = line.width;
if (!line.fixed)
w *= mLineScale;
ll.width = w;
lb.width = w;
}
ll.addLine(mElement);
lb.addLine(mElement);
}
}
@ -285,26 +270,27 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
@Override
public void renderArea(AreaStyle area, int level) {
int numLayer = mCurLayer + level;
int nLevel = mCurBucket + level;
if (USE_MESH_POLY) {
MeshBucket l = mLayers.getMeshBucket(numLayer);
l.area = area;
l.addMesh(mElement);
MeshBucket mb = mBuckets.getMeshBucket(nLevel);
mb.area = area;
mb.addMesh(mElement);
} else {
PolygonBucket l = mLayers.getPolygonBucket(numLayer);
l.area = area;
l.addPolygon(mElement.points, mElement.index);
PolygonBucket pb = mBuckets.getPolygonBucket(nLevel);
pb.area = area;
pb.addPolygon(mElement.points, mElement.index);
}
}
@Override
public void renderSymbol(SymbolStyle symbol) {
mTileLayer.callThemeHooks(mTile, mLayers, mElement, symbol, 0);
mTileLayer.callThemeHooks(mTile, mBuckets, mElement, symbol, 0);
}
@Override
public void renderExtrusion(ExtrusionStyle extrusion, int level) {
mTileLayer.callThemeHooks(mTile, mLayers, mElement, extrusion, level);
mTileLayer.callThemeHooks(mTile, mBuckets, mElement, extrusion, level);
}
@Override
@ -313,6 +299,6 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
@Override
public void renderText(TextStyle text) {
mTileLayer.callThemeHooks(mTile, mLayers, mElement, text, 0);
mTileLayer.callThemeHooks(mTile, mBuckets, mElement, text, 0);
}
}

View File

@ -84,7 +84,7 @@ class TextRenderer extends BucketRenderer {
setMatrix(v, false);
for (RenderBucket l = buckets.get(); l != null;)
l = TextureBucket.Renderer.draw(buckets, l, v, scale);
l = TextureBucket.Renderer.draw(l, v, scale);
}
}

View File

@ -114,7 +114,7 @@ public abstract class BucketRenderer extends LayerRenderer {
project = false;
setMatrix(v, project);
}
b = TextureBucket.Renderer.draw(buckets, b, v, div);
b = TextureBucket.Renderer.draw(b, v, div);
break;
default:
log.error("invalid bucket {}", b.type);

View File

@ -117,7 +117,7 @@ public class GridRenderer extends BucketRenderer {
int x = (int) (v.pos.x * z);
int y = (int) (v.pos.y * z);
/* update layers when map moved by at least one tile */
/* update buckets when map moved by at least one tile */
if (x == mCurX && y == mCurY && z == mCurZ)
return;

View File

@ -192,30 +192,30 @@ public class BitmapBucket extends TextureBucket {
shader = new Shader("texture_alpha");
}
public static RenderBucket draw(RenderBucket renderElement, GLViewport v,
public static RenderBucket draw(RenderBucket b, GLViewport v,
float scale, float alpha) {
GLState.blend(true);
Shader s = shader;
s.useProgram();
TextureBucket tl = (TextureBucket) renderElement;
TextureBucket tb = (TextureBucket) b;
GL.glUniform1f(s.uAlpha, alpha);
v.mvp.setAsUniform(s.uMVP);
MapRenderer.bindQuadIndicesVBO(true);
for (TextureItem t = tl.textures; t != null; t = t.next) {
for (TextureItem t = tb.textures; t != null; t = t.next) {
t.bind();
int maxIndices = MapRenderer.maxQuads * INDICES_PER_SPRITE;
// draw up to maxVertices in each iteration
// draw up to maxVertices in each iteration */
for (int i = 0; i < t.indices; i += maxIndices) {
// to.offset * (24(shorts) * 2(short-bytes) / 6(indices) == 8)
int off = (t.offset + i) * 8 + tl.vertexOffset;
int off = (t.offset + i) * 8 + tb.vertexOffset;
GL.glVertexAttribPointer(s.aPos, 2,
GL20.GL_SHORT, false, 12, off);
@ -234,7 +234,7 @@ public class BitmapBucket extends TextureBucket {
MapRenderer.bindQuadIndicesVBO(false);
return renderElement.next;
return b.next;
}
}
}

View File

@ -565,12 +565,9 @@ public final class LineBucket extends RenderBucket {
return true;
}
public static RenderBucket draw(RenderBucket curLayer, GLViewport v,
public static RenderBucket draw(RenderBucket b, GLViewport v,
float scale, RenderBuckets buckets) {
if (curLayer == null)
return null;
/* simple line shader does not take forward shortening into
* account. only used when tilt is 0. */
int mode = v.pos.tilt < 1 ? 1 : 0;
@ -619,13 +616,12 @@ public final class LineBucket extends RenderBucket {
float heightOffset = 0;
GL.glUniform1f(uLineHeight, heightOffset);
RenderBucket l = curLayer;
for (; l != null && l.type == RenderBucket.LINE; l = l.next) {
LineBucket ll = (LineBucket) l;
LineStyle line = ll.line.current();
for (; b != null && b.type == RenderBucket.LINE; b = b.next) {
LineBucket lb = (LineBucket) b;
LineStyle line = lb.line.current();
if (ll.heightOffset != heightOffset) {
heightOffset = ll.heightOffset;
if (lb.heightOffset != heightOffset) {
heightOffset = lb.heightOffset;
GL.glUniform1f(uLineHeight, heightOffset /
MercatorProjection.groundResolution(v.pos));
@ -652,7 +648,7 @@ public final class LineBucket extends RenderBucket {
if (line.fixed) {
width = Math.max(line.width, 1) / scale;
} else {
width = ll.scale * line.width / variableScale;
width = lb.scale * line.width / variableScale;
}
GL.glUniform1f(uLineWidth,
@ -668,13 +664,13 @@ public final class LineBucket extends RenderBucket {
}
/* Cap mode */
if (ll.scale < 1.5 /* || ll.line.fixed */) {
if (lb.scale < 1.5 /* || ll.line.fixed */) {
if (capMode != CAP_THIN) {
capMode = CAP_THIN;
GL.glUniform1f(uLineMode, capMode);
}
} else if (ll.roundCap) {
} else if (lb.roundCap) {
if (capMode != CAP_ROUND) {
capMode = CAP_ROUND;
GL.glUniform1f(uLineMode, capMode);
@ -685,14 +681,14 @@ public final class LineBucket extends RenderBucket {
}
GL.glDrawArrays(GL20.GL_TRIANGLE_STRIP,
l.vertexOffset, l.numVertices);
b.vertexOffset, b.numVertices);
continue;
}
/* draw LineLayers references by this outline */
for (LineBucket ref = ll.outlines; ref != null; ref = ref.outlines) {
for (LineBucket ref = lb.outlines; ref != null; ref = ref.outlines) {
LineStyle core = ref.line.current();
// core width
@ -705,7 +701,7 @@ public final class LineBucket extends RenderBucket {
if (line.fixed) {
width += line.width / scale;
} else {
width += ll.scale * line.width / variableScale;
width += lb.scale * line.width / variableScale;
}
GL.glUniform1f(uLineWidth,
@ -736,7 +732,7 @@ public final class LineBucket extends RenderBucket {
}
}
return l;
return b;
}
}
}

View File

@ -94,10 +94,10 @@ public final class LineTexBucket extends RenderBucket {
protected boolean mRandomizeOffset = true;
LineTexBucket(int layer) {
LineTexBucket(int level) {
super(TEXLINE);
this.level = layer;
this.level = level;
this.evenSegment = true;
}
@ -300,8 +300,8 @@ public final class LineTexBucket extends RenderBucket {
private final static int STRIDE = 12;
private final static int LEN_OFFSET = 8;
public static RenderBucket draw(RenderBucket curLayer, GLViewport v,
float div, RenderBuckets layers) {
public static RenderBucket draw(RenderBucket b, GLViewport v,
float div, RenderBuckets buckets) {
//if (shader == 0)
// return curLayer.next;
@ -334,7 +334,7 @@ public final class LineTexBucket extends RenderBucket {
GL.glVertexAttribPointer(shader.aFlip, 1,
GL20.GL_BYTE, false, 0, 0);
layers.vbo.bind();
buckets.vbo.bind();
float scale = (float) v.pos.getZoomScale();
@ -342,10 +342,9 @@ public final class LineTexBucket extends RenderBucket {
//GL.glBindTexture(GL20.GL_TEXTURE_2D, mTexID[0]);
RenderBucket l = curLayer;
for (; l != null && l.type == TEXLINE; l = l.next) {
LineTexBucket ll = (LineTexBucket) l;
LineStyle line = ll.line.current();
for (; b != null && b.type == TEXLINE; b = b.next) {
LineTexBucket lb = (LineTexBucket) b;
LineStyle line = lb.line.current();
GLUtils.setColor(shader.uColor, line.stippleColor, 1);
GLUtils.setColor(shader.uBgColor, line.color, 1);
@ -361,21 +360,21 @@ public final class LineTexBucket extends RenderBucket {
//GL.glUniform1f(hScale, scale);
/* keep line width fixed */
GL.glUniform1f(shader.uWidth, ll.width / s * COORD_SCALE_BY_DIR_SCALE);
GL.glUniform1f(shader.uWidth, lb.width / s * COORD_SCALE_BY_DIR_SCALE);
/* add offset vertex */
int vOffset = -STRIDE;
// TODO interleave 1. and 2. pass to improve vertex cache usage?
/* first pass */
int allIndices = (ll.evenQuads * 6);
int allIndices = (lb.evenQuads * 6);
for (int i = 0; i < allIndices; i += maxIndices) {
int numIndices = allIndices - i;
if (numIndices > maxIndices)
numIndices = maxIndices;
/* i / 6 * (24 shorts per block * 2 short bytes) */
int add = (l.vertexOffset + i * 8) + vOffset;
int add = (b.vertexOffset + i * 8) + vOffset;
GL.glVertexAttribPointer(aPos0, 4, GL20.GL_SHORT, false, STRIDE,
add + STRIDE);
@ -394,13 +393,13 @@ public final class LineTexBucket extends RenderBucket {
}
/* second pass */
allIndices = (ll.oddQuads * 6);
allIndices = (lb.oddQuads * 6);
for (int i = 0; i < allIndices; i += maxIndices) {
int numIndices = allIndices - i;
if (numIndices > maxIndices)
numIndices = maxIndices;
/* i / 6 * (24 shorts per block * 2 short bytes) */
int add = (l.vertexOffset + i * 8) + vOffset;
int add = (b.vertexOffset + i * 8) + vOffset;
GL.glVertexAttribPointer(aPos0, 4, GL20.GL_SHORT, false, STRIDE,
add + 2 * STRIDE);
@ -428,7 +427,7 @@ public final class LineTexBucket extends RenderBucket {
//GL.glBindTexture(GL20.GL_TEXTURE_2D, 0);
return l;
return b;
}
}
}

View File

@ -317,15 +317,15 @@ public final class PolygonBucket extends RenderBucket {
static LineClipper mScreenClip = new LineClipper(-1, -1, 1, 1);
/**
* draw polygon layers (until layer.next is not polygon layer)
* draw polygon buckets (until bucket.next is not polygon bucket)
* using stencil buffer method
*
* @param renderElement
* @param buckets
* layer to draw (referencing vertices in current vbo)
* @param v
* GLViewport
* @param pos
* used to fade layers according to 'fade' in
* used to fade buckets according to 'fade' in
* layer.area style
* @param div
* scale relative to 'base scale' of the tile
@ -338,7 +338,7 @@ public final class PolygonBucket extends RenderBucket {
* @return
* next layer
*/
public static RenderBucket draw(RenderBucket renderElement, GLViewport v,
public static RenderBucket draw(RenderBucket buckets, GLViewport v,
float div, boolean first) {
GLState.test(false, true);
@ -361,12 +361,12 @@ public final class PolygonBucket extends RenderBucket {
byte stencilMask = 0;
RenderBucket l = renderElement;
for (; l != null && l.type == POLYGON; l = l.next) {
PolygonBucket pl = (PolygonBucket) l;
AreaStyle area = pl.area.current();
RenderBucket b = buckets;
for (; b != null && b.type == POLYGON; b = b.next) {
PolygonBucket pb = (PolygonBucket) b;
AreaStyle area = pb.area.current();
/* fade out polygon layers (set in RenderTheme) */
/* fade out polygon bucket (set in RenderTheme) */
if (area.fadeScale > 0 && area.fadeScale > zoom)
continue;
@ -392,7 +392,7 @@ public final class PolygonBucket extends RenderBucket {
start = cur = 0;
}
mAreaLayer[cur] = pl;
mAreaLayer[cur] = pb;
/* set stencil mask to draw to */
int stencil = 1 << cur++;
@ -406,9 +406,9 @@ public final class PolygonBucket extends RenderBucket {
GL.glStencilMask(stencilMask);
}
GL.glDrawArrays(GL_TRIANGLE_FAN, l.vertexOffset, l.numVertices);
GL.glDrawArrays(GL_TRIANGLE_FAN, b.vertexOffset, b.numVertices);
/* draw up to 7 layers into stencil buffer */
/* draw up to 7 buckets into stencil buffer */
if (cur == STENCIL_BITS - 1) {
//log.debug("fill1 {} {}", start, cur);
fillPolygons(v, start, cur, zoom, scale, div);
@ -417,7 +417,7 @@ public final class PolygonBucket extends RenderBucket {
mClear = true;
start = cur = 0;
if (l.next != null && l.next.type == POLYGON) {
if (b.next != null && b.next.type == POLYGON) {
setShader(polyShader, v.mvp, false);
stencilMask = 0;
}
@ -432,14 +432,14 @@ public final class PolygonBucket extends RenderBucket {
if (!drawn) {
/* fillPolygons would re-enable color-mask
* but it's possible that all polygon layers
* but it's possible that all polygon buckets
* were skipped */
GL.glColorMask(true, true, true, true);
GL.glStencilMask(0x00);
}
mCount = cur;
return l;
return b;
}
public static void clip(GLMatrix mvp, int clipMode) {
@ -473,7 +473,7 @@ public final class PolygonBucket extends RenderBucket {
GL.glStencilMask(0xFF);
/* Draw clip-region into depth and stencil buffer.
* This is used for tile line and polygon layers.
* This is used for tile line and polygon buckets.
*
* Together with depth test (GL_LESS) this ensures to
* only draw where no other tile has drawn yet. */

View File

@ -72,8 +72,8 @@ public abstract class RenderBucket extends Inlist<RenderBucket> {
// }
/**
* For line- and polygon-layers this is the offset
* of VERTICES in its layers.vbo.
* For line- and polygon-buckets this is the offset
* of VERTICES in its bucket.vbo.
* For all other types it is the byte offset in vbo.
* FIXME - always use byte offset?
*/

View File

@ -107,23 +107,22 @@ public abstract class TextureBucket extends RenderBucket {
pool.init(0);
}
public static RenderBucket draw(RenderBuckets layers, RenderBucket l,
GLViewport v, float scale) {
public static RenderBucket draw(RenderBucket b, GLViewport v, float scale) {
GLState.test(false, false);
GLState.blend(true);
shader.useProgram();
TextureBucket tl = (TextureBucket) l;
GL.glUniform1f(shader.uScale, tl.fixed ? 1 / scale : 1);
TextureBucket tb = (TextureBucket) b;
GL.glUniform1f(shader.uScale, tb.fixed ? 1 / scale : 1);
v.proj.setAsUniform(shader.uProj);
v.mvp.setAsUniform(shader.uMV);
MapRenderer.bindQuadIndicesVBO(true);
for (TextureItem t = tl.textures; t != null; t = t.next) {
for (TextureItem t = tb.textures; t != null; t = t.next) {
GL.glUniform2f(shader.uTexSize,
1f / (t.width * COORD_SCALE),
1f / (t.height * COORD_SCALE));
@ -134,7 +133,7 @@ public abstract class TextureBucket extends RenderBucket {
for (int i = 0; i < t.indices; i += maxIndices) {
/* to.offset * (24(shorts) * 2(short-bytes)
* / 6(indices) == 8) */
int off = (t.offset + i) * 8 + tl.vertexOffset;
int off = (t.offset + i) * 8 + tb.vertexOffset;
GL.glVertexAttribPointer(shader.aPos, 4,
GL20.GL_SHORT,
@ -156,7 +155,7 @@ public abstract class TextureBucket extends RenderBucket {
MapRenderer.bindQuadIndicesVBO(false);
return l.next;
return b.next;
}
}