From 77cf4e7b8f5c4625b68adf5c8c9c21acaa9d9b3d Mon Sep 17 00:00:00 2001 From: Emux Date: Tue, 26 Jul 2016 19:16:53 +0300 Subject: [PATCH] vtm-android & vtm-android-gdx commons, closes #97 --- .../res/drawable-hdpi/ic_launcher.png | Bin 3437 -> 0 bytes .../res/drawable-ldpi/ic_launcher.png | Bin 1652 -> 0 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 2216 -> 0 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 4591 -> 0 bytes .../drawable/ic_launcher.png} | Bin vtm-android-gdx/build.gradle | 2 +- .../res/drawable-hdpi/ic_launcher.png | Bin 4147 -> 0 bytes .../res/drawable-ldpi/ic_launcher.png | Bin 1723 -> 0 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 2574 -> 0 bytes vtm-android-gdx/res/drawable/ic_launcher.png | Bin 0 -> 42193 bytes vtm-android-gdx/res/values/strings.xml | 4 +- .../oscim/android/canvas/AndroidBitmap.java | 120 ---------------- .../oscim/android/canvas/AndroidCanvas.java | 51 ------- .../oscim/android/canvas/AndroidGraphics.java | 135 ------------------ .../oscim/android/canvas/AndroidPaint.java | 125 ---------------- .../android/canvas/AndroidSvgBitmap.java | 86 ----------- 16 files changed, 3 insertions(+), 520 deletions(-) delete mode 100644 vtm-android-example/res/drawable-hdpi/ic_launcher.png delete mode 100644 vtm-android-example/res/drawable-ldpi/ic_launcher.png delete mode 100644 vtm-android-example/res/drawable-mdpi/ic_launcher.png delete mode 100644 vtm-android-example/res/drawable-xhdpi/ic_launcher.png rename vtm-android-example/{ic_launcher-web.png => res/drawable/ic_launcher.png} (100%) delete mode 100644 vtm-android-gdx/res/drawable-hdpi/ic_launcher.png delete mode 100644 vtm-android-gdx/res/drawable-ldpi/ic_launcher.png delete mode 100644 vtm-android-gdx/res/drawable-mdpi/ic_launcher.png create mode 100644 vtm-android-gdx/res/drawable/ic_launcher.png delete mode 100644 vtm-android-gdx/src/org/oscim/android/canvas/AndroidBitmap.java delete mode 100644 vtm-android-gdx/src/org/oscim/android/canvas/AndroidCanvas.java delete mode 100644 vtm-android-gdx/src/org/oscim/android/canvas/AndroidGraphics.java delete mode 100644 vtm-android-gdx/src/org/oscim/android/canvas/AndroidPaint.java delete mode 100644 vtm-android-gdx/src/org/oscim/android/canvas/AndroidSvgBitmap.java diff --git a/vtm-android-example/res/drawable-hdpi/ic_launcher.png b/vtm-android-example/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index 6a0db8b6e1f15ee592bc80ce418ee04453eedf9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3437 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 diff --git a/vtm-android-example/res/drawable-xhdpi/ic_launcher.png b/vtm-android-example/res/drawable-xhdpi/ic_launcher.png deleted file mode 100644 index 436ec1cc2d3be22d0fbaa5d0867ace28c4e87399..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4591 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 Z=l_*8DYSXK3$g$J002ovPDHLkV1j?dsM!Dj diff --git a/vtm-android-example/ic_launcher-web.png b/vtm-android-example/res/drawable/ic_launcher.png similarity index 100% rename from vtm-android-example/ic_launcher-web.png rename to vtm-android-example/res/drawable/ic_launcher.png diff --git a/vtm-android-gdx/build.gradle b/vtm-android-gdx/build.gradle index 8faed494..14f8666a 100644 --- a/vtm-android-gdx/build.gradle +++ b/vtm-android-gdx/build.gradle @@ -2,9 +2,9 @@ apply plugin: 'com.android.application' apply plugin: 'com.github.dcendents.android-maven' dependencies { + compile project(':vtm-android') compile project(':vtm-gdx') compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" - compile 'com.caverock:androidsvg:1.2.2-beta-1' compile 'com.noveogroup.android:android-logger:1.3.6' } diff --git a/vtm-android-gdx/res/drawable-hdpi/ic_launcher.png b/vtm-android-gdx/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index 8074c4c571b8cd19e27f4ee5545df367420686d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4147 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 diff --git a/vtm-android-gdx/res/drawable-ldpi/ic_launcher.png b/vtm-android-gdx/res/drawable-ldpi/ic_launcher.png deleted file mode 100644 index 1095584ec21f71cd0afc9e0993aa2209671b590c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1723 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 - VtmGdx - \ No newline at end of file + VTM GDX + diff --git a/vtm-android-gdx/src/org/oscim/android/canvas/AndroidBitmap.java b/vtm-android-gdx/src/org/oscim/android/canvas/AndroidBitmap.java deleted file mode 100644 index 6b7b9b48..00000000 --- a/vtm-android-gdx/src/org/oscim/android/canvas/AndroidBitmap.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright 2013 Hannes Janetzek - * Copyright 2016 Longri - * Copyright 2016 devemux86 - * - * 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.android.canvas; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.opengl.GLES20; -import android.opengl.GLUtils; - -import org.oscim.utils.IOUtils; - -import java.io.ByteArrayOutputStream; -import java.io.InputStream; - -import static android.graphics.Bitmap.Config.ARGB_8888; - -public class AndroidBitmap implements org.oscim.backend.canvas.Bitmap { - final Bitmap mBitmap; - - public AndroidBitmap(InputStream inputStream) { - Bitmap bitmap = BitmapFactory.decodeStream(inputStream); - try { - GLUtils.getType(bitmap); - } catch (IllegalArgumentException e) { - bitmap = bitmap.copy(ARGB_8888, false); - } - mBitmap = bitmap; - } - - @Override - public boolean isValid() { - return mBitmap != null; - } - - /** - * @param format ignored always ARGB8888 - */ - public AndroidBitmap(int width, int height, int format) { - mBitmap = android.graphics.Bitmap - .createBitmap(width, height, ARGB_8888); - } - - public AndroidBitmap(android.graphics.Bitmap bitmap) { - mBitmap = bitmap; - } - - @Override - public int getWidth() { - return mBitmap.getWidth(); - } - - @Override - public int getHeight() { - return mBitmap.getHeight(); - } - - @Override - public int[] getPixels() { - int width = getWidth(); - int height = getHeight(); - int[] colors = new int[width * height]; - mBitmap.getPixels(colors, 0, width, 0, 0, width, height); - return colors; - } - - @Override - public void eraseColor(int color) { - //int a = android.graphics.Color.TRANSPARENT; - mBitmap.eraseColor(color); - } - - @Override - public void uploadToTexture(boolean replace) { - int format = GLUtils.getInternalFormat(mBitmap); - int type = GLUtils.getType(mBitmap); - - if (replace) - GLUtils.texSubImage2D(GLES20.GL_TEXTURE_2D, 0, 0, 0, - mBitmap, format, type); - else - GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, format, - mBitmap, type, 0); - } - - @Override - public void recycle() { - if (mBitmap == null) - return; - - mBitmap.recycle(); - } - - @Override - public byte[] getPngEncodedData() { - ByteArrayOutputStream outputStream = null; - try { - outputStream = new ByteArrayOutputStream(); - mBitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream); - return outputStream.toByteArray(); - } finally { - IOUtils.closeQuietly(outputStream); - } - } -} diff --git a/vtm-android-gdx/src/org/oscim/android/canvas/AndroidCanvas.java b/vtm-android-gdx/src/org/oscim/android/canvas/AndroidCanvas.java deleted file mode 100644 index 2ae0e4c2..00000000 --- a/vtm-android-gdx/src/org/oscim/android/canvas/AndroidCanvas.java +++ /dev/null @@ -1,51 +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.android.canvas; - -import org.oscim.backend.canvas.Bitmap; -import org.oscim.backend.canvas.Canvas; -import org.oscim.backend.canvas.Paint; - -public class AndroidCanvas implements Canvas { - final android.graphics.Canvas canvas; - - public AndroidCanvas() { - canvas = new android.graphics.Canvas(); - } - - @Override - public void setBitmap(Bitmap bitmap) { - canvas.setBitmap(((AndroidBitmap) bitmap).mBitmap); - } - - @Override - public void drawText(String string, float x, float y, Paint fill, Paint stroke) { - if (string != null) { - if (stroke != null) - canvas.drawText(string, x, y, ((AndroidPaint) stroke).mPaint); - - canvas.drawText(string, x, y, ((AndroidPaint) fill).mPaint); - } - } - - @Override - public void drawBitmap(Bitmap bitmap, float x, float y) { - canvas.drawBitmap(((AndroidBitmap) bitmap).mBitmap, x, y, null); - - } - -} diff --git a/vtm-android-gdx/src/org/oscim/android/canvas/AndroidGraphics.java b/vtm-android-gdx/src/org/oscim/android/canvas/AndroidGraphics.java deleted file mode 100644 index 5165e7a8..00000000 --- a/vtm-android-gdx/src/org/oscim/android/canvas/AndroidGraphics.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright 2010, 2011, 2012 mapsforge.org - * Copyright 2016 devemux86 - * - * 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.android.canvas; - -import android.content.res.Resources; -import android.graphics.Bitmap.Config; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; - -import org.oscim.backend.CanvasAdapter; -import org.oscim.backend.canvas.Bitmap; -import org.oscim.backend.canvas.Canvas; -import org.oscim.backend.canvas.Paint; -import org.oscim.layers.marker.MarkerItem.HotspotPlace; -import org.oscim.layers.marker.MarkerSymbol; - -import java.io.IOException; -import java.io.InputStream; - -public final class AndroidGraphics extends CanvasAdapter { - - public static void init() { - CanvasAdapter.init(new AndroidGraphics()); - } - - public static android.graphics.Paint getAndroidPaint(Paint paint) { - return ((AndroidPaint) paint).mPaint; - } - - public static android.graphics.Bitmap getBitmap(Bitmap bitmap) { - return ((AndroidBitmap) bitmap).mBitmap; - } - - private AndroidGraphics() { - // do nothing - } - - @Override - public Bitmap decodeBitmapImpl(InputStream inputStream) { - return new AndroidBitmap(inputStream); - } - - @Override - public Bitmap decodeSvgBitmapImpl(InputStream inputStream) { - try { - return new AndroidSvgBitmap(inputStream); - } catch (IOException e) { - e.printStackTrace(); - return null; - } - } - - @Override - public Bitmap loadBitmapAssetImpl(String relativePathPrefix, String src) { - try { - return createBitmap(relativePathPrefix, src); - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - @Override - public Paint newPaintImpl() { - return new AndroidPaint(); - } - - @Override - public Bitmap newBitmapImpl(int width, int height, int format) { - return new AndroidBitmap(width, height, format); - } - - @Override - public Canvas newCanvasImpl() { - return new AndroidCanvas(); - } - - //------------------------------------- - public static Bitmap drawableToBitmap(Drawable drawable) { - if (drawable instanceof BitmapDrawable) { - return new AndroidBitmap(((BitmapDrawable) drawable).getBitmap()); - } - - android.graphics.Bitmap bitmap = android.graphics.Bitmap - .createBitmap(drawable.getIntrinsicWidth(), - drawable.getIntrinsicHeight(), - Config.ARGB_8888); - - android.graphics.Canvas canvas = new android.graphics.Canvas(bitmap); - drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); - drawable.draw(canvas); - - return new AndroidBitmap(bitmap); - } - - public static Bitmap drawableToBitmap(Resources res, int resId) { - return new AndroidBitmap(res.openRawResource(resId)); - } - - /** - * @deprecated - */ - public static MarkerSymbol makeMarker(Drawable drawable, HotspotPlace place) { - if (place == null) - place = HotspotPlace.CENTER; - - return new MarkerSymbol(drawableToBitmap(drawable), place); - } - - /** - * @deprecated - */ - public static MarkerSymbol makeMarker(Resources res, int resId, HotspotPlace place) { - if (place == null) - place = HotspotPlace.CENTER; - - InputStream in = res.openRawResource(resId); - return new MarkerSymbol(new AndroidBitmap(in), place); - } -} diff --git a/vtm-android-gdx/src/org/oscim/android/canvas/AndroidPaint.java b/vtm-android-gdx/src/org/oscim/android/canvas/AndroidPaint.java deleted file mode 100644 index e574328e..00000000 --- a/vtm-android-gdx/src/org/oscim/android/canvas/AndroidPaint.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2010, 2011, 2012 mapsforge.org - * - * 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.android.canvas; - -import android.graphics.Paint.FontMetrics; -import android.graphics.Typeface; - -import org.oscim.backend.canvas.Paint; - -class AndroidPaint implements Paint { - private static int getStyle(org.oscim.backend.canvas.Paint.FontStyle fontStyle) { - switch (fontStyle) { - case BOLD: - return 1; - case BOLD_ITALIC: - return 3; - case ITALIC: - return 2; - case NORMAL: - return 0; - } - - throw new IllegalArgumentException("unknown font style: " + fontStyle); - } - - private static Typeface getTypeface(org.oscim.backend.canvas.Paint.FontFamily fontFamily) { - switch (fontFamily) { - case DEFAULT: - return Typeface.DEFAULT; - case DEFAULT_BOLD: - return Typeface.DEFAULT_BOLD; - case MONOSPACE: - return Typeface.MONOSPACE; - case SANS_SERIF: - return Typeface.SANS_SERIF; - case SERIF: - return Typeface.SERIF; - } - - throw new IllegalArgumentException("unknown font family: " + fontFamily); - } - - final android.graphics.Paint mPaint; - - AndroidPaint() { - mPaint = new android.graphics.Paint( - android.graphics.Paint.ANTI_ALIAS_FLAG); - } - - @Override - public int getColor() { - return mPaint.getColor(); - } - - @Override - public void setColor(int color) { - mPaint.setColor(color); - } - - @Override - public void setStrokeCap(Cap cap) { - android.graphics.Paint.Cap androidCap = android.graphics.Paint.Cap - .valueOf(cap.name()); - mPaint.setStrokeCap(androidCap); - } - - @Override - public void setStrokeWidth(float width) { - mPaint.setStrokeWidth(width); - } - - @Override - public void setStyle(Style style) { - mPaint.setStyle(android.graphics.Paint.Style.valueOf(style.name())); - } - - @Override - public void setTextAlign(Align align) { - //mPaint.setTextAlign(android.graphics.Paint.Align.valueOf(align.name())); - } - - @Override - public void setTextSize(float textSize) { - mPaint.setTextSize(textSize); - } - - @Override - public void setTypeface(FontFamily fontFamily, FontStyle fontStyle) { - Typeface typeface = Typeface.create(getTypeface(fontFamily), - getStyle(fontStyle)); - mPaint.setTypeface(typeface); - } - - @Override - public float measureText(String text) { - return mPaint.measureText(text); - } - - @Override - public float getFontHeight() { - FontMetrics fm = mPaint.getFontMetrics(); - return (float) Math.ceil(Math.abs(fm.bottom) + Math.abs(fm.top)); - } - - @Override - public float getFontDescent() { - FontMetrics fm = mPaint.getFontMetrics(); - // //fontDescent = (float) Math.ceil(Math.abs(fm.descent)); - return Math.abs(fm.bottom); - } -} diff --git a/vtm-android-gdx/src/org/oscim/android/canvas/AndroidSvgBitmap.java b/vtm-android-gdx/src/org/oscim/android/canvas/AndroidSvgBitmap.java deleted file mode 100644 index ac4c3777..00000000 --- a/vtm-android-gdx/src/org/oscim/android/canvas/AndroidSvgBitmap.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2016 devemux86 - * - * 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.android.canvas; - -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Picture; -import android.graphics.RectF; - -import com.caverock.androidsvg.SVG; - -import org.oscim.backend.CanvasAdapter; - -import java.io.IOException; -import java.io.InputStream; - -public class AndroidSvgBitmap extends AndroidBitmap { - /** - * Default size is 20x20px (400px) at baseline mdpi (160dpi). - */ - public static float DEFAULT_SIZE = 400f; - - public static android.graphics.Bitmap getResourceBitmap(InputStream inputStream, float scaleFactor, float defaultSize, int width, int height, int percent) throws IOException { - try { - SVG svg = SVG.getFromInputStream(inputStream); - Picture picture = svg.renderToPicture(); - - double scale = scaleFactor / Math.sqrt((picture.getHeight() * picture.getWidth()) / defaultSize); - - float bitmapWidth = (float) (picture.getWidth() * scale); - float bitmapHeight = (float) (picture.getHeight() * scale); - - float aspectRatio = (1f * picture.getWidth()) / picture.getHeight(); - - if (width != 0 && height != 0) { - // both width and height set, override any other setting - bitmapWidth = width; - bitmapHeight = height; - } else if (width == 0 && height != 0) { - // only width set, calculate from aspect ratio - bitmapWidth = height * aspectRatio; - bitmapHeight = height; - } else if (width != 0 && height == 0) { - // only height set, calculate from aspect ratio - bitmapHeight = width / aspectRatio; - bitmapWidth = width; - } - - if (percent != 100) { - bitmapWidth *= percent / 100f; - bitmapHeight *= percent / 100f; - } - - android.graphics.Bitmap bitmap = android.graphics.Bitmap.createBitmap((int) Math.ceil(bitmapWidth), - (int) Math.ceil(bitmapHeight), Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - canvas.drawPicture(picture, new RectF(0, 0, bitmapWidth, bitmapHeight)); - - return bitmap; - } catch (Exception e) { - throw new IOException(e); - } - } - - private static android.graphics.Bitmap getResourceBitmapImpl(InputStream inputStream) throws IOException { - synchronized (SVG.getVersion()) { - return getResourceBitmap(inputStream, CanvasAdapter.dpi / 160, DEFAULT_SIZE, 0, 0, 100); - } - } - - public AndroidSvgBitmap(InputStream inputStream) throws IOException { - super(getResourceBitmapImpl(inputStream)); - } -}