package org.cowboycoders.cyclismo.util; /* * Copyright 2013-2014 Ludwig M Brinckmann * Copyright 2014, 2015 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 <http://www.gnu.org/licenses/>. */ import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Build; import android.view.View; import android.widget.Toast; import org.mapsforge.core.graphics.Bitmap; import org.mapsforge.core.graphics.Paint; import org.mapsforge.core.graphics.Style; import org.mapsforge.core.model.LatLong; import org.mapsforge.core.model.Point; import org.mapsforge.map.android.graphics.AndroidGraphicFactory; import org.mapsforge.map.layer.overlay.Marker; /** * Utility functions that can be used across different mapsforge based * activities. */ public final class MapForgeUtils { /** * Compatibility method. * * @param a * the current activity */ @TargetApi(11) public static void enableHome(Activity a) { if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { // Show the Up button in the action bar. a.getActionBar().setDisplayHomeAsUpEnabled(true); } } /** * Compatibility method. * * @param view * the view to set the background on * @param background * the background */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @SuppressWarnings("deprecation") public static void setBackground(View view, Drawable background) { if (android.os.Build.VERSION.SDK_INT >= 16) { view.setBackground(background); } else { view.setBackgroundDrawable(background); } } public static Marker createMarker(Context c, int resourceIdentifier, LatLong latLong) { Drawable drawable = c.getResources().getDrawable(resourceIdentifier); Bitmap bitmap = AndroidGraphicFactory.convertToBitmap(drawable); return new Marker(latLong, bitmap, 0, -bitmap.getHeight() / 2); } public static Paint createPaint(int color, int strokeWidth, Style style) { Paint paint = AndroidGraphicFactory.INSTANCE.createPaint(); paint.setColor(color); paint.setStrokeWidth(strokeWidth); paint.setStyle(style); return paint; } public static Marker createTappableMarker(final Context c, int resourceIdentifier, LatLong latLong) { Drawable drawable = c.getResources().getDrawable(resourceIdentifier); Bitmap bitmap = AndroidGraphicFactory.convertToBitmap(drawable); bitmap.incrementRefCount(); return new Marker(latLong, bitmap, 0, -bitmap.getHeight() / 2) { @Override public boolean onTap(LatLong geoPoint, Point viewPosition, Point tapPoint) { if (contains(viewPosition, tapPoint)) { Toast.makeText(c, "The Marker was tapped " + geoPoint.toString(), Toast.LENGTH_SHORT).show(); return true; } return false; } }; } public static Bitmap viewToBitmap(Context c, View view) { view.measure(View.MeasureSpec.getSize(view.getMeasuredWidth()), View.MeasureSpec.getSize(view.getMeasuredHeight())); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); view.setDrawingCacheEnabled(true); Drawable drawable = new BitmapDrawable(c.getResources(), android.graphics.Bitmap.createBitmap(view.getDrawingCache())); view.setDrawingCacheEnabled(false); return AndroidGraphicFactory.convertToBitmap(drawable); } private MapForgeUtils() { throw new IllegalStateException(); } }