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

View File

@ -31,7 +31,7 @@ import org.oscim.map.Viewport;
import org.oscim.renderer.BufferObject; import org.oscim.renderer.BufferObject;
import org.oscim.utils.FastMath; import org.oscim.utils.FastMath;
import org.oscim.utils.ScanBox; 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.oscim.utils.quadtree.QuadTreeIndex;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -89,24 +89,24 @@ public class TileManager {
@Override @Override
public MapTile create(int x, int y, int z) { 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 = new MapTile(x, y, (byte) z);
t.item.rel = t; t.item.node = t;
return t.item; return t.item;
} }
@Override @Override
public void remove(MapTile t) { public void remove(MapTile t) {
if (t.rel == null) { if (t.node == null) {
log.debug("BUG already removed " + t); log.debug("BUG already removed " + t);
return; return;
} }
super.remove(t.rel); super.remove(t.node);
t.rel.item = null; t.node.item = null;
t.rel = null; t.node = null;
} }
}; };
@ -342,7 +342,7 @@ public class TileManager {
boolean add = false; boolean add = false;
// prefetch parent // prefetch parent
MapTile p = tile.rel.parent.item; MapTile p = tile.node.parent.item;
if (p == null) { if (p == null) {
p = mIndex.create(x >> 1, y >> 1, zoomLevel - 1); 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.renderer.elements.RenderElement;
import org.oscim.utils.FastMath; import org.oscim.utils.FastMath;
import org.oscim.utils.ScanBox; import org.oscim.utils.ScanBox;
import org.oscim.utils.quadtree.QuadTree; import org.oscim.utils.quadtree.Node;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -151,7 +151,7 @@ public class TileRenderer extends LayerRenderer {
// check near relatives than can serve as proxy // check near relatives than can serve as proxy
if ((tile.proxies & MapTile.PROXY_PARENT) != 0) { 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) if (rel.state == STATE_NEW_DATA)
uploadCnt += uploadTileData(rel); uploadCnt += uploadTileData(rel);
@ -163,7 +163,7 @@ public class TileRenderer extends LayerRenderer {
if ((tile.proxies & 1 << c) == 0) if ((tile.proxies & 1 << c) == 0)
continue; continue;
MapTile rel = tile.rel.get(i); MapTile rel = tile.node.child(i);
if (rel != null && rel.state == STATE_NEW_DATA) if (rel != null && rel.state == STATE_NEW_DATA)
uploadCnt += uploadTileData(rel); uploadCnt += uploadTileData(rel);
} }
@ -342,18 +342,18 @@ public class TileRenderer extends LayerRenderer {
long maxFade = MapRenderer.frametime - 50; long maxFade = MapRenderer.frametime - 50;
for (int c = 0; c < 4; c++) { for (int c = 0; c < 4; c++) {
MapTile ci = t.rel.get(c); MapTile ci = t.node.child(c);
if (ci == null) if (ci == null)
continue; continue;
if (ci.state == MapTile.STATE_READY || ci.fadeTime > 0) if (ci.state == MapTile.STATE_READY || ci.fadeTime > 0)
maxFade = Math.min(maxFade, ci.fadeTime); 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)) { if (p != null && (p.state == MapTile.STATE_READY || p.fadeTime > 0)) {
maxFade = Math.min(maxFade, p.fadeTime); 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)) if (p != null && (p.state == MapTile.STATE_READY || p.fadeTime > 0))
maxFade = Math.min(maxFade, p.fadeTime); maxFade = Math.min(maxFade, p.fadeTime);
} }
@ -560,7 +560,7 @@ public class TileRenderer extends LayerRenderer {
if ((tile.proxies & 1 << i) == 0) if ((tile.proxies & 1 << i) == 0)
continue; continue;
MapTile c = tile.rel.get(i); MapTile c = tile.node.child(i);
if (c.state == STATE_READY) { if (c.state == STATE_READY) {
drawTile(c, pos); drawTile(c, pos);
@ -573,7 +573,7 @@ public class TileRenderer extends LayerRenderer {
private void drawProxyTile(MapTile tile, MapPosition pos, boolean parent, private void drawProxyTile(MapTile tile, MapPosition pos, boolean parent,
boolean preferParent) { boolean preferParent) {
QuadTree<MapTile> r = tile.rel; Node<MapTile> r = tile.node;
MapTile proxy; MapTile proxy;
if (!preferParent) { if (!preferParent) {

View File

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

View File

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