From ea711aea77b241d46f75995d8b8b2c4badb681bd Mon Sep 17 00:00:00 2001
From: Hannes Janetzek <hannes.janetzek@gmail.com>
Date: Thu, 20 Mar 2014 15:15:23 +0100
Subject: [PATCH] move example renderer to playground

---
 .../oscim/renderer/test/AtlasRenderLayer.java | 143 ------------
 .../oscim/renderer/test/BezierPathLayer.java  |  72 ------
 .../oscim/renderer/test/CustomRenderer.java   | 163 --------------
 .../oscim/renderer/test/CustomRenderer2.java  | 207 ------------------
 .../renderer/test/SymbolRenderLayer.java      |  52 -----
 5 files changed, 637 deletions(-)
 delete mode 100644 vtm/src/org/oscim/renderer/test/AtlasRenderLayer.java
 delete mode 100644 vtm/src/org/oscim/renderer/test/BezierPathLayer.java
 delete mode 100644 vtm/src/org/oscim/renderer/test/CustomRenderer.java
 delete mode 100644 vtm/src/org/oscim/renderer/test/CustomRenderer2.java
 delete mode 100644 vtm/src/org/oscim/renderer/test/SymbolRenderLayer.java

diff --git a/vtm/src/org/oscim/renderer/test/AtlasRenderLayer.java b/vtm/src/org/oscim/renderer/test/AtlasRenderLayer.java
deleted file mode 100644
index efb10ee0..00000000
--- a/vtm/src/org/oscim/renderer/test/AtlasRenderLayer.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright 2013 Hannes Janetzek
- * 
- * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
- * 
- * This program is free software: you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with
- * this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package org.oscim.renderer.test;
-
-import java.util.Arrays;
-
-import org.oscim.backend.canvas.Color;
-import org.oscim.backend.canvas.Paint.Cap;
-import org.oscim.renderer.ElementRenderer;
-import org.oscim.renderer.GLViewport;
-import org.oscim.renderer.atlas.TextureAtlas;
-import org.oscim.renderer.atlas.TextureAtlas.Rect;
-import org.oscim.renderer.atlas.TextureAtlas.Slot;
-import org.oscim.renderer.elements.LineLayer;
-import org.oscim.renderer.elements.TextItem;
-import org.oscim.renderer.elements.TextLayer;
-import org.oscim.theme.styles.LineStyle;
-import org.oscim.theme.styles.TextStyle;
-import org.oscim.theme.styles.TextStyle.TextBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class AtlasRenderLayer extends ElementRenderer {
-
-	Logger log = LoggerFactory.getLogger(AtlasRenderLayer.class);
-
-	public AtlasRenderLayer() {
-
-		TextureAtlas mAtlas = TextureAtlas.create(2048, 2048, 1);
-
-		LineLayer ll = layers.getLineLayer(0);
-		ll.line = new LineStyle(Color.BLUE, 3, Cap.BUTT);
-		ll.scale = 1f;
-
-		LineLayer ll2 = layers.getLineLayer(1);
-		ll2.line = new LineStyle(Color.RED, 3, Cap.BUTT);
-		ll2.scale = 1f;
-
-		LineLayer ll3 = layers.getLineLayer(2);
-		ll3.line = new LineStyle(Color.GREEN, 3, Cap.BUTT);
-		ll3.scale = 1f;
-
-		TextLayer tl = new TextLayer();
-		TextStyle t = new TextBuilder().setFontSize(20).setColor(Color.BLACK).build();
-		layers.setTextureLayers(tl);
-
-		float[] points = new float[10];
-
-		for (int i = 0; i < 400; i++) {
-			int w = (int) (20 + Math.random() * 256);
-			int h = (int) (20 + Math.random() * 56);
-			Rect r = mAtlas.getRegion(w, h);
-			if (r == null) {
-				log.debug("no space left");
-				continue;
-			}
-			r.x += 1;
-			r.y += 1;
-
-			points[0] = r.x;
-			points[1] = r.y;
-			points[2] = r.x + (r.w - 2);
-			points[3] = r.y;
-			points[4] = r.x + (r.w - 2);
-			points[5] = r.y + (r.h - 2);
-			points[6] = r.x;
-			points[7] = r.y + (r.h - 2);
-			points[8] = r.x;
-			points[9] = r.y;
-			ll.addLine(points, 10, false);
-
-			r.x += 1;
-			r.y += 1;
-			points[0] = r.x;
-			points[1] = r.y;
-			points[2] = r.x + (w - 4);
-			points[3] = r.y;
-			points[4] = r.x + (w - 4);
-			points[5] = r.y + (h - 4);
-			points[6] = r.x;
-			points[7] = r.y + (h - 4);
-			points[8] = r.x;
-			points[9] = r.y;
-
-			log.debug("add region: " + Arrays.toString(points));
-			ll2.addLine(points, 10, false);
-
-			TextItem ti = TextItem.pool.get();
-			ti.set(r.x + r.w / 2, r.y + r.h / 2, "" + i, t);
-
-			ti.x1 = 0;
-			ti.y1 = 1; // (short) (size / 2);
-			ti.x2 = 1; // (short) size;
-			ti.y2 = 1;
-			tl.addText(ti);
-		}
-
-		for (Slot s = mAtlas.mSlots; s != null; s = s.next) {
-			points[0] = s.x;
-			points[1] = s.y;
-			points[2] = s.x + s.w;
-			points[3] = s.y;
-			points[4] = s.x + s.w;
-			points[5] = 2048;
-			points[6] = s.x;
-			points[7] = 2048;
-			points[8] = s.x;
-			points[9] = s.y;
-
-			ll3.addLine(points, 10, false);
-		}
-
-		tl.prepare();
-		tl.labels = TextItem.pool.releaseAll(tl.labels);
-	}
-
-	boolean initial = true;
-
-	@Override
-	protected void update(GLViewport v) {
-
-		if (initial) {
-			mMapPosition.copy(v.pos);
-			initial = false;
-
-			compile();
-		}
-	}
-}
diff --git a/vtm/src/org/oscim/renderer/test/BezierPathLayer.java b/vtm/src/org/oscim/renderer/test/BezierPathLayer.java
deleted file mode 100644
index adbf422d..00000000
--- a/vtm/src/org/oscim/renderer/test/BezierPathLayer.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.oscim.renderer.test;
-
-import java.util.List;
-
-import org.oscim.backend.canvas.Color;
-import org.oscim.core.GeometryBuffer;
-import org.oscim.core.Point;
-import org.oscim.renderer.ElementRenderer;
-import org.oscim.renderer.GLViewport;
-import org.oscim.renderer.elements.LineLayer;
-import org.oscim.theme.styles.LineStyle;
-import org.oscim.utils.geom.BezierPath;
-
-public class BezierPathLayer extends ElementRenderer {
-
-	public BezierPathLayer() {
-		mMapPosition.scale = 0;
-
-		GeometryBuffer g = new GeometryBuffer(100, 1);
-		g.startLine();
-
-		Point[] pts = new Point[10];
-		for (int i = 0; i < 10; i++) {
-			pts[i] = new Point(i * 3, (i * i) % 3 * 4);
-			pts[i].x *= 10;
-			pts[i].y *= 10;
-			// System.out.println(pts[i]);
-			g.addPoint(pts[i]);
-		}
-		LineLayer ll = layers.addLineLayer(0, new LineStyle(Color.BLUE, 2f));
-		ll.addLine(g);
-
-		List<Point> ctrl = BezierPath.cubicSplineControlPoints(pts, 0.1f);
-
-		g.clear();
-		g.startLine();
-		Point p0 = pts[0];
-
-		for (int j = 1, k = 0; j < pts.length; j++) {
-			Point p1 = ctrl.get(k++);
-			Point p2 = ctrl.get(k++);
-			Point p3 = pts[j];
-			System.out.println(">>> " + p1 + " " + p2);
-			for (int i = 0; i < 10; i++) {
-				double mu = (i / 10f);
-				Point p = BezierPath.cubicBezier(p0, p1, p2, p3, mu);
-				g.addPoint(p);
-				System.out.println(mu + " " + p);
-			}
-			p0 = p3;
-		}
-		ll = layers.addLineLayer(1, new LineStyle(Color.CYAN, 2f));
-		ll.addLine(g);
-
-	}
-
-	public synchronized void clear() {
-		layers.clear();
-		setReady(false);
-	}
-
-	@Override
-	protected synchronized void update(GLViewport v) {
-
-		if (mMapPosition.scale == 0)
-			mMapPosition.copy(v.pos);
-
-		if (!isReady()) {
-			compile();
-		}
-	}
-}
diff --git a/vtm/src/org/oscim/renderer/test/CustomRenderer.java b/vtm/src/org/oscim/renderer/test/CustomRenderer.java
deleted file mode 100644
index ccadb2fd..00000000
--- a/vtm/src/org/oscim/renderer/test/CustomRenderer.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright 2013 Hannes Janetzek
- *
- * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
- *
- * This program is free software: you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with
- * this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package org.oscim.renderer.test;
-
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.FloatBuffer;
-
-import org.oscim.backend.GL20;
-import org.oscim.core.MapPosition;
-import org.oscim.map.Map;
-import org.oscim.renderer.GLState;
-import org.oscim.renderer.GLUtils;
-import org.oscim.renderer.GLViewport;
-import org.oscim.renderer.LayerRenderer;
-
-/*
- * This is an example how to integrate custom OpenGL drawing routines as map overlay
- *
- * based on chapter 2 from:
- * https://github.com/dalinaum/opengl-es-book-samples/tree/master/Android
- * */
-
-public class CustomRenderer extends LayerRenderer {
-
-	private final Map mMap;
-	private final MapPosition mMapPosition;
-
-	private int mProgramObject;
-	private int hVertexPosition;
-	private int hMatrixPosition;
-
-	private FloatBuffer mVertices;
-	private final float[] mVerticesData = {
-	        -200, -200, 1.0f,
-	        200, 200, 0,
-	        -200, 200, 0.5f,
-	        200, -200, 0.5f,
-	};
-	private boolean mInitialized;
-
-	public CustomRenderer(Map map) {
-		mMap = map;
-		mMapPosition = new MapPosition();
-	}
-
-	// ---------- everything below runs in GLRender Thread ----------
-	@Override
-	protected void update(GLViewport v) {
-		if (!mInitialized) {
-			if (!init())
-				return;
-
-			mInitialized = true;
-
-			// fix current MapPosition
-			mMapPosition.copy(v.pos);
-
-			compile();
-		}
-	}
-
-	protected void compile() {
-		// modify mVerticesData and put in FloatBuffer
-
-		mVertices.clear();
-		mVertices.put(mVerticesData);
-		mVertices.flip();
-
-		setReady(true);
-	}
-
-	@Override
-	protected void render(GLViewport v) {
-
-		// Use the program object
-		GLState.useProgram(mProgramObject);
-
-		GLState.blend(true);
-		GLState.test(false, false);
-
-		// unbind previously bound VBOs
-		GL.glBindBuffer(GL20.GL_ARRAY_BUFFER, 0);
-
-		// Load the vertex data
-		//mVertices.position(0);
-		GL.glVertexAttribPointer(hVertexPosition, 3, GL20.GL_FLOAT, false, 0, mVertices);
-		//mVertices.position(2);
-		//GL.glVertexAttribPointer(hVertexPosition, 2, GL20.GL_FLOAT, false, 4, mVertices);
-
-		GLState.enableVertexArrays(hVertexPosition, -1);
-
-		/* apply view and projection matrices */
-		// set mvp (tmp) matrix relative to mMapPosition
-		// i.e. fixed on the map
-
-		float ratio = 1f / mMap.getWidth();
-
-		v.mvp.setScale(ratio, ratio, 1);
-		v.mvp.multiplyLhs(v.proj);
-		v.mvp.setAsUniform(hMatrixPosition);
-
-		// Draw the triangle
-		GL.glDrawArrays(GL20.GL_TRIANGLE_STRIP, 0, 4);
-
-		GLUtils.checkGlError("...");
-	}
-
-	private boolean init() {
-		// Load the vertex/fragment shaders
-		int programObject = GLUtils.createProgram(vShaderStr, fShaderStr);
-
-		if (programObject == 0)
-			return false;
-
-		// Handle for vertex position in shader
-		hVertexPosition = GL.glGetAttribLocation(programObject, "a_pos");
-
-		hMatrixPosition = GL.glGetUniformLocation(programObject, "u_mvp");
-
-		// Store the program object
-		mProgramObject = programObject;
-
-		mVertices = ByteBuffer.allocateDirect(mVerticesData.length * 4)
-		    .order(ByteOrder.nativeOrder()).asFloatBuffer();
-
-		return true;
-	}
-
-	private final static String vShaderStr = "" +
-	        "precision mediump float;"
-	        + "uniform mat4 u_mvp;"
-	        + "attribute vec4 a_pos;"
-	        + "varying float alpha;"
-	        + "void main()"
-	        + "{"
-	        + "   gl_Position = u_mvp * vec4(a_pos.xy, 0.0, 1.0);"
-	        + "   alpha = a_pos.z;"
-	        + "}";
-
-	private final static String fShaderStr = "" +
-	        "precision mediump float;"
-	        + "varying float alpha;"
-	        + "void main()"
-	        + "{"
-	        + "  gl_FragColor = vec4 (alpha, 1.0-alpha, 0.0, 0.7 );"
-	        + "}";
-
-}
diff --git a/vtm/src/org/oscim/renderer/test/CustomRenderer2.java b/vtm/src/org/oscim/renderer/test/CustomRenderer2.java
deleted file mode 100644
index afc42452..00000000
--- a/vtm/src/org/oscim/renderer/test/CustomRenderer2.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright 2013 Hannes Janetzek
- *
- * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
- *
- * This program is free software: you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with
- * this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package org.oscim.renderer.test;
-
-import java.nio.FloatBuffer;
-
-import org.oscim.backend.GL20;
-import org.oscim.backend.canvas.Color;
-import org.oscim.renderer.BufferObject;
-import org.oscim.renderer.ElementRenderer;
-import org.oscim.renderer.GLState;
-import org.oscim.renderer.GLUtils;
-import org.oscim.renderer.GLViewport;
-import org.oscim.renderer.MapRenderer;
-import org.oscim.utils.FastMath;
-
-/*
- * This is an example how to integrate custom OpenGL drawing routines as map overlay
- *
- * based on chapter 2 from:
- * https://github.com/dalinaum/opengl-es-book-samples/tree/master/Android
- * */
-
-public class CustomRenderer2 extends ElementRenderer {
-
-	private int mProgramObject;
-	private int hVertexPosition;
-	private int hMatrixPosition;
-	private int hColorPosition;
-	private int hCenterPosition;
-
-	//private FloatBuffer mVertices;
-	private boolean mInitialized;
-	private BufferObject mVBO;
-
-	int mZoom = -1;
-	float mCellScale = 60 * MapRenderer.COORD_SCALE;
-
-	@Override
-	protected void update(GLViewport v) {
-		if (!mInitialized) {
-			if (!init())
-				return;
-
-			mInitialized = true;
-
-			compile();
-			// fix current MapPosition
-
-			//mMapPosition.setPosition(53.1, 8.8);
-			//mMapPosition.setZoomLevel(14);
-
-		}
-
-		if (mZoom != v.pos.zoomLevel) {
-			mMapPosition.copy(v.pos);
-			mZoom = v.pos.zoomLevel;
-		}
-	}
-
-	@Override
-	protected void compile() {
-
-		float[] vertices = new float[12];
-
-		for (int i = 0; i < 6; i++) {
-			vertices[i * 2 + 0] = (float) Math.cos(Math.PI * 2 * i / 6) * mCellScale;
-			vertices[i * 2 + 1] = (float) Math.sin(Math.PI * 2 * i / 6) * mCellScale;
-		}
-		FloatBuffer buf = MapRenderer.getFloatBuffer(12);
-		buf.put(vertices);
-
-		mVBO = BufferObject.get(GL20.GL_ARRAY_BUFFER, 0);
-		mVBO.loadBufferData(buf.flip(), 12 * 4);
-
-		setReady(true);
-	}
-
-	@Override
-	protected void render(GLViewport v) {
-
-		// Use the program object
-		GLState.useProgram(mProgramObject);
-
-		GLState.blend(true);
-		GLState.test(false, false);
-
-		// bind VBO data
-		mVBO.bind();
-
-		// set VBO vertex layout
-		GL.glVertexAttribPointer(hVertexPosition, 2, GL20.GL_FLOAT, false, 0, 0);
-
-		GLState.enableVertexArrays(hVertexPosition, -1);
-
-		/* apply view and projection matrices */
-		// set mvp (tmp) matrix relative to mMapPosition
-		// i.e. fixed on the map
-		setMatrix(v);
-		v.mvp.setAsUniform(hMatrixPosition);
-
-		final int offset_x = 4;
-		final int offset_y = 16;
-
-		float h = (float) (Math.sqrt(3) / 2);
-		for (int y = -offset_y; y < offset_y; y++) {
-			for (int x = -offset_x; x < offset_x; x++) {
-				float xx = x * 2 + (y % 2 == 0 ? 1 : 0);
-				float yy = y * h + h / 2;
-
-				GL.glUniform2f(hCenterPosition, xx * (mCellScale * 1.5f), yy * mCellScale);
-
-				//float alpha = 1 + (float) Math.log10(FastMath.clamp(
-				//		(float) Math.sqrt(xx * xx + yy * yy) / offset_y, 0.0f, 1.0f)) * 2;
-
-				float alpha = (float) Math.sqrt(xx * xx + yy * yy) / offset_y;
-
-				float fy = (float) (y + offset_y) / (offset_y * 2);
-				float fx = (float) (x + offset_x) / (offset_x * 2);
-				float fz = FastMath.clamp(
-				                          (float) (x < 0 || y < 0 ? 1 - Math.sqrt(fx * fx + fy * fy)
-				                                  : 0),
-				                          0,
-				                          1);
-
-				int c = 0xff << 24
-				        | (int) (0xff * fy) << 16
-				        | (int) (0xff * fx) << 8
-				        | (int) (0xff * fz);
-
-				GLUtils.setColor(hColorPosition, c, alpha);
-
-				GL.glDrawArrays(GL20.GL_TRIANGLE_FAN, 0, 6);
-			}
-		}
-
-		GLUtils.setColor(hColorPosition, Color.DKGRAY, 0.3f);
-
-		for (int y = -offset_y; y < offset_y; y++) {
-			for (int x = -offset_x; x < offset_x; x++) {
-				float xx = x * 2 + (y % 2 == 0 ? 1 : 0);
-				float yy = y * h + h / 2;
-
-				GL.glUniform2f(hCenterPosition, xx * (mCellScale * 1.5f), yy * mCellScale);
-				GL.glDrawArrays(GL20.GL_LINE_LOOP, 0, 6);
-			}
-		}
-
-		GLUtils.checkGlError("...");
-	}
-
-	private boolean init() {
-		// Load the vertex/fragment shaders
-		int programObject = GLUtils.createProgram(vShaderStr, fShaderStr);
-
-		if (programObject == 0)
-			return false;
-
-		// Handle for vertex position in shader
-		hVertexPosition = GL.glGetAttribLocation(programObject, "a_pos");
-
-		hMatrixPosition = GL.glGetUniformLocation(programObject, "u_mvp");
-
-		hColorPosition = GL.glGetUniformLocation(programObject, "u_color");
-
-		hCenterPosition = GL.glGetUniformLocation(programObject, "u_center");
-
-		// Store the program object
-		mProgramObject = programObject;
-
-		return true;
-	}
-
-	private final static String vShaderStr = "" +
-	        "precision mediump float;"
-	        + "uniform mat4 u_mvp;"
-	        + "uniform vec2 u_center;"
-	        + "attribute vec2 a_pos;"
-	        + "void main()"
-	        + "{"
-	        + "   gl_Position = u_mvp * vec4(u_center + a_pos, 0.0, 1.0);"
-	        + "}";
-
-	private final static String fShaderStr = "" +
-	        "precision mediump float;"
-	        + "varying float alpha;"
-	        + "uniform vec4 u_color;"
-	        + "void main()"
-	        + "{"
-	        + "  gl_FragColor = u_color;"
-	        + "}";
-
-}
diff --git a/vtm/src/org/oscim/renderer/test/SymbolRenderLayer.java b/vtm/src/org/oscim/renderer/test/SymbolRenderLayer.java
deleted file mode 100644
index fd5b7ece..00000000
--- a/vtm/src/org/oscim/renderer/test/SymbolRenderLayer.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2013 Hannes Janetzek
- *
- * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
- *
- * This program is free software: you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with
- * this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package org.oscim.renderer.test;
-
-import org.oscim.backend.CanvasAdapter;
-import org.oscim.renderer.ElementRenderer;
-import org.oscim.renderer.GLViewport;
-import org.oscim.renderer.elements.SymbolItem;
-import org.oscim.renderer.elements.SymbolLayer;
-
-public class SymbolRenderLayer extends ElementRenderer {
-	boolean initialize = true;
-
-	public SymbolRenderLayer() {
-		SymbolLayer l = new SymbolLayer();
-		layers.setTextureLayers(l);
-
-		SymbolItem it = SymbolItem.pool.get();
-		it.billboard = false;
-
-		try {
-			it.bitmap = CanvasAdapter.g.loadBitmapAsset("jar:symbols/cafe.png");
-		} catch (Exception e) {
-			e.printStackTrace();
-
-		}
-		l.addSymbol(it);
-	}
-
-	@Override
-	protected void update(GLViewport v) {
-		if (initialize) {
-			initialize = false;
-			mMapPosition.copy(v.pos);
-			compile();
-		}
-	}
-}