TextRenderer: cleanup, use label in loop

This commit is contained in:
Hannes Janetzek 2013-09-28 22:34:14 +02:00
parent 620ce368b5
commit 0cf7364c78

View File

@ -35,10 +35,10 @@ import org.oscim.map.Viewport;
import org.oscim.renderer.ElementRenderer; import org.oscim.renderer.ElementRenderer;
import org.oscim.renderer.GLState; import org.oscim.renderer.GLState;
import org.oscim.renderer.MapRenderer.Matrices; import org.oscim.renderer.MapRenderer.Matrices;
import org.oscim.renderer.elements.RenderElement;
import org.oscim.renderer.elements.ElementLayers; import org.oscim.renderer.elements.ElementLayers;
import org.oscim.renderer.elements.LineLayer; import org.oscim.renderer.elements.LineLayer;
import org.oscim.renderer.elements.PolygonLayer; import org.oscim.renderer.elements.PolygonLayer;
import org.oscim.renderer.elements.RenderElement;
import org.oscim.renderer.elements.SymbolItem; import org.oscim.renderer.elements.SymbolItem;
import org.oscim.renderer.elements.SymbolLayer; import org.oscim.renderer.elements.SymbolLayer;
import org.oscim.renderer.elements.TextItem; import org.oscim.renderer.elements.TextItem;
@ -49,7 +49,6 @@ import org.oscim.tiling.TileRenderer;
import org.oscim.tiling.TileSet; import org.oscim.tiling.TileSet;
import org.oscim.utils.FastMath; import org.oscim.utils.FastMath;
import org.oscim.utils.OBB2D; import org.oscim.utils.OBB2D;
import org.oscim.utils.pool.LList;
import org.oscim.utils.pool.Pool; import org.oscim.utils.pool.Pool;
class TextRenderer extends ElementRenderer { class TextRenderer extends ElementRenderer {
@ -122,11 +121,6 @@ class TextRenderer extends ElementRenderer {
//private final HashMap<MapTile, LabelTile> mActiveTiles; //private final HashMap<MapTile, LabelTile> mActiveTiles;
class LabelTile {
Tile tile;
LList<Label> labels;
}
private float mSquareRadius; private float mSquareRadius;
private int mRelabelCnt; private int mRelabelCnt;
private final TileRenderer mTileLayer; private final TileRenderer mTileLayer;
@ -476,7 +470,7 @@ class TextRenderer extends ElementRenderer {
float dy = (float) (t.tileY * Tile.SIZE - tileY); float dy = (float) (t.tileY * Tile.SIZE - tileY);
dx = flipLongitude(dx, maxx); dx = flipLongitude(dx, maxx);
for (TextItem ti = t.labels; ti != null; ti = ti.next) { O: for (TextItem ti = t.labels; ti != null; ti = ti.next) {
if (!ti.text.caption) if (!ti.text.caption)
continue; continue;
@ -499,22 +493,17 @@ class TextRenderer extends ElementRenderer {
l.text.fontHeight + MIN_CAPTION_DIST, l.text.fontHeight + MIN_CAPTION_DIST,
l.text.dy); l.text.dy);
boolean overlaps = false;
for (Label lp = mLabels; lp != null;) { for (Label lp = mLabels; lp != null;) {
if (l.bbox.overlaps(lp.bbox)) { if (l.bbox.overlaps(lp.bbox)) {
if (l.text.priority < lp.text.priority) { if (l.text.priority < lp.text.priority) {
lp = removeLabel(lp); lp = removeLabel(lp);
continue; continue;
} }
continue O;
overlaps = true;
break;
} }
lp = (Label) lp.next; lp = (Label) lp.next;
} }
if (!overlaps) {
addLabel(l); addLabel(l);
l.item = TextItem.copy(ti); l.item = TextItem.copy(ti);
l.tile = t; l.tile = t;
@ -522,7 +511,6 @@ class TextRenderer extends ElementRenderer {
l = null; l = null;
} }
} }
}
for (Label ti = mLabels; ti != null; ti = (Label) ti.next) { for (Label ti = mLabels; ti != null; ti = (Label) ti.next) {
if (ti.text.caption) { if (ti.text.caption) {