From 07db32f39490ebf23a14e967d8b002609f3c6e60 Mon Sep 17 00:00:00 2001
From: Hannes Janetzek <hannes.janetzek@gmail.com>
Date: Sun, 11 Aug 2013 16:37:46 +0200
Subject: [PATCH] refactor: RenderLayer does not need to hold reference to
 MapView

---
 vtm-gdx/src/org/oscim/gdx/GdxMap.java                     | 4 ++--
 vtm/src/org/oscim/layers/labeling/TextRenderLayer.java    | 4 ++--
 vtm/src/org/oscim/layers/overlay/BuildingOverlay.java     | 7 ++-----
 vtm/src/org/oscim/layers/overlay/ItemizedOverlay.java     | 5 ++---
 vtm/src/org/oscim/layers/overlay/PathOverlay.java         | 5 ++---
 vtm/src/org/oscim/layers/tile/TileLayer.java              | 2 +-
 vtm/src/org/oscim/layers/tile/TileRenderLayer.java        | 4 +---
 vtm/src/org/oscim/renderer/RenderLayer.java               | 5 +----
 vtm/src/org/oscim/renderer/layers/BasicRenderLayer.java   | 4 +---
 vtm/src/org/oscim/renderer/layers/BitmapRenderLayer.java  | 5 -----
 vtm/src/org/oscim/renderer/layers/CustomRenderLayer.java  | 4 +++-
 vtm/src/org/oscim/renderer/layers/CustomRenderLayer2.java | 5 -----
 .../org/oscim/renderer/layers/ExtrusionRenderLayer.java   | 8 ++------
 vtm/src/org/oscim/renderer/layers/GridRenderLayer.java    | 4 +---
 vtm/src/org/oscim/renderer/layers/TextRenderLayer.java    | 4 ++--
 .../org/oscim/renderer/layers/test/AtlasRenderLayer.java  | 7 ++-----
 .../org/oscim/renderer/layers/test/ModelRenderLayer.java  | 5 -----
 .../org/oscim/renderer/layers/test/SymbolRenderLayer.java | 4 +---
 .../org/oscim/renderer/layers/test/TestRenderLayer.java   | 4 +---
 19 files changed, 26 insertions(+), 64 deletions(-)

diff --git a/vtm-gdx/src/org/oscim/gdx/GdxMap.java b/vtm-gdx/src/org/oscim/gdx/GdxMap.java
index 52c6ec91..026f4a71 100644
--- a/vtm-gdx/src/org/oscim/gdx/GdxMap.java
+++ b/vtm-gdx/src/org/oscim/gdx/GdxMap.java
@@ -107,7 +107,7 @@ public class GdxMap implements ApplicationListener {
 
 		if (tileGrid)
 			mMapView.getLayerManager().add(new GenericOverlay(mMapView,
-					new GridRenderLayer(mMapView)));
+					new GridRenderLayer()));
 	}
 
 	// Stage ui;
@@ -276,7 +276,7 @@ public class GdxMap implements ApplicationListener {
 
 				case Input.Keys.G:
 					if (mGridLayer == null) {
-						mGridLayer = new GenericOverlay(mMapView, new GridRenderLayer(mMapView));
+						mGridLayer = new GenericOverlay(mMapView, new GridRenderLayer());
 						mGridLayer.setEnabled(true);
 						mMapView.getLayerManager().add(mGridLayer);
 					} else {
diff --git a/vtm/src/org/oscim/layers/labeling/TextRenderLayer.java b/vtm/src/org/oscim/layers/labeling/TextRenderLayer.java
index 9f035c51..62096bd8 100644
--- a/vtm/src/org/oscim/layers/labeling/TextRenderLayer.java
+++ b/vtm/src/org/oscim/layers/labeling/TextRenderLayer.java
@@ -131,10 +131,10 @@ class TextRenderLayer extends BasicRenderLayer {
 	private float mSquareRadius;
 	private int mRelabelCnt;
 	private final TileRenderLayer mTileLayer;
+	private final MapView mMapView;
 
 	public TextRenderLayer(MapView mapView, TileRenderLayer baseLayer) {
-		super(mapView);
-
+		mMapView = mapView;
 		mMapViewPosition = mapView.getMapViewPosition();
 		mTileLayer = baseLayer;
 		mTileSet = new TileSet();
diff --git a/vtm/src/org/oscim/layers/overlay/BuildingOverlay.java b/vtm/src/org/oscim/layers/overlay/BuildingOverlay.java
index 27681677..a2092852 100644
--- a/vtm/src/org/oscim/layers/overlay/BuildingOverlay.java
+++ b/vtm/src/org/oscim/layers/overlay/BuildingOverlay.java
@@ -14,7 +14,6 @@
  */
 package org.oscim.layers.overlay;
 
-import org.oscim.backend.Log;
 import org.oscim.backend.input.MotionEvent;
 import org.oscim.core.MapPosition;
 import org.oscim.renderer.GLRenderer.Matrices;
@@ -22,19 +21,17 @@ import org.oscim.renderer.layers.ExtrusionRenderLayer;
 import org.oscim.utils.FastMath;
 import org.oscim.view.MapView;
 
-//import android.os.CountDownTimer;
-
 /**
  * @author Hannes Janetzek
  */
 public class BuildingOverlay extends Overlay {
-	private final static String TAG = BuildingOverlay.class.getName();
+	//private final static String TAG = BuildingOverlay.class.getName();
 
 	final ExtrusionRenderLayer mExtLayer;
 
 	public BuildingOverlay(MapView mapView, org.oscim.layers.tile.TileRenderLayer tileRenderLayer) {
 		super(mapView);
-		mExtLayer = new ExtrusionRenderLayer(mapView, tileRenderLayer) {
+		mExtLayer = new ExtrusionRenderLayer(tileRenderLayer) {
 			private long mStartTime;
 
 			@Override
diff --git a/vtm/src/org/oscim/layers/overlay/ItemizedOverlay.java b/vtm/src/org/oscim/layers/overlay/ItemizedOverlay.java
index 7d1be953..9eb2a762 100644
--- a/vtm/src/org/oscim/layers/overlay/ItemizedOverlay.java
+++ b/vtm/src/org/oscim/layers/overlay/ItemizedOverlay.java
@@ -77,8 +77,7 @@ public abstract class ItemizedOverlay<Item extends OverlayItem> extends Overlay
 		private final SymbolLayer mSymbolLayer;
 		private final float[] mBox = new float[8];
 
-		public ItemOverlay(MapView mapView) {
-			super(mapView);
+		public ItemOverlay() {
 			mSymbolLayer = new SymbolLayer();
 		}
 
@@ -221,7 +220,7 @@ public abstract class ItemizedOverlay<Item extends OverlayItem> extends Overlay
 
 		//this.mDefaultMarker = OverlayMarker.makeMarker(pDefaultMarker, null);
 		mDefaultMarker = defaultMarker;
-		mLayer = new ItemOverlay(mapView);
+		mLayer = new ItemOverlay();
 	}
 
 	private final PointD mMapPoint = new PointD();
diff --git a/vtm/src/org/oscim/layers/overlay/PathOverlay.java b/vtm/src/org/oscim/layers/overlay/PathOverlay.java
index ade35ddb..a2772cc8 100644
--- a/vtm/src/org/oscim/layers/overlay/PathOverlay.java
+++ b/vtm/src/org/oscim/layers/overlay/PathOverlay.java
@@ -58,8 +58,7 @@ public class PathOverlay extends Layer {
 		// limit coords
 		private final int max = 2048;
 
-		public RenderPath(MapView mapView) {
-			super(mapView);
+		public RenderPath() {
 			mClipper = new LineClipper(-max, -max, max, max, true);
 			mPPoints = new float[1];
 			layers.addLineLayer(0, mLineStyle);
@@ -242,7 +241,7 @@ public class PathOverlay extends Layer {
 
 		this.mPoints = new ArrayList<GeoPoint>();
 
-		mLayer = new RenderPath(mapView);
+		mLayer = new RenderPath();
 	}
 
 	public PathOverlay(MapView mapView, int lineColor) {
diff --git a/vtm/src/org/oscim/layers/tile/TileLayer.java b/vtm/src/org/oscim/layers/tile/TileLayer.java
index b3f1c9f9..6482d664 100644
--- a/vtm/src/org/oscim/layers/tile/TileLayer.java
+++ b/vtm/src/org/oscim/layers/tile/TileLayer.java
@@ -55,7 +55,7 @@ public abstract class TileLayer<T extends TileLoader> extends Layer {
 
 		// RenderLayer is working in GL Thread and actually
 		// drawing loaded tiles to screen.
-		mLayer = mRenderLayer = new TileRenderLayer(mapView, mTileManager);
+		mLayer = mRenderLayer = new TileRenderLayer(mTileManager);
 	}
 
 	abstract protected T createLoader(TileManager tm);
diff --git a/vtm/src/org/oscim/layers/tile/TileRenderLayer.java b/vtm/src/org/oscim/layers/tile/TileRenderLayer.java
index 61ba105a..3a33a274 100644
--- a/vtm/src/org/oscim/layers/tile/TileRenderLayer.java
+++ b/vtm/src/org/oscim/layers/tile/TileRenderLayer.java
@@ -25,7 +25,6 @@ import org.oscim.renderer.GLRenderer;
 import org.oscim.renderer.GLRenderer.Matrices;
 import org.oscim.renderer.RenderLayer;
 import org.oscim.utils.ScanBox;
-import org.oscim.view.MapView;
 
 public class TileRenderLayer extends RenderLayer {
 	private final static String TAG = TileRenderLayer.class.getName();
@@ -33,8 +32,7 @@ public class TileRenderLayer extends RenderLayer {
 	private final TileManager mTileManager;
 	private int mUploadSerial;
 
-	public TileRenderLayer(MapView mapView, TileManager tileManager) {
-		super(mapView);
+	public TileRenderLayer(TileManager tileManager) {
 		mTileManager = tileManager;
 		mUploadSerial = 0;
 	}
diff --git a/vtm/src/org/oscim/renderer/RenderLayer.java b/vtm/src/org/oscim/renderer/RenderLayer.java
index edc80530..51615689 100644
--- a/vtm/src/org/oscim/renderer/RenderLayer.java
+++ b/vtm/src/org/oscim/renderer/RenderLayer.java
@@ -14,14 +14,12 @@
  */
 package org.oscim.renderer;
 
-import org.oscim.view.MapView;
 import org.oscim.core.MapPosition;
 import org.oscim.core.Tile;
 import org.oscim.renderer.GLRenderer.Matrices;
 
 public abstract class RenderLayer {
 
-	protected final MapView mMapView;
 	/**
 	 * Use mMapPosition.copy(position) to keep the position for which
 	 * 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 */
 	public boolean isReady;
 
-	public RenderLayer(MapView mapView) {
-		mMapView = mapView;
+	public RenderLayer() {
 		mMapPosition = new MapPosition();
 	}
 
diff --git a/vtm/src/org/oscim/renderer/layers/BasicRenderLayer.java b/vtm/src/org/oscim/renderer/layers/BasicRenderLayer.java
index f8761759..37c0f0c0 100644
--- a/vtm/src/org/oscim/renderer/layers/BasicRenderLayer.java
+++ b/vtm/src/org/oscim/renderer/layers/BasicRenderLayer.java
@@ -29,7 +29,6 @@ import org.oscim.renderer.sublayers.LineTexRenderer;
 import org.oscim.renderer.sublayers.PolygonRenderer;
 import org.oscim.renderer.sublayers.TextureRenderer;
 import org.oscim.utils.FastMath;
-import org.oscim.view.MapView;
 
 /**
  * Base class to use the renderer.sublayers for drawing
@@ -38,8 +37,7 @@ public abstract class BasicRenderLayer extends RenderLayer {
 
 	public final Layers layers;
 
-	public BasicRenderLayer(MapView mapView) {
-		super(mapView);
+	public BasicRenderLayer() {
 		layers = new Layers();
 	}
 
diff --git a/vtm/src/org/oscim/renderer/layers/BitmapRenderLayer.java b/vtm/src/org/oscim/renderer/layers/BitmapRenderLayer.java
index 10e13d3f..89ac3fd9 100644
--- a/vtm/src/org/oscim/renderer/layers/BitmapRenderLayer.java
+++ b/vtm/src/org/oscim/renderer/layers/BitmapRenderLayer.java
@@ -14,7 +14,6 @@
  */
 package org.oscim.renderer.layers;
 
-import org.oscim.view.MapView;
 import org.oscim.backend.canvas.Bitmap;
 import org.oscim.core.MapPosition;
 import org.oscim.renderer.GLRenderer.Matrices;
@@ -36,10 +35,6 @@ public class BitmapRenderLayer extends BasicRenderLayer {
 	private boolean initialized;
 	private boolean mUpdateBitmap;
 
-	public BitmapRenderLayer(MapView mapView) {
-		super(mapView);
-	}
-
 	/**
 	 * @param bitmap
 	 *            with dimension being power of two
diff --git a/vtm/src/org/oscim/renderer/layers/CustomRenderLayer.java b/vtm/src/org/oscim/renderer/layers/CustomRenderLayer.java
index f36731b7..f00d18d5 100644
--- a/vtm/src/org/oscim/renderer/layers/CustomRenderLayer.java
+++ b/vtm/src/org/oscim/renderer/layers/CustomRenderLayer.java
@@ -39,6 +39,8 @@ public class CustomRenderLayer extends RenderLayer {
 
 	private static final GL20 GL = GLAdapter.get();
 
+	private final MapView mMapView;
+
 	private int mProgramObject;
 	private int hVertexPosition;
 	private int hMatrixPosition;
@@ -53,7 +55,7 @@ public class CustomRenderLayer extends RenderLayer {
 	private boolean mInitialized;
 
 	public CustomRenderLayer(MapView mapView) {
-		super(mapView);
+		mMapView = mapView;
 	}
 
 	// ---------- everything below runs in GLRender Thread ----------
diff --git a/vtm/src/org/oscim/renderer/layers/CustomRenderLayer2.java b/vtm/src/org/oscim/renderer/layers/CustomRenderLayer2.java
index 77326498..9b9ad011 100644
--- a/vtm/src/org/oscim/renderer/layers/CustomRenderLayer2.java
+++ b/vtm/src/org/oscim/renderer/layers/CustomRenderLayer2.java
@@ -27,7 +27,6 @@ import org.oscim.renderer.GLState;
 import org.oscim.renderer.RenderLayer;
 import org.oscim.utils.FastMath;
 import org.oscim.utils.GlUtils;
-import org.oscim.view.MapView;
 
 
 /*
@@ -51,10 +50,6 @@ public class CustomRenderLayer2 extends RenderLayer {
 	private boolean mInitialized;
 	private BufferObject mVBO;
 
-	public CustomRenderLayer2(MapView mapView) {
-		super(mapView);
-	}
-
 	int mZoom = -1;
 	float mCellScale = 60 * GLRenderer.COORD_SCALE;
 
diff --git a/vtm/src/org/oscim/renderer/layers/ExtrusionRenderLayer.java b/vtm/src/org/oscim/renderer/layers/ExtrusionRenderLayer.java
index 2df065ae..02c0f460 100644
--- a/vtm/src/org/oscim/renderer/layers/ExtrusionRenderLayer.java
+++ b/vtm/src/org/oscim/renderer/layers/ExtrusionRenderLayer.java
@@ -28,7 +28,6 @@ import org.oscim.renderer.GLState;
 import org.oscim.renderer.RenderLayer;
 import org.oscim.renderer.sublayers.ExtrusionLayer;
 import org.oscim.utils.GlUtils;
-import org.oscim.view.MapView;
 
 public class ExtrusionRenderLayer extends RenderLayer {
 	private final static String TAG = ExtrusionRenderLayer.class.getName();
@@ -39,9 +38,7 @@ public class ExtrusionRenderLayer extends RenderLayer {
 
 	protected float mAlpha = 1;
 
-	public ExtrusionRenderLayer(MapView mapView,
-			org.oscim.layers.tile.TileRenderLayer tileRenderLayer) {
-		super(mapView);
+	public ExtrusionRenderLayer(TileRenderLayer tileRenderLayer) {
 		mTileLayer = tileRenderLayer;
 		mTileSet = new TileSet();
 	}
@@ -92,8 +89,7 @@ public class ExtrusionRenderLayer extends RenderLayer {
 
 	@Override
 	public void update(MapPosition pos, boolean changed, Matrices matrices) {
-
-		mMapView.getMapViewPosition().getMapPosition(mMapPosition);
+		mMapPosition.copy(pos);
 
 		if (!initialized && !initShader())
 			return;
diff --git a/vtm/src/org/oscim/renderer/layers/GridRenderLayer.java b/vtm/src/org/oscim/renderer/layers/GridRenderLayer.java
index b8daee8b..1b491161 100644
--- a/vtm/src/org/oscim/renderer/layers/GridRenderLayer.java
+++ b/vtm/src/org/oscim/renderer/layers/GridRenderLayer.java
@@ -25,7 +25,6 @@ import org.oscim.renderer.sublayers.TextItem;
 import org.oscim.renderer.sublayers.TextLayer;
 import org.oscim.theme.renderinstruction.Line;
 import org.oscim.theme.renderinstruction.Text;
-import org.oscim.view.MapView;
 
 public class GridRenderLayer extends BasicRenderLayer {
 	// private final static String TILE_FORMAT = "%d/%d/%d";
@@ -38,8 +37,7 @@ public class GridRenderLayer extends BasicRenderLayer {
 
 	private int mCurX, mCurY, mCurZ;
 
-	public GridRenderLayer(MapView mapView) {
-		super(mapView);
+	public GridRenderLayer() {
 
 		int size = Tile.SIZE;
 
diff --git a/vtm/src/org/oscim/renderer/layers/TextRenderLayer.java b/vtm/src/org/oscim/renderer/layers/TextRenderLayer.java
index 8b9cb184..a35f44e8 100644
--- a/vtm/src/org/oscim/renderer/layers/TextRenderLayer.java
+++ b/vtm/src/org/oscim/renderer/layers/TextRenderLayer.java
@@ -157,10 +157,10 @@ public class TextRenderLayer extends BasicRenderLayer {
 	private float mSquareRadius;
 	private int mRelabelCnt;
 	private final TileRenderLayer mTileLayer;
+	private final MapView mMapView;
 
 	public TextRenderLayer(MapView mapView, TileRenderLayer baseLayer) {
-		super(mapView);
-
+		mMapView = mapView;
 		mMapViewPosition = mapView.getMapViewPosition();
 		mTileLayer = baseLayer;
 		mTileSet = new TileSet();
diff --git a/vtm/src/org/oscim/renderer/layers/test/AtlasRenderLayer.java b/vtm/src/org/oscim/renderer/layers/test/AtlasRenderLayer.java
index e778bd24..dff6ce75 100644
--- a/vtm/src/org/oscim/renderer/layers/test/AtlasRenderLayer.java
+++ b/vtm/src/org/oscim/renderer/layers/test/AtlasRenderLayer.java
@@ -2,7 +2,7 @@ package org.oscim.renderer.layers.test;
 
 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.Paint.Cap;
 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.Text;
 
-import org.oscim.backend.Log;
-
 public class AtlasRenderLayer extends BasicRenderLayer {
 
-	public AtlasRenderLayer(MapView mapView) {
-		super(mapView);
+	public AtlasRenderLayer() {
 
 		TextureAtlas mAtlas = TextureAtlas.create(2048, 2048, 1);
 
diff --git a/vtm/src/org/oscim/renderer/layers/test/ModelRenderLayer.java b/vtm/src/org/oscim/renderer/layers/test/ModelRenderLayer.java
index 85fefd50..401593de 100644
--- a/vtm/src/org/oscim/renderer/layers/test/ModelRenderLayer.java
+++ b/vtm/src/org/oscim/renderer/layers/test/ModelRenderLayer.java
@@ -18,13 +18,8 @@ package org.oscim.renderer.layers.test;
 import org.oscim.core.MapPosition;
 import org.oscim.renderer.GLRenderer.Matrices;
 import org.oscim.renderer.RenderLayer;
-import org.oscim.view.MapView;
 public class ModelRenderLayer extends RenderLayer{
 
-	public ModelRenderLayer(MapView mapView) {
-		super(mapView);
-	}
-
 	@Override
 	public void update(MapPosition pos, boolean changed, Matrices m) {
 	}
diff --git a/vtm/src/org/oscim/renderer/layers/test/SymbolRenderLayer.java b/vtm/src/org/oscim/renderer/layers/test/SymbolRenderLayer.java
index c1aaa6c4..60d1b705 100644
--- a/vtm/src/org/oscim/renderer/layers/test/SymbolRenderLayer.java
+++ b/vtm/src/org/oscim/renderer/layers/test/SymbolRenderLayer.java
@@ -22,13 +22,11 @@ import org.oscim.renderer.GLRenderer.Matrices;
 import org.oscim.renderer.layers.BasicRenderLayer;
 import org.oscim.renderer.sublayers.SymbolItem;
 import org.oscim.renderer.sublayers.SymbolLayer;
-import org.oscim.view.MapView;
 
 public class SymbolRenderLayer extends BasicRenderLayer {
 	boolean initialize = true;
 
-	public SymbolRenderLayer(MapView mapView) {
-		super(mapView);
+	public SymbolRenderLayer() {
 		SymbolLayer l = new SymbolLayer();
 		layers.textureLayers = l;
 
diff --git a/vtm/src/org/oscim/renderer/layers/test/TestRenderLayer.java b/vtm/src/org/oscim/renderer/layers/test/TestRenderLayer.java
index b56bbf7f..2d86be14 100644
--- a/vtm/src/org/oscim/renderer/layers/test/TestRenderLayer.java
+++ b/vtm/src/org/oscim/renderer/layers/test/TestRenderLayer.java
@@ -14,7 +14,6 @@
  */
 package org.oscim.renderer.layers.test;
 
-import org.oscim.view.MapView;
 import org.oscim.core.MapPosition;
 import org.oscim.renderer.GLRenderer.Matrices;
 import org.oscim.renderer.layers.BasicRenderLayer;
@@ -28,8 +27,7 @@ public class TestRenderLayer extends BasicRenderLayer {
 
 	private boolean first = true;
 
-	public TestRenderLayer(MapView mapView) {
-		super(mapView);
+	public TestRenderLayer() {
 
 		// draw a rectangle
 		//LineLayer ll = (LineLayer) layers.getLayer(1, Layer.LINE);