diff --git a/vtm-android-gdx/src/org/oscim/android/canvas/AndroidGraphics.java b/vtm-android-gdx/src/org/oscim/android/canvas/AndroidGraphics.java index a3b312f7..86df550e 100644 --- a/vtm-android-gdx/src/org/oscim/android/canvas/AndroidGraphics.java +++ b/vtm-android-gdx/src/org/oscim/android/canvas/AndroidGraphics.java @@ -33,10 +33,9 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; public final class AndroidGraphics extends CanvasAdapter { - public static final AndroidGraphics INSTANCE = new AndroidGraphics(); public static void init() { - g = INSTANCE; + CanvasAdapter.init(new AndroidGraphics()); } // public static android.graphics.Bitmap getAndroidBitmap(Bitmap bitmap) { @@ -52,22 +51,22 @@ public final class AndroidGraphics extends CanvasAdapter { } @Override - public Bitmap decodeBitmap(InputStream inputStream) { + public Bitmap decodeBitmapImpl(InputStream inputStream) { return new AndroidBitmap(inputStream); } @Override - public Paint getPaint() { + public Paint newPaintImpl() { return new AndroidPaint(); } @Override - public Bitmap getBitmap(int width, int height, int format) { + public Bitmap newBitmapImpl(int width, int height, int format) { return new AndroidBitmap(width, height, format); } @Override - public Canvas getCanvas() { + public Canvas newCanvasImpl() { return new AndroidCanvas(); } @@ -100,7 +99,7 @@ public final class AndroidGraphics extends CanvasAdapter { } @Override - public Bitmap loadBitmapAsset(String fileName) { + public Bitmap loadBitmapAssetImpl(String fileName) { try { return createBitmap(fileName); } catch (IOException e) { diff --git a/vtm-android/src/org/oscim/android/AndroidAssets.java b/vtm-android/src/org/oscim/android/AndroidAssets.java index 2db22bee..4d1b44a4 100644 --- a/vtm-android/src/org/oscim/android/AndroidAssets.java +++ b/vtm-android/src/org/oscim/android/AndroidAssets.java @@ -27,7 +27,7 @@ public class AndroidAssets extends AssetAdapter { Context mContext; public static void init(Context ctx) { - g = new AndroidAssets(ctx); + AssetAdapter.init(new AndroidAssets(ctx)); } private AndroidAssets(Context ctx) { diff --git a/vtm-android/src/org/oscim/android/canvas/AndroidGraphics.java b/vtm-android/src/org/oscim/android/canvas/AndroidGraphics.java index abe2388c..35afc489 100644 --- a/vtm-android/src/org/oscim/android/canvas/AndroidGraphics.java +++ b/vtm-android/src/org/oscim/android/canvas/AndroidGraphics.java @@ -34,7 +34,7 @@ import android.graphics.drawable.Drawable; public final class AndroidGraphics extends CanvasAdapter { public static void init() { - g = new AndroidGraphics(); + CanvasAdapter.init(new AndroidGraphics()); } public static android.graphics.Paint getAndroidPaint(Paint paint) { @@ -46,12 +46,12 @@ public final class AndroidGraphics extends CanvasAdapter { } @Override - public Bitmap decodeBitmap(InputStream inputStream) { + public Bitmap decodeBitmapImpl(InputStream inputStream) { return new AndroidBitmap(inputStream); } @Override - public Bitmap loadBitmapAsset(String fileName) { + public Bitmap loadBitmapAssetImpl(String fileName) { try { return createBitmap(fileName); } catch (IOException e) { @@ -61,17 +61,17 @@ public final class AndroidGraphics extends CanvasAdapter { } @Override - public Paint getPaint() { + public Paint newPaintImpl() { return new AndroidPaint(); } @Override - public Bitmap getBitmap(int width, int height, int format) { + public Bitmap newBitmapImpl(int width, int height, int format) { return new AndroidBitmap(width, height, format); } @Override - public Canvas getCanvas() { + public Canvas newCanvasImpl() { return new AndroidCanvas(); } diff --git a/vtm-desktop/src/org/oscim/awt/AwtGraphics.java b/vtm-desktop/src/org/oscim/awt/AwtGraphics.java index 3bc57172..97a404a6 100644 --- a/vtm-desktop/src/org/oscim/awt/AwtGraphics.java +++ b/vtm-desktop/src/org/oscim/awt/AwtGraphics.java @@ -30,10 +30,9 @@ import org.oscim.backend.canvas.Canvas; import org.oscim.backend.canvas.Paint; public class AwtGraphics extends CanvasAdapter { - private static final AwtGraphics INSTANCE = new AwtGraphics(); public static void init() { - g = INSTANCE; + CanvasAdapter.init(new AwtGraphics()); } private AwtGraphics() { @@ -41,17 +40,17 @@ public class AwtGraphics extends CanvasAdapter { } @Override - public Paint getPaint() { + public Paint newPaintImpl() { return new AwtPaint(); } @Override - public Bitmap getBitmap(int width, int height, int format) { + public Bitmap newBitmapImpl(int width, int height, int format) { return new AwtBitmap(width, height, format); } @Override - public Canvas getCanvas() { + public Canvas newCanvasImpl() { return new AwtCanvas(); } @@ -87,7 +86,7 @@ public class AwtGraphics extends CanvasAdapter { } @Override - public Bitmap decodeBitmap(InputStream inputStream) { + public Bitmap decodeBitmapImpl(InputStream inputStream) { try { return new AwtBitmap(inputStream); } catch (IOException e) { @@ -97,7 +96,7 @@ public class AwtGraphics extends CanvasAdapter { } @Override - public Bitmap loadBitmapAsset(String fileName) { + public Bitmap loadBitmapAssetImpl(String fileName) { try { return createBitmap(fileName); } catch (IOException e) { diff --git a/vtm-gdx/src/org/oscim/gdx/GdxAssets.java b/vtm-gdx/src/org/oscim/gdx/GdxAssets.java index 3a58118d..41b5f582 100644 --- a/vtm-gdx/src/org/oscim/gdx/GdxAssets.java +++ b/vtm-gdx/src/org/oscim/gdx/GdxAssets.java @@ -46,6 +46,6 @@ public class GdxAssets extends AssetAdapter { } public static void init(String path) { - g = new GdxAssets(path); + AssetAdapter.init(new GdxAssets(path)); } } diff --git a/vtm-jeo/src/org/oscim/layers/JeoTileSource.java b/vtm-jeo/src/org/oscim/layers/JeoTileSource.java index 68a2bedb..25a7654d 100644 --- a/vtm-jeo/src/org/oscim/layers/JeoTileSource.java +++ b/vtm-jeo/src/org/oscim/layers/JeoTileSource.java @@ -47,7 +47,7 @@ public class JeoTileSource extends TileSource { sink.completed(TILE_NOT_FOUND); return; } - Bitmap b = CanvasAdapter.g.decodeBitmap(new ByteArrayInputStream(t.getData())); + Bitmap b = CanvasAdapter.decodeBitmap(new ByteArrayInputStream(t.getData())); sink.setTileImage(b); log.debug("success {}", tile); sink.completed(SUCCESS); diff --git a/vtm-playground/src/org/oscim/test/SpriteManager.java b/vtm-playground/src/org/oscim/test/SpriteManager.java index 9de446da..47224595 100644 --- a/vtm-playground/src/org/oscim/test/SpriteManager.java +++ b/vtm-playground/src/org/oscim/test/SpriteManager.java @@ -48,7 +48,7 @@ public abstract class SpriteManager { Sprite items; - protected final Canvas mCanvas = CanvasAdapter.g.getCanvas(); + protected final Canvas mCanvas = CanvasAdapter.newCanvas(); protected TextureItem mTexture; public SpriteManager() { diff --git a/vtm-playground/src/org/oscim/test/ThemeTest.java b/vtm-playground/src/org/oscim/test/ThemeTest.java index 1e449853..7c0be1c5 100644 --- a/vtm-playground/src/org/oscim/test/ThemeTest.java +++ b/vtm-playground/src/org/oscim/test/ThemeTest.java @@ -18,7 +18,7 @@ public class ThemeTest { public static void main(String[] args) { AwtGraphics.init(); - AssetAdapter.g = new AssetAdapter() { + AssetAdapter.init(new AssetAdapter() { @Override public InputStream openFileAsStream(String name) { try { @@ -29,7 +29,7 @@ public class ThemeTest { return null; } } - }; + }); IRenderTheme t = ThemeLoader.load(VtmThemes.DEFAULT); diff --git a/vtm-playground/src/org/oscim/test/renderer/SymbolRenderLayer.java b/vtm-playground/src/org/oscim/test/renderer/SymbolRenderLayer.java index 306aedbb..e736cb5f 100644 --- a/vtm-playground/src/org/oscim/test/renderer/SymbolRenderLayer.java +++ b/vtm-playground/src/org/oscim/test/renderer/SymbolRenderLayer.java @@ -33,7 +33,7 @@ public class SymbolRenderLayer extends ElementRenderer { it.billboard = false; try { - it.bitmap = CanvasAdapter.g.loadBitmapAsset("jar:symbols/cafe.png"); + it.bitmap = CanvasAdapter.getBitmapAsset("jar:symbols/cafe.png"); } catch (Exception e) { e.printStackTrace(); diff --git a/vtm-themes/src/org/oscim/theme/VtmThemes.java b/vtm-themes/src/org/oscim/theme/VtmThemes.java index 325376b6..ff04a389 100644 --- a/vtm-themes/src/org/oscim/theme/VtmThemes.java +++ b/vtm-themes/src/org/oscim/theme/VtmThemes.java @@ -39,6 +39,6 @@ public enum VtmThemes implements ThemeFile { @Override public InputStream getRenderThemeAsStream() { - return AssetAdapter.g.openFileAsStream(mPath); + return AssetAdapter.readFileAsStream(mPath); } } diff --git a/vtm-web/src/org/oscim/gdx/client/GwtGdxGraphics.java b/vtm-web/src/org/oscim/gdx/client/GwtGdxGraphics.java index f6940eb8..36f16723 100644 --- a/vtm-web/src/org/oscim/gdx/client/GwtGdxGraphics.java +++ b/vtm-web/src/org/oscim/gdx/client/GwtGdxGraphics.java @@ -30,7 +30,6 @@ public class GwtGdxGraphics extends CanvasAdapter { public static boolean NO_STROKE_TEXT = false; - public static final GwtGdxGraphics INSTANCE = new GwtGdxGraphics(); static final Context2d ctx; static { @@ -47,33 +46,32 @@ public class GwtGdxGraphics extends CanvasAdapter { } @Override - public Bitmap decodeBitmap(InputStream in) { + public Bitmap decodeBitmapImpl(InputStream in) { //ImageData data = new ImageData(); return null; } @Override - public Bitmap loadBitmapAsset(String fileName) { + public Bitmap loadBitmapAssetImpl(String fileName) { return new GwtBitmap(fileName); } @Override - public Paint getPaint() { + public Paint newPaintImpl() { return new GwtPaint(); } @Override - public Bitmap getBitmap(int width, int height, int format) { + public Bitmap newBitmapImpl(int width, int height, int format) { return new GwtBitmap(width, height, format); } @Override - public org.oscim.backend.canvas.Canvas getCanvas() { + public org.oscim.backend.canvas.Canvas newCanvasImpl() { return new GwtCanvas(); } public static void init() { - g = INSTANCE; + CanvasAdapter.init(new GwtGdxGraphics()); } - } diff --git a/vtm/src/org/oscim/backend/AssetAdapter.java b/vtm/src/org/oscim/backend/AssetAdapter.java index 7b89302e..8235568c 100644 --- a/vtm/src/org/oscim/backend/AssetAdapter.java +++ b/vtm/src/org/oscim/backend/AssetAdapter.java @@ -27,20 +27,21 @@ import java.io.InputStreamReader; public abstract class AssetAdapter { /** The instance provided by backend */ - public static AssetAdapter g; + static AssetAdapter g; /** * Open file from asset path as stream. - * - * @param name the name - * @return the input stream */ - public abstract InputStream openFileAsStream(String name); + protected abstract InputStream openFileAsStream(String file); - public String openTextFile(String name) { + public static InputStream readFileAsStream(String file) { + return g.openFileAsStream(file); + } + + public static String readTextFile(String file) { StringBuilder sb = new StringBuilder(); - InputStream is = g.openFileAsStream(name); + InputStream is = g.openFileAsStream(file); if (is == null) return null; @@ -55,5 +56,10 @@ public abstract class AssetAdapter { } return sb.toString(); + + } + + public static void init(AssetAdapter adapter) { + g = adapter; } } diff --git a/vtm/src/org/oscim/backend/CanvasAdapter.java b/vtm/src/org/oscim/backend/CanvasAdapter.java index 5e8a3f85..411b962e 100644 --- a/vtm/src/org/oscim/backend/CanvasAdapter.java +++ b/vtm/src/org/oscim/backend/CanvasAdapter.java @@ -29,7 +29,7 @@ import org.oscim.backend.canvas.Paint; public abstract class CanvasAdapter { /** The instance provided by backend */ - public static CanvasAdapter g; + static CanvasAdapter g; /** The dpi. */ public static float dpi = 240; @@ -42,14 +42,22 @@ public abstract class CanvasAdapter { * * @return the canvas */ - public abstract Canvas getCanvas(); + protected abstract Canvas newCanvasImpl(); + + public static Canvas newCanvas() { + return g.newCanvasImpl(); + } /** * Create Paint. * * @return the paint */ - public abstract Paint getPaint(); + protected abstract Paint newPaintImpl(); + + public static Paint newPaint() { + return g.newPaintImpl(); + } /** * Create {@link Bitmap} with given dimensions. @@ -59,7 +67,11 @@ public abstract class CanvasAdapter { * @param format the format * @return the bitmap */ - public abstract Bitmap getBitmap(int width, int height, int format); + protected abstract Bitmap newBitmapImpl(int width, int height, int format); + + public static Bitmap newBitmap(int width, int height, int format) { + return g.newBitmapImpl(width, height, format); + } /** * Create {@link Bitmap} from InputStream. @@ -67,7 +79,11 @@ public abstract class CanvasAdapter { * @param inputStream the input stream * @return the bitmap */ - public abstract Bitmap decodeBitmap(InputStream inputStream); + protected abstract Bitmap decodeBitmapImpl(InputStream inputStream); + + public static Bitmap decodeBitmap(InputStream inputStream) { + return g.decodeBitmapImpl(inputStream); + } /** * Create {@link Bitmap} from bundled assets. @@ -75,7 +91,11 @@ public abstract class CanvasAdapter { * @param fileName the file name * @return the bitmap */ - public abstract Bitmap loadBitmapAsset(String fileName); + protected abstract Bitmap loadBitmapAssetImpl(String fileName); + + public static Bitmap getBitmapAsset(String fileName) { + return g.loadBitmapAssetImpl(fileName); + } protected static Bitmap createBitmap(String src) throws IOException { if (src == null || src.length() == 0) { @@ -89,8 +109,12 @@ public abstract class CanvasAdapter { return null; } - Bitmap bitmap = CanvasAdapter.g.decodeBitmap(inputStream); + Bitmap bitmap = decodeBitmap(inputStream); inputStream.close(); return bitmap; } + + protected static void init(CanvasAdapter adapter) { + g = adapter; + } } diff --git a/vtm/src/org/oscim/renderer/GLShader.java b/vtm/src/org/oscim/renderer/GLShader.java index 13c2aefe..6ef2eb62 100644 --- a/vtm/src/org/oscim/renderer/GLShader.java +++ b/vtm/src/org/oscim/renderer/GLShader.java @@ -45,7 +45,7 @@ public abstract class GLShader { public static int loadShader(String file) { String path = "shaders/" + file + ".glsl"; - String vs = AssetAdapter.g.openTextFile(path); + String vs = AssetAdapter.readTextFile(path); if (vs == null) throw new IllegalArgumentException("shader file not found: " + path); diff --git a/vtm/src/org/oscim/renderer/elements/TextLayer.java b/vtm/src/org/oscim/renderer/elements/TextLayer.java index 06f8568b..c08acb36 100644 --- a/vtm/src/org/oscim/renderer/elements/TextLayer.java +++ b/vtm/src/org/oscim/renderer/elements/TextLayer.java @@ -42,7 +42,7 @@ public class TextLayer extends TextureLayer { public TextLayer() { super(RenderElement.SYMBOL); - mCanvas = CanvasAdapter.g.getCanvas(); + mCanvas = CanvasAdapter.newCanvas(); fixed = true; } diff --git a/vtm/src/org/oscim/renderer/elements/TextureItem.java b/vtm/src/org/oscim/renderer/elements/TextureItem.java index 09ceeeae..3bd2178f 100644 --- a/vtm/src/org/oscim/renderer/elements/TextureItem.java +++ b/vtm/src/org/oscim/renderer/elements/TextureItem.java @@ -186,7 +186,7 @@ public class TextureItem extends Inlist { synchronized (mBitmaps) { int size = mBitmaps.size(); if (size == 0) - t.bitmap = CanvasAdapter.g.getBitmap(mWidth, mHeight, 0); + t.bitmap = CanvasAdapter.newBitmap(mWidth, mHeight, 0); else { t.bitmap = mBitmaps.remove(size - 1); t.bitmap.eraseColor(Color.TRANSPARENT); diff --git a/vtm/src/org/oscim/theme/XmlThemeBuilder.java b/vtm/src/org/oscim/theme/XmlThemeBuilder.java index 15c29eb8..f0399e27 100644 --- a/vtm/src/org/oscim/theme/XmlThemeBuilder.java +++ b/vtm/src/org/oscim/theme/XmlThemeBuilder.java @@ -531,7 +531,7 @@ public class XmlThemeBuilder extends DefaultHandler { if (src != null) { try { - Bitmap bitmap = CanvasAdapter.g.loadBitmapAsset(src); + Bitmap bitmap = CanvasAdapter.getBitmapAsset(src); if (bitmap != null) b.texture = new TextureItem(bitmap, true); } catch (Exception e) { @@ -566,7 +566,7 @@ public class XmlThemeBuilder extends DefaultHandler { } validateExists("img", img, elementName); - Bitmap bitmap = CanvasAdapter.g.loadBitmapAsset(IMG_PATH + img); + Bitmap bitmap = CanvasAdapter.getBitmapAsset(IMG_PATH + img); mTextureAtlas = new TextureAtlas(bitmap); } diff --git a/vtm/src/org/oscim/theme/styles/TextStyle.java b/vtm/src/org/oscim/theme/styles/TextStyle.java index d5726b5c..e315d2cb 100644 --- a/vtm/src/org/oscim/theme/styles/TextStyle.java +++ b/vtm/src/org/oscim/theme/styles/TextStyle.java @@ -165,7 +165,7 @@ public final class TextStyle extends RenderStyle { this.priority = tb.priority; this.texture = tb.texture; - paint = CanvasAdapter.g.getPaint(); + paint = CanvasAdapter.newPaint(); paint.setTextAlign(Align.CENTER); paint.setTypeface(tb.fontFamily, tb.fontStyle); @@ -173,7 +173,7 @@ public final class TextStyle extends RenderStyle { paint.setTextSize(tb.fontSize); if (tb.strokeWidth > 0) { - stroke = CanvasAdapter.g.getPaint(); + stroke = CanvasAdapter.newPaint(); stroke.setStyle(Paint.Style.STROKE); stroke.setTextAlign(Align.CENTER); stroke.setTypeface(tb.fontFamily, tb.fontStyle); diff --git a/vtm/src/org/oscim/tiling/source/bitmap/BitmapTileSource.java b/vtm/src/org/oscim/tiling/source/bitmap/BitmapTileSource.java index b932c824..5fe51c1e 100644 --- a/vtm/src/org/oscim/tiling/source/bitmap/BitmapTileSource.java +++ b/vtm/src/org/oscim/tiling/source/bitmap/BitmapTileSource.java @@ -72,7 +72,7 @@ public class BitmapTileSource extends UrlTileSource { public boolean decode(Tile tile, ITileDataSink sink, InputStream is) throws IOException { - Bitmap bitmap = CanvasAdapter.g.decodeBitmap(is); + Bitmap bitmap = CanvasAdapter.decodeBitmap(is); if (!bitmap.isValid()) { log.debug("{} invalid bitmap", tile); return false;