refactor: RenderLayer does not need to hold reference to MapView

This commit is contained in:
Hannes Janetzek 2013-08-11 16:37:46 +02:00
parent 9f5a89b610
commit 07db32f394
19 changed files with 26 additions and 64 deletions

View File

@ -107,7 +107,7 @@ public class GdxMap implements ApplicationListener {
if (tileGrid) if (tileGrid)
mMapView.getLayerManager().add(new GenericOverlay(mMapView, mMapView.getLayerManager().add(new GenericOverlay(mMapView,
new GridRenderLayer(mMapView))); new GridRenderLayer()));
} }
// Stage ui; // Stage ui;
@ -276,7 +276,7 @@ public class GdxMap implements ApplicationListener {
case Input.Keys.G: case Input.Keys.G:
if (mGridLayer == null) { if (mGridLayer == null) {
mGridLayer = new GenericOverlay(mMapView, new GridRenderLayer(mMapView)); mGridLayer = new GenericOverlay(mMapView, new GridRenderLayer());
mGridLayer.setEnabled(true); mGridLayer.setEnabled(true);
mMapView.getLayerManager().add(mGridLayer); mMapView.getLayerManager().add(mGridLayer);
} else { } else {

View File

@ -131,10 +131,10 @@ class TextRenderLayer extends BasicRenderLayer {
private float mSquareRadius; private float mSquareRadius;
private int mRelabelCnt; private int mRelabelCnt;
private final TileRenderLayer mTileLayer; private final TileRenderLayer mTileLayer;
private final MapView mMapView;
public TextRenderLayer(MapView mapView, TileRenderLayer baseLayer) { public TextRenderLayer(MapView mapView, TileRenderLayer baseLayer) {
super(mapView); mMapView = mapView;
mMapViewPosition = mapView.getMapViewPosition(); mMapViewPosition = mapView.getMapViewPosition();
mTileLayer = baseLayer; mTileLayer = baseLayer;
mTileSet = new TileSet(); mTileSet = new TileSet();

View File

@ -14,7 +14,6 @@
*/ */
package org.oscim.layers.overlay; package org.oscim.layers.overlay;
import org.oscim.backend.Log;
import org.oscim.backend.input.MotionEvent; import org.oscim.backend.input.MotionEvent;
import org.oscim.core.MapPosition; import org.oscim.core.MapPosition;
import org.oscim.renderer.GLRenderer.Matrices; import org.oscim.renderer.GLRenderer.Matrices;
@ -22,19 +21,17 @@ import org.oscim.renderer.layers.ExtrusionRenderLayer;
import org.oscim.utils.FastMath; import org.oscim.utils.FastMath;
import org.oscim.view.MapView; import org.oscim.view.MapView;
//import android.os.CountDownTimer;
/** /**
* @author Hannes Janetzek * @author Hannes Janetzek
*/ */
public class BuildingOverlay extends Overlay { public class BuildingOverlay extends Overlay {
private final static String TAG = BuildingOverlay.class.getName(); //private final static String TAG = BuildingOverlay.class.getName();
final ExtrusionRenderLayer mExtLayer; final ExtrusionRenderLayer mExtLayer;
public BuildingOverlay(MapView mapView, org.oscim.layers.tile.TileRenderLayer tileRenderLayer) { public BuildingOverlay(MapView mapView, org.oscim.layers.tile.TileRenderLayer tileRenderLayer) {
super(mapView); super(mapView);
mExtLayer = new ExtrusionRenderLayer(mapView, tileRenderLayer) { mExtLayer = new ExtrusionRenderLayer(tileRenderLayer) {
private long mStartTime; private long mStartTime;
@Override @Override

View File

@ -77,8 +77,7 @@ public abstract class ItemizedOverlay<Item extends OverlayItem> extends Overlay
private final SymbolLayer mSymbolLayer; private final SymbolLayer mSymbolLayer;
private final float[] mBox = new float[8]; private final float[] mBox = new float[8];
public ItemOverlay(MapView mapView) { public ItemOverlay() {
super(mapView);
mSymbolLayer = new SymbolLayer(); mSymbolLayer = new SymbolLayer();
} }
@ -221,7 +220,7 @@ public abstract class ItemizedOverlay<Item extends OverlayItem> extends Overlay
//this.mDefaultMarker = OverlayMarker.makeMarker(pDefaultMarker, null); //this.mDefaultMarker = OverlayMarker.makeMarker(pDefaultMarker, null);
mDefaultMarker = defaultMarker; mDefaultMarker = defaultMarker;
mLayer = new ItemOverlay(mapView); mLayer = new ItemOverlay();
} }
private final PointD mMapPoint = new PointD(); private final PointD mMapPoint = new PointD();

View File

@ -58,8 +58,7 @@ public class PathOverlay extends Layer {
// limit coords // limit coords
private final int max = 2048; private final int max = 2048;
public RenderPath(MapView mapView) { public RenderPath() {
super(mapView);
mClipper = new LineClipper(-max, -max, max, max, true); mClipper = new LineClipper(-max, -max, max, max, true);
mPPoints = new float[1]; mPPoints = new float[1];
layers.addLineLayer(0, mLineStyle); layers.addLineLayer(0, mLineStyle);
@ -242,7 +241,7 @@ public class PathOverlay extends Layer {
this.mPoints = new ArrayList<GeoPoint>(); this.mPoints = new ArrayList<GeoPoint>();
mLayer = new RenderPath(mapView); mLayer = new RenderPath();
} }
public PathOverlay(MapView mapView, int lineColor) { public PathOverlay(MapView mapView, int lineColor) {

View File

@ -55,7 +55,7 @@ public abstract class TileLayer<T extends TileLoader> extends Layer {
// RenderLayer is working in GL Thread and actually // RenderLayer is working in GL Thread and actually
// drawing loaded tiles to screen. // drawing loaded tiles to screen.
mLayer = mRenderLayer = new TileRenderLayer(mapView, mTileManager); mLayer = mRenderLayer = new TileRenderLayer(mTileManager);
} }
abstract protected T createLoader(TileManager tm); abstract protected T createLoader(TileManager tm);

View File

@ -25,7 +25,6 @@ import org.oscim.renderer.GLRenderer;
import org.oscim.renderer.GLRenderer.Matrices; import org.oscim.renderer.GLRenderer.Matrices;
import org.oscim.renderer.RenderLayer; import org.oscim.renderer.RenderLayer;
import org.oscim.utils.ScanBox; import org.oscim.utils.ScanBox;
import org.oscim.view.MapView;
public class TileRenderLayer extends RenderLayer { public class TileRenderLayer extends RenderLayer {
private final static String TAG = TileRenderLayer.class.getName(); private final static String TAG = TileRenderLayer.class.getName();
@ -33,8 +32,7 @@ public class TileRenderLayer extends RenderLayer {
private final TileManager mTileManager; private final TileManager mTileManager;
private int mUploadSerial; private int mUploadSerial;
public TileRenderLayer(MapView mapView, TileManager tileManager) { public TileRenderLayer(TileManager tileManager) {
super(mapView);
mTileManager = tileManager; mTileManager = tileManager;
mUploadSerial = 0; mUploadSerial = 0;
} }

View File

@ -14,14 +14,12 @@
*/ */
package org.oscim.renderer; package org.oscim.renderer;
import org.oscim.view.MapView;
import org.oscim.core.MapPosition; import org.oscim.core.MapPosition;
import org.oscim.core.Tile; import org.oscim.core.Tile;
import org.oscim.renderer.GLRenderer.Matrices; import org.oscim.renderer.GLRenderer.Matrices;
public abstract class RenderLayer { public abstract class RenderLayer {
protected final MapView mMapView;
/** /**
* Use mMapPosition.copy(position) to keep the position for which * Use mMapPosition.copy(position) to keep the position for which
* the Overlay is _compiled_. NOTE: required by setMatrix utility * the Overlay is _compiled_. NOTE: required by setMatrix utility
@ -35,8 +33,7 @@ public abstract class RenderLayer {
/** flag to set when layer is ready for rendering */ /** flag to set when layer is ready for rendering */
public boolean isReady; public boolean isReady;
public RenderLayer(MapView mapView) { public RenderLayer() {
mMapView = mapView;
mMapPosition = new MapPosition(); mMapPosition = new MapPosition();
} }

View File

@ -29,7 +29,6 @@ import org.oscim.renderer.sublayers.LineTexRenderer;
import org.oscim.renderer.sublayers.PolygonRenderer; import org.oscim.renderer.sublayers.PolygonRenderer;
import org.oscim.renderer.sublayers.TextureRenderer; import org.oscim.renderer.sublayers.TextureRenderer;
import org.oscim.utils.FastMath; import org.oscim.utils.FastMath;
import org.oscim.view.MapView;
/** /**
* Base class to use the renderer.sublayers for drawing * Base class to use the renderer.sublayers for drawing
@ -38,8 +37,7 @@ public abstract class BasicRenderLayer extends RenderLayer {
public final Layers layers; public final Layers layers;
public BasicRenderLayer(MapView mapView) { public BasicRenderLayer() {
super(mapView);
layers = new Layers(); layers = new Layers();
} }

View File

@ -14,7 +14,6 @@
*/ */
package org.oscim.renderer.layers; package org.oscim.renderer.layers;
import org.oscim.view.MapView;
import org.oscim.backend.canvas.Bitmap; import org.oscim.backend.canvas.Bitmap;
import org.oscim.core.MapPosition; import org.oscim.core.MapPosition;
import org.oscim.renderer.GLRenderer.Matrices; import org.oscim.renderer.GLRenderer.Matrices;
@ -36,10 +35,6 @@ public class BitmapRenderLayer extends BasicRenderLayer {
private boolean initialized; private boolean initialized;
private boolean mUpdateBitmap; private boolean mUpdateBitmap;
public BitmapRenderLayer(MapView mapView) {
super(mapView);
}
/** /**
* @param bitmap * @param bitmap
* with dimension being power of two * with dimension being power of two

View File

@ -39,6 +39,8 @@ public class CustomRenderLayer extends RenderLayer {
private static final GL20 GL = GLAdapter.get(); private static final GL20 GL = GLAdapter.get();
private final MapView mMapView;
private int mProgramObject; private int mProgramObject;
private int hVertexPosition; private int hVertexPosition;
private int hMatrixPosition; private int hMatrixPosition;
@ -53,7 +55,7 @@ public class CustomRenderLayer extends RenderLayer {
private boolean mInitialized; private boolean mInitialized;
public CustomRenderLayer(MapView mapView) { public CustomRenderLayer(MapView mapView) {
super(mapView); mMapView = mapView;
} }
// ---------- everything below runs in GLRender Thread ---------- // ---------- everything below runs in GLRender Thread ----------

View File

@ -27,7 +27,6 @@ import org.oscim.renderer.GLState;
import org.oscim.renderer.RenderLayer; import org.oscim.renderer.RenderLayer;
import org.oscim.utils.FastMath; import org.oscim.utils.FastMath;
import org.oscim.utils.GlUtils; import org.oscim.utils.GlUtils;
import org.oscim.view.MapView;
/* /*
@ -51,10 +50,6 @@ public class CustomRenderLayer2 extends RenderLayer {
private boolean mInitialized; private boolean mInitialized;
private BufferObject mVBO; private BufferObject mVBO;
public CustomRenderLayer2(MapView mapView) {
super(mapView);
}
int mZoom = -1; int mZoom = -1;
float mCellScale = 60 * GLRenderer.COORD_SCALE; float mCellScale = 60 * GLRenderer.COORD_SCALE;

View File

@ -28,7 +28,6 @@ import org.oscim.renderer.GLState;
import org.oscim.renderer.RenderLayer; import org.oscim.renderer.RenderLayer;
import org.oscim.renderer.sublayers.ExtrusionLayer; import org.oscim.renderer.sublayers.ExtrusionLayer;
import org.oscim.utils.GlUtils; import org.oscim.utils.GlUtils;
import org.oscim.view.MapView;
public class ExtrusionRenderLayer extends RenderLayer { public class ExtrusionRenderLayer extends RenderLayer {
private final static String TAG = ExtrusionRenderLayer.class.getName(); private final static String TAG = ExtrusionRenderLayer.class.getName();
@ -39,9 +38,7 @@ public class ExtrusionRenderLayer extends RenderLayer {
protected float mAlpha = 1; protected float mAlpha = 1;
public ExtrusionRenderLayer(MapView mapView, public ExtrusionRenderLayer(TileRenderLayer tileRenderLayer) {
org.oscim.layers.tile.TileRenderLayer tileRenderLayer) {
super(mapView);
mTileLayer = tileRenderLayer; mTileLayer = tileRenderLayer;
mTileSet = new TileSet(); mTileSet = new TileSet();
} }
@ -92,8 +89,7 @@ public class ExtrusionRenderLayer extends RenderLayer {
@Override @Override
public void update(MapPosition pos, boolean changed, Matrices matrices) { public void update(MapPosition pos, boolean changed, Matrices matrices) {
mMapPosition.copy(pos);
mMapView.getMapViewPosition().getMapPosition(mMapPosition);
if (!initialized && !initShader()) if (!initialized && !initShader())
return; return;

View File

@ -25,7 +25,6 @@ import org.oscim.renderer.sublayers.TextItem;
import org.oscim.renderer.sublayers.TextLayer; import org.oscim.renderer.sublayers.TextLayer;
import org.oscim.theme.renderinstruction.Line; import org.oscim.theme.renderinstruction.Line;
import org.oscim.theme.renderinstruction.Text; import org.oscim.theme.renderinstruction.Text;
import org.oscim.view.MapView;
public class GridRenderLayer extends BasicRenderLayer { public class GridRenderLayer extends BasicRenderLayer {
// private final static String TILE_FORMAT = "%d/%d/%d"; // private final static String TILE_FORMAT = "%d/%d/%d";
@ -38,8 +37,7 @@ public class GridRenderLayer extends BasicRenderLayer {
private int mCurX, mCurY, mCurZ; private int mCurX, mCurY, mCurZ;
public GridRenderLayer(MapView mapView) { public GridRenderLayer() {
super(mapView);
int size = Tile.SIZE; int size = Tile.SIZE;

View File

@ -157,10 +157,10 @@ public class TextRenderLayer extends BasicRenderLayer {
private float mSquareRadius; private float mSquareRadius;
private int mRelabelCnt; private int mRelabelCnt;
private final TileRenderLayer mTileLayer; private final TileRenderLayer mTileLayer;
private final MapView mMapView;
public TextRenderLayer(MapView mapView, TileRenderLayer baseLayer) { public TextRenderLayer(MapView mapView, TileRenderLayer baseLayer) {
super(mapView); mMapView = mapView;
mMapViewPosition = mapView.getMapViewPosition(); mMapViewPosition = mapView.getMapViewPosition();
mTileLayer = baseLayer; mTileLayer = baseLayer;
mTileSet = new TileSet(); mTileSet = new TileSet();

View File

@ -2,7 +2,7 @@ package org.oscim.renderer.layers.test;
import java.util.Arrays; import java.util.Arrays;
import org.oscim.view.MapView; import org.oscim.backend.Log;
import org.oscim.backend.canvas.Color; import org.oscim.backend.canvas.Color;
import org.oscim.backend.canvas.Paint.Cap; import org.oscim.backend.canvas.Paint.Cap;
import org.oscim.core.MapPosition; import org.oscim.core.MapPosition;
@ -17,12 +17,9 @@ import org.oscim.renderer.sublayers.TextLayer;
import org.oscim.theme.renderinstruction.Line; import org.oscim.theme.renderinstruction.Line;
import org.oscim.theme.renderinstruction.Text; import org.oscim.theme.renderinstruction.Text;
import org.oscim.backend.Log;
public class AtlasRenderLayer extends BasicRenderLayer { public class AtlasRenderLayer extends BasicRenderLayer {
public AtlasRenderLayer(MapView mapView) { public AtlasRenderLayer() {
super(mapView);
TextureAtlas mAtlas = TextureAtlas.create(2048, 2048, 1); TextureAtlas mAtlas = TextureAtlas.create(2048, 2048, 1);

View File

@ -18,13 +18,8 @@ package org.oscim.renderer.layers.test;
import org.oscim.core.MapPosition; import org.oscim.core.MapPosition;
import org.oscim.renderer.GLRenderer.Matrices; import org.oscim.renderer.GLRenderer.Matrices;
import org.oscim.renderer.RenderLayer; import org.oscim.renderer.RenderLayer;
import org.oscim.view.MapView;
public class ModelRenderLayer extends RenderLayer{ public class ModelRenderLayer extends RenderLayer{
public ModelRenderLayer(MapView mapView) {
super(mapView);
}
@Override @Override
public void update(MapPosition pos, boolean changed, Matrices m) { public void update(MapPosition pos, boolean changed, Matrices m) {
} }

View File

@ -22,13 +22,11 @@ import org.oscim.renderer.GLRenderer.Matrices;
import org.oscim.renderer.layers.BasicRenderLayer; import org.oscim.renderer.layers.BasicRenderLayer;
import org.oscim.renderer.sublayers.SymbolItem; import org.oscim.renderer.sublayers.SymbolItem;
import org.oscim.renderer.sublayers.SymbolLayer; import org.oscim.renderer.sublayers.SymbolLayer;
import org.oscim.view.MapView;
public class SymbolRenderLayer extends BasicRenderLayer { public class SymbolRenderLayer extends BasicRenderLayer {
boolean initialize = true; boolean initialize = true;
public SymbolRenderLayer(MapView mapView) { public SymbolRenderLayer() {
super(mapView);
SymbolLayer l = new SymbolLayer(); SymbolLayer l = new SymbolLayer();
layers.textureLayers = l; layers.textureLayers = l;

View File

@ -14,7 +14,6 @@
*/ */
package org.oscim.renderer.layers.test; package org.oscim.renderer.layers.test;
import org.oscim.view.MapView;
import org.oscim.core.MapPosition; import org.oscim.core.MapPosition;
import org.oscim.renderer.GLRenderer.Matrices; import org.oscim.renderer.GLRenderer.Matrices;
import org.oscim.renderer.layers.BasicRenderLayer; import org.oscim.renderer.layers.BasicRenderLayer;
@ -28,8 +27,7 @@ public class TestRenderLayer extends BasicRenderLayer {
private boolean first = true; private boolean first = true;
public TestRenderLayer(MapView mapView) { public TestRenderLayer() {
super(mapView);
// draw a rectangle // draw a rectangle
//LineLayer ll = (LineLayer) layers.getLayer(1, Layer.LINE); //LineLayer ll = (LineLayer) layers.getLayer(1, Layer.LINE);