diff --git a/vtm-android-example/AndroidManifest.xml b/vtm-android-example/AndroidManifest.xml
index 1e6ba131..94a3440c 100644
--- a/vtm-android-example/AndroidManifest.xml
+++ b/vtm-android-example/AndroidManifest.xml
@@ -85,6 +85,9 @@
+
@@ -103,9 +106,6 @@
-
diff --git a/vtm-android-example/src/org/oscim/android/test/S3DBMapActivity.java b/vtm-android-example/src/org/oscim/android/test/OSciMapS3DBMapActivity.java
similarity index 92%
rename from vtm-android-example/src/org/oscim/android/test/S3DBMapActivity.java
rename to vtm-android-example/src/org/oscim/android/test/OSciMapS3DBMapActivity.java
index b53a6bf9..a9b6717a 100644
--- a/vtm-android-example/src/org/oscim/android/test/S3DBMapActivity.java
+++ b/vtm-android-example/src/org/oscim/android/test/OSciMapS3DBMapActivity.java
@@ -20,13 +20,13 @@ import android.os.Bundle;
import org.oscim.android.cache.TileCache;
import org.oscim.layers.tile.TileLayer;
-import org.oscim.layers.tile.buildings.S3DBLayer;
+import org.oscim.layers.tile.buildings.S3DBTileLayer;
import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.theme.VtmThemes;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
-public class S3DBMapActivity extends BaseMapActivity {
+public class OSciMapS3DBMapActivity extends BaseMapActivity {
TileCache mS3dbCache;
@@ -47,7 +47,7 @@ public class S3DBMapActivity extends BaseMapActivity {
mS3dbCache.setCacheSize(512 * (1 << 10));
ts.setCache(mS3dbCache);
}
- TileLayer tl = new S3DBLayer(mMap, ts, true, false);
+ TileLayer tl = new S3DBTileLayer(mMap, ts, true, false);
mMap.layers().add(tl);
mMap.layers().add(new LabelLayer(mMap, mBaseLayer));
}
diff --git a/vtm-android-example/src/org/oscim/android/test/Samples.java b/vtm-android-example/src/org/oscim/android/test/Samples.java
index 0340ab3a..59bed377 100644
--- a/vtm-android-example/src/org/oscim/android/test/Samples.java
+++ b/vtm-android-example/src/org/oscim/android/test/Samples.java
@@ -124,7 +124,7 @@ public class Samples extends Activity {
linearLayout.addView(createLabel("Experiments"));
linearLayout.addView(createButton(ReverseGeocodeActivity.class));
- linearLayout.addView(createButton(S3DBMapActivity.class));
+ linearLayout.addView(createButton(OSciMapS3DBMapActivity.class));
linearLayout.addView(createButton(ThemeStylerActivity.class));
linearLayout.addView(createButton(JeoIndoorMapActivity.class));
}
diff --git a/vtm-playground/src/org/oscim/test/S3DBLayerTest.java b/vtm-playground/src/org/oscim/test/OSciMapS3DBTest.java
similarity index 88%
rename from vtm-playground/src/org/oscim/test/S3DBLayerTest.java
rename to vtm-playground/src/org/oscim/test/OSciMapS3DBTest.java
index e0ff630c..7baff5e5 100644
--- a/vtm-playground/src/org/oscim/test/S3DBLayerTest.java
+++ b/vtm-playground/src/org/oscim/test/OSciMapS3DBTest.java
@@ -17,12 +17,12 @@
package org.oscim.test;
import org.oscim.gdx.GdxMapApp;
-import org.oscim.layers.tile.buildings.S3DBLayer;
+import org.oscim.layers.tile.buildings.S3DBTileLayer;
import org.oscim.theme.VtmThemes;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
-public class S3DBLayerTest extends GdxMapApp {
+public class OSciMapS3DBTest extends GdxMapApp {
@Override
public void createLayers() {
@@ -34,7 +34,7 @@ public class S3DBLayerTest extends GdxMapApp {
.url("http://opensciencemap.org/tiles/s3db")
.build();
- S3DBLayer tl = new S3DBLayer(mMap, ts);
+ S3DBTileLayer tl = new S3DBTileLayer(mMap, ts);
mMap.layers().add(tl);
mMap.setMapPosition(53.08, 8.82, 1 << 17);
@@ -43,6 +43,6 @@ public class S3DBLayerTest extends GdxMapApp {
public static void main(String[] args) {
init();
- run(new S3DBLayerTest());
+ run(new OSciMapS3DBTest());
}
}
diff --git a/vtm-playground/src/org/oscim/test/ThemeBuilderTest.java b/vtm-playground/src/org/oscim/test/ThemeBuilderTest.java
index 01415a3e..4b67edab 100644
--- a/vtm-playground/src/org/oscim/test/ThemeBuilderTest.java
+++ b/vtm-playground/src/org/oscim/test/ThemeBuilderTest.java
@@ -24,13 +24,9 @@ import org.oscim.layers.tile.vector.VectorTileLayer;
import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.theme.RenderTheme;
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class ThemeBuilderTest extends GdxMapImpl {
- final Logger log = LoggerFactory.getLogger(S3DBLayerTest.class);
-
static class MyTheme extends ThemeBuilder {
public MyTheme() {
rules(
diff --git a/vtm-web-app/src/org/oscim/web/client/GwtMap.java b/vtm-web-app/src/org/oscim/web/client/GwtMap.java
index 6457b375..0942bf09 100644
--- a/vtm-web-app/src/org/oscim/web/client/GwtMap.java
+++ b/vtm-web-app/src/org/oscim/web/client/GwtMap.java
@@ -33,7 +33,7 @@ import org.oscim.gdx.client.MapConfig;
import org.oscim.gdx.client.MapUrl;
import org.oscim.layers.tile.bitmap.BitmapTileLayer;
import org.oscim.layers.tile.buildings.BuildingLayer;
-import org.oscim.layers.tile.buildings.S3DBLayer;
+import org.oscim.layers.tile.buildings.S3DBTileLayer;
import org.oscim.layers.tile.vector.VectorTileLayer;
import org.oscim.layers.tile.vector.labeling.LabelLayer;
import org.oscim.renderer.MapRenderer;
@@ -138,7 +138,7 @@ class GwtMap extends GdxMap {
.zoomMin(16)
.zoomMax(16)
.build();
- mMap.layers().add(new S3DBLayer(mMap, ts));
+ mMap.layers().add(new S3DBTileLayer(mMap, ts));
}
if (l != null) {
boolean nolabels = mapUrl.params.containsKey("nolabels");
diff --git a/vtm/src/org/oscim/layers/tile/buildings/S3DBTileLayer.java b/vtm/src/org/oscim/layers/tile/buildings/S3DBTileLayer.java
new file mode 100644
index 00000000..0c25d5a7
--- /dev/null
+++ b/vtm/src/org/oscim/layers/tile/buildings/S3DBTileLayer.java
@@ -0,0 +1,98 @@
+/*
+ * 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.layers.tile.buildings;
+
+import org.oscim.layers.tile.TileLayer;
+import org.oscim.layers.tile.TileManager;
+import org.oscim.layers.tile.TileRenderer;
+import org.oscim.map.Map;
+import org.oscim.renderer.GLViewport;
+import org.oscim.renderer.LayerRenderer;
+import org.oscim.renderer.OffscreenRenderer;
+import org.oscim.renderer.OffscreenRenderer.Mode;
+import org.oscim.tiling.TileSource;
+
+public class S3DBTileLayer extends TileLayer {
+
+ private final static int MAX_CACHE = 32;
+
+ private final static int MIN_ZOOM = 16;
+ private final static int MAX_ZOOM = 16;
+
+ private final TileSource mTileSource;
+
+ public S3DBTileLayer(Map map, TileSource tileSource) {
+ this(map, tileSource, true, false);
+ }
+
+ /**
+ * Simple-3D-Buildings OSCIM4 Tile Layer
+ *
+ * @param map Stored map workaround
+ * @param tileSource Source of loaded tiles in {@link org.oscim.layers.tile.vector.VectorTileLayer}
+ * @param fxaa Switch on Fast Approximate Anti-Aliasing
+ * @param ssao Switch on Screen Space Ambient Occlusion
+ */
+ public S3DBTileLayer(Map map, TileSource tileSource, boolean fxaa, boolean ssao) {
+ super(map, new TileManager(map, MAX_CACHE));
+ setRenderer(new S3DBTileRenderer(fxaa, ssao));
+
+ mTileManager.setZoomLevel(MIN_ZOOM, MAX_ZOOM);
+ mTileSource = tileSource;
+ initLoader(2);
+ }
+
+ @Override
+ protected S3DBTileLoader createLoader() {
+ return new S3DBTileLoader(getManager(), mTileSource);
+ }
+
+ public static class S3DBTileRenderer extends TileRenderer {
+ LayerRenderer mRenderer;
+
+ public S3DBTileRenderer(boolean fxaa, boolean ssao) {
+ mRenderer = new BuildingRenderer(this, MIN_ZOOM, MAX_ZOOM, true, false);
+
+ if (fxaa || ssao) {
+ Mode mode = Mode.FXAA;
+ if (fxaa && ssao)
+ mode = Mode.SSAO_FXAA;
+ else if (ssao)
+ mode = Mode.SSAO;
+ mRenderer = new OffscreenRenderer(mode, mRenderer);
+ }
+ }
+
+ @Override
+ public synchronized void update(GLViewport v) {
+ super.update(v);
+ mRenderer.update(v);
+ setReady(mRenderer.isReady());
+ }
+
+ @Override
+ public synchronized void render(GLViewport v) {
+ mRenderer.render(v);
+ }
+
+ @Override
+ public boolean setup() {
+ mRenderer.setup();
+ return super.setup();
+ }
+ }
+}
diff --git a/vtm/src/org/oscim/layers/tile/buildings/S3DBTileLoader.java b/vtm/src/org/oscim/layers/tile/buildings/S3DBTileLoader.java
index 7c888d4d..c8f47222 100644
--- a/vtm/src/org/oscim/layers/tile/buildings/S3DBTileLoader.java
+++ b/vtm/src/org/oscim/layers/tile/buildings/S3DBTileLoader.java
@@ -128,11 +128,11 @@ class S3DBTileLoader extends TileLoader {
int c = 0;
if (element.tags.containsKey(OSCIM4_KEY_COLOR)) {
- c = S3DBLayer.getColor(element.tags.getValue(OSCIM4_KEY_COLOR), isRoof);
+ c = S3DBUtils.getColor(element.tags.getValue(OSCIM4_KEY_COLOR), isRoof);
}
if (c == 0 && element.tags.containsKey(OSCIM4_KEY_MATERIAL)) {
- c = S3DBLayer.getMaterialColor(element.tags.getValue(OSCIM4_KEY_MATERIAL), isRoof);
+ c = S3DBUtils.getMaterialColor(element.tags.getValue(OSCIM4_KEY_MATERIAL), isRoof);
}
if (c == 0) {
diff --git a/vtm/src/org/oscim/layers/tile/buildings/S3DBLayer.java b/vtm/src/org/oscim/layers/tile/buildings/S3DBUtils.java
similarity index 64%
rename from vtm/src/org/oscim/layers/tile/buildings/S3DBLayer.java
rename to vtm/src/org/oscim/layers/tile/buildings/S3DBUtils.java
index e91d0899..fcdfcbc5 100644
--- a/vtm/src/org/oscim/layers/tile/buildings/S3DBLayer.java
+++ b/vtm/src/org/oscim/layers/tile/buildings/S3DBUtils.java
@@ -1,5 +1,6 @@
/*
* Copyright 2013 Hannes Janetzek
+ * Copyright 2017 Gustl22
*
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
*
@@ -17,96 +18,27 @@
package org.oscim.layers.tile.buildings;
import org.oscim.backend.canvas.Color;
-import org.oscim.layers.tile.TileLayer;
-import org.oscim.layers.tile.TileManager;
-import org.oscim.layers.tile.TileRenderer;
-import org.oscim.map.Map;
-import org.oscim.renderer.GLViewport;
-import org.oscim.renderer.LayerRenderer;
-import org.oscim.renderer.OffscreenRenderer;
-import org.oscim.renderer.OffscreenRenderer.Mode;
-import org.oscim.tiling.TileSource;
import org.oscim.utils.ColorUtil;
import org.oscim.utils.ColorsCSS;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class S3DBLayer extends TileLayer {
- static final Logger log = LoggerFactory.getLogger(S3DBLayer.class);
-
- private final static int MAX_CACHE = 32;
-
- private final static int MIN_ZOOM = 16;
- private final static int MAX_ZOOM = 16;
+/**
+ * Provides utils for S3DB layers.
+ */
+public final class S3DBUtils {
+ private static final Logger log = LoggerFactory.getLogger(S3DBUtils.class);
/* TODO get from theme */
private final static double HSV_S = 0.7;
private final static double HSV_V = 1.2;
- private final TileSource mTileSource;
-
- public S3DBLayer(Map map, TileSource tileSource) {
- this(map, tileSource, true, false);
- }
-
/**
- * Simple-3D-Buildings OSCIM4 Tile Layer
- *
- * @param map Stored map workaround
- * @param tileSource Source of loaded tiles in {@link org.oscim.layers.tile.vector.VectorTileLayer}
- * @param fxaa Switch on Fast Approximate Anti-Aliasing
- * @param ssao Switch on Screen Space Ambient Occlusion
+ * @param color the color as string (see http://wiki.openstreetmap.org/wiki/Key:colour)
+ * @param roof declare if color is used for roofs
+ * @return the color as integer (8 bit each a, r, g, b)
*/
- public S3DBLayer(Map map, TileSource tileSource, boolean fxaa, boolean ssao) {
- super(map, new TileManager(map, MAX_CACHE));
- setRenderer(new S3DBRenderer(fxaa, ssao));
-
- mTileManager.setZoomLevel(MIN_ZOOM, MAX_ZOOM);
- mTileSource = tileSource;
- initLoader(2);
- }
-
- @Override
- protected S3DBTileLoader createLoader() {
- return new S3DBTileLoader(getManager(), mTileSource);
- }
-
- public static class S3DBRenderer extends TileRenderer {
- LayerRenderer mRenderer;
-
- public S3DBRenderer(boolean fxaa, boolean ssao) {
- mRenderer = new BuildingRenderer(this, MIN_ZOOM, MAX_ZOOM, true, false);
-
- if (fxaa || ssao) {
- Mode mode = Mode.FXAA;
- if (fxaa && ssao)
- mode = Mode.SSAO_FXAA;
- else if (ssao)
- mode = Mode.SSAO;
- mRenderer = new OffscreenRenderer(mode, mRenderer);
- }
- }
-
- @Override
- public synchronized void update(GLViewport v) {
- super.update(v);
- mRenderer.update(v);
- setReady(mRenderer.isReady());
- }
-
- @Override
- public synchronized void render(GLViewport v) {
- mRenderer.render(v);
- }
-
- @Override
- public boolean setup() {
- mRenderer.setup();
- return super.setup();
- }
- }
-
- static int getColor(String color, boolean roof) {
+ public static int getColor(String color, boolean roof) {
if (color.charAt(0) == '#') {
int c = Color.parseColor(color, Color.CYAN);
@@ -155,7 +87,12 @@ public class S3DBLayer extends TileLayer {
return 0;
}
- static int getMaterialColor(String material, boolean roof) {
+ /**
+ * @param material the material as string (see http://wiki.openstreetmap.org/wiki/Key:material and following pages)
+ * @param roof declare if material is used for roofs
+ * @return the color as integer (8 bit each a, r, g, b)
+ */
+ public static int getMaterialColor(String material, boolean roof) {
if (roof) {
if ("glass".equals(material))
@@ -210,4 +147,7 @@ public class S3DBLayer extends TileLayer {
return 0;
}
+
+ private S3DBUtils() {
+ }
}