refactor: rename QuadTree to Node

This commit is contained in:
Hannes Janetzek 2014-01-25 10:18:07 +01:00
parent a42bd9684f
commit 27dc7f1f2d
6 changed files with 44 additions and 44 deletions

View File

@ -148,7 +148,7 @@ public class ExtrusionRenderer extends LayerRenderer {
if (!t.hasProxy(1 << j))
continue;
MapTile c = t.rel.get(j);
MapTile c = t.node.child(j);
el = getLayer(c);
if (el == null || !el.compiled)

View File

@ -22,7 +22,7 @@ import org.oscim.renderer.elements.ElementLayers;
import org.oscim.renderer.elements.SymbolItem;
import org.oscim.renderer.elements.TextItem;
import org.oscim.utils.pool.Inlist;
import org.oscim.utils.quadtree.QuadTree;
import org.oscim.utils.quadtree.Node;
/**
* Extends Tile class to hold state and data for concurrent use in
@ -99,7 +99,7 @@ public class MapTile extends Tile {
/**
* Pointer to access relatives in QuadTree
*/
public QuadTree<MapTile> rel;
public Node<MapTile> node;
/**
* to avoid drawing a tile twice per frame
@ -162,20 +162,20 @@ public class MapTile extends Tile {
return;
// lock all tiles that could serve as proxy
MapTile p = rel.parent.item;
MapTile p = node.parent.item;
if (p != null && (p.state != 0)) {
proxies |= PROXY_PARENT;
p.refs++;
}
p = rel.parent.parent.item;
p = node.parent.parent.item;
if (p != null && (p.state != 0)) {
proxies |= PROXY_GRAMPA;
p.refs++;
}
for (int j = 0; j < 4; j++) {
if ((p = rel.get(j)) == null || p.state == 0)
if ((p = node.child(j)) == null || p.state == 0)
continue;
proxies |= (1 << j);
@ -191,14 +191,14 @@ public class MapTile extends Tile {
return;
if ((proxies & PROXY_PARENT) != 0)
rel.parent.item.refs--;
node.parent.item.refs--;
if ((proxies & PROXY_GRAMPA) != 0)
rel.parent.parent.item.refs--;
node.parent.parent.item.refs--;
for (int i = 0; i < 4; i++) {
if ((proxies & (1 << i)) != 0)
rel.get(i).refs--;
node.child(i).refs--;
}
proxies = 0;
}

View File

@ -31,7 +31,7 @@ import org.oscim.map.Viewport;
import org.oscim.renderer.BufferObject;
import org.oscim.utils.FastMath;
import org.oscim.utils.ScanBox;
import org.oscim.utils.quadtree.QuadTree;
import org.oscim.utils.quadtree.Node;
import org.oscim.utils.quadtree.QuadTreeIndex;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -89,24 +89,24 @@ public class TileManager {
@Override
public MapTile create(int x, int y, int z) {
QuadTree<MapTile> t = super.add(x, y, z);
Node<MapTile> t = super.add(x, y, z);
t.item = new MapTile(x, y, (byte) z);
t.item.rel = t;
t.item.node = t;
return t.item;
}
@Override
public void remove(MapTile t) {
if (t.rel == null) {
if (t.node == null) {
log.debug("BUG already removed " + t);
return;
}
super.remove(t.rel);
super.remove(t.node);
t.rel.item = null;
t.rel = null;
t.node.item = null;
t.node = null;
}
};
@ -342,7 +342,7 @@ public class TileManager {
boolean add = false;
// prefetch parent
MapTile p = tile.rel.parent.item;
MapTile p = tile.node.parent.item;
if (p == null) {
p = mIndex.create(x >> 1, y >> 1, zoomLevel - 1);

View File

@ -37,7 +37,7 @@ import org.oscim.renderer.elements.PolygonLayer;
import org.oscim.renderer.elements.RenderElement;
import org.oscim.utils.FastMath;
import org.oscim.utils.ScanBox;
import org.oscim.utils.quadtree.QuadTree;
import org.oscim.utils.quadtree.Node;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -151,7 +151,7 @@ public class TileRenderer extends LayerRenderer {
// check near relatives than can serve as proxy
if ((tile.proxies & MapTile.PROXY_PARENT) != 0) {
MapTile rel = tile.rel.parent.item;
MapTile rel = tile.node.parent.item;
if (rel.state == STATE_NEW_DATA)
uploadCnt += uploadTileData(rel);
@ -163,7 +163,7 @@ public class TileRenderer extends LayerRenderer {
if ((tile.proxies & 1 << c) == 0)
continue;
MapTile rel = tile.rel.get(i);
MapTile rel = tile.node.child(i);
if (rel != null && rel.state == STATE_NEW_DATA)
uploadCnt += uploadTileData(rel);
}
@ -342,18 +342,18 @@ public class TileRenderer extends LayerRenderer {
long maxFade = MapRenderer.frametime - 50;
for (int c = 0; c < 4; c++) {
MapTile ci = t.rel.get(c);
MapTile ci = t.node.child(c);
if (ci == null)
continue;
if (ci.state == MapTile.STATE_READY || ci.fadeTime > 0)
maxFade = Math.min(maxFade, ci.fadeTime);
}
MapTile p = t.rel.getParent();
MapTile p = t.node.parent();
if (p != null && (p.state == MapTile.STATE_READY || p.fadeTime > 0)) {
maxFade = Math.min(maxFade, p.fadeTime);
p = p.rel.getParent();
p = p.node.parent();
if (p != null && (p.state == MapTile.STATE_READY || p.fadeTime > 0))
maxFade = Math.min(maxFade, p.fadeTime);
}
@ -560,7 +560,7 @@ public class TileRenderer extends LayerRenderer {
if ((tile.proxies & 1 << i) == 0)
continue;
MapTile c = tile.rel.get(i);
MapTile c = tile.node.child(i);
if (c.state == STATE_READY) {
drawTile(c, pos);
@ -573,7 +573,7 @@ public class TileRenderer extends LayerRenderer {
private void drawProxyTile(MapTile tile, MapPosition pos, boolean parent,
boolean preferParent) {
QuadTree<MapTile> r = tile.rel;
Node<MapTile> r = tile.node;
MapTile proxy;
if (!preferParent) {

View File

@ -16,12 +16,12 @@
*/
package org.oscim.utils.quadtree;
public class QuadTree<T> {
public QuadTree<T> parent;
public QuadTree<T> child00;
public QuadTree<T> child10;
public QuadTree<T> child01;
public QuadTree<T> child11;
public class Node<T> {
public Node<T> parent;
public Node<T> child00;
public Node<T> child10;
public Node<T> child01;
public Node<T> child11;
public T item;
@ -31,11 +31,11 @@ public class QuadTree<T> {
// number of children and grandchildren
int refs = 0;
public T getParent() {
public T parent() {
return parent.item;
}
public T get(int i) {
public T child(int i) {
switch (i) {
case 0:
return (child00 != null) ? child00.item : null;

View File

@ -18,12 +18,12 @@ package org.oscim.utils.quadtree;
public abstract class QuadTreeIndex<T> {
QuadTree<T> pool;
Node<T> pool;
QuadTree<T> root;
Node<T> root;
public QuadTreeIndex() {
root = new QuadTree<T>();
root = new Node<T>();
root.parent = root;
}
@ -37,11 +37,11 @@ public abstract class QuadTreeIndex<T> {
public abstract void remove(T item);
public QuadTree<T> add(int x, int y, int z) {
public Node<T> add(int x, int y, int z) {
checkIndex(x, y, 1 << z);
QuadTree<T> leaf = root;
Node<T> leaf = root;
for (int level = z - 1; level >= 0; level--) {
@ -49,7 +49,7 @@ public abstract class QuadTreeIndex<T> {
leaf.refs++;
QuadTree<T> cur = null;
Node<T> cur = null;
switch (id) {
case 0:
@ -75,7 +75,7 @@ public abstract class QuadTreeIndex<T> {
cur = pool;
pool = pool.parent;
} else {
cur = new QuadTree<T>();
cur = new Node<T>();
}
cur.refs = 0;
@ -109,7 +109,7 @@ public abstract class QuadTreeIndex<T> {
checkIndex(x, y, 1 << z);
QuadTree<T> leaf = root;
Node<T> leaf = root;
for (int level = z - 1; level >= 0; level--) {
@ -140,10 +140,10 @@ public abstract class QuadTreeIndex<T> {
return null;
}
public boolean remove(QuadTree<T> item) {
public boolean remove(Node<T> item) {
QuadTree<T> cur = item;
QuadTree<T> next;
Node<T> cur = item;
Node<T> next;
while (cur != root) {
if (cur == null)