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 . - */ -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 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 . - */ -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 . - */ -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 . - */ -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(); - } - } -}