package com.openvehicles.OVMS;
import java.util.ArrayList;
import java.util.Iterator;
import android.app.AlertDialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.util.Log;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;
public final class Utilities {
public static GeoPoint GetCarGeopoint(double paramDouble1,
double paramDouble2) {
return new GeoPoint((int) (paramDouble1 * 1000000.0D),
(int) (paramDouble2 * 1000000.0D));
}
public static GeoPoint GetCarGeopoint(CarData paramCarData) {
return new GeoPoint((int) (1000000.0D * paramCarData.Data_Latitude),
(int) (1000000.0D * paramCarData.Data_Longitude));
}
public static double GetDistanceBetweenCoordinatesKM(double paramDouble1,
double paramDouble2, double paramDouble3, double paramDouble4) {
double d1 = Math.toRadians(paramDouble3 - paramDouble1);
double d2 = Math.toRadians(paramDouble4 - paramDouble2);
double d3 = Math.toRadians(paramDouble1);
double d4 = Math.toRadians(paramDouble3);
double d5 = Math.sin(d1 / 2.0D) * Math.sin(d1 / 2.0D)
+ Math.sin(d2 / 2.0D) * Math.sin(d2 / 2.0D) * Math.cos(d3)
* Math.cos(d4);
return 2.0D * Math.atan2(Math.sqrt(d5), Math.sqrt(1.0D - d5)) * 6371;
}
public static Bitmap GetRotatedDirectionalMarker(Bitmap paramBitmap,
float paramFloat) {
Bitmap localBitmap = paramBitmap.copy(Bitmap.Config.ARGB_8888, true);
localBitmap.eraseColor(0);
Canvas localCanvas = new Canvas(localBitmap);
Matrix localMatrix = new Matrix();
localMatrix.setRotate(paramFloat, localCanvas.getWidth() / 2,
localCanvas.getHeight() / 2);
localCanvas.drawBitmap(paramBitmap, localMatrix, null);
return localBitmap;
}
public static Bitmap GetScaledBatteryOverlay(int paramInt,
Bitmap paramBitmap) {
Bitmap localBitmap = null;
if (paramBitmap == null)
Log.d("OVMS", "!!! Battery overlay resource not found !!!");
while (true) {
return localBitmap;
if (paramInt > 0) {
Matrix localMatrix = new Matrix();
localMatrix.postScale(paramInt / 100.0F, 1.0F);
localBitmap = Bitmap.createBitmap(paramBitmap, 0, 0,
paramBitmap.getWidth(), paramBitmap.getHeight(),
localMatrix, false);
}
}
}
public static class CarMarker extends OverlayItem {
public int Direction;
public CarMarker(GeoPoint paramGeoPoint, String paramString1,
String paramString2, int paramInt) {
super(paramString1, paramString2);
this.Direction = paramInt;
}
}
public static class CarMarkerOverlay extends ItemizedOverlay<OverlayItem> {
private Bitmap DirectionalMarker;
private int LABEL_SHADOW_XY;
private ArrayList<Utilities.OnGroupCarTappedListener> _listeners = new ArrayList();
private Context mContext;
private int mLabelTextSize;
private ArrayList<OverlayItem> mOverlays = new ArrayList();
public CarMarkerOverlay(Drawable paramDrawable, int paramInt1,
Context paramContext, Bitmap paramBitmap, int paramInt2) {
super();
this.mContext = paramContext;
this.mLabelTextSize = paramInt1;
this.DirectionalMarker = paramBitmap;
this.LABEL_SHADOW_XY = paramInt2;
}
/** @deprecated */
private void fireGroupCarTappedEvent(String paramString) {
try {
Iterator localIterator = this._listeners.iterator();
while (true) {
boolean bool = localIterator.hasNext();
if (!bool)
return;
((Utilities.OnGroupCarTappedListener) localIterator.next())
.OnGroupCarTapped(paramString);
}
} finally {
}
}
/** @deprecated */
public void addOnGroupCarTappedListener(Utilities.OnGroupCarTappedListener paramOnGroupCarTappedListener)
{
try
{
this._listeners.add(paramOnGroupCarTappedListener);
return;
}
finally
{
localObject = finally;
throw localObject;
}
}
public void addOverlay(OverlayItem paramOverlayItem) {
this.mOverlays.add(paramOverlayItem);
populate();
}
public void clearItems() {
this.mOverlays.clear();
}
protected OverlayItem createItem(int paramInt) {
return (OverlayItem) this.mOverlays.get(paramInt);
}
public void draw(Canvas paramCanvas, MapView paramMapView,
boolean paramBoolean) {
super.draw(paramCanvas, paramMapView, paramBoolean);
int i = 0;
if (i >= this.mOverlays.size())
return;
Utilities.CarMarker localCarMarker = (Utilities.CarMarker) this.mOverlays
.get(i);
GeoPoint localGeoPoint = localCarMarker.getPoint();
Point localPoint = new Point();
paramMapView.getProjection().toPixels(localGeoPoint, localPoint);
Paint localPaint = new Paint();
localPaint.setAntiAlias(true);
localPaint.setTextAlign(Paint.Align.CENTER);
localPaint.setTextSize(this.mLabelTextSize);
if (paramBoolean) {
localPaint.setARGB(100, 0, 0, 0);
paramCanvas.drawText(localCarMarker.getTitle(), localPoint.x
+ this.LABEL_SHADOW_XY, -32 + localPoint.y
+ this.LABEL_SHADOW_XY, localPaint);
}
while (true) {
i++;
break;
localPaint.setARGB(255, 0, 0, 0);
paramCanvas.drawText(localCarMarker.getTitle(), localPoint.x,
-32 + localPoint.y, localPaint);
paramCanvas.drawBitmap(Utilities.GetRotatedDirectionalMarker(
this.DirectionalMarker, localCarMarker.Direction), -55
+ localPoint.x, -75 + localPoint.y, localPaint);
}
}
protected boolean onTap(int paramInt) {
OverlayItem localOverlayItem = (OverlayItem) this.mOverlays
.get(paramInt);
if (localOverlayItem.getSnippet().length() > 0) {
AlertDialog.Builder localBuilder = new AlertDialog.Builder(
this.mContext);
localBuilder.setTitle(localOverlayItem.getTitle());
localBuilder.setMessage(localOverlayItem.getSnippet());
localBuilder.show();
}
while (true) {
return true;
fireGroupCarTappedEvent(localOverlayItem.getTitle());
}
}
/** @deprecated */
public void removeOnGroupCarTappedListener(Utilities.OnGroupCarTappedListener paramOnGroupCarTappedListener)
{
try
{
this._listeners.remove(paramOnGroupCarTappedListener);
return;
}
finally
{
localObject = finally;
throw localObject;
}
}
public void removeOverlayAt(int paramInt) {
this.mOverlays.remove(paramInt);
}
public void setOverlay(int paramInt, OverlayItem paramOverlayItem) {
this.mOverlays.set(paramInt, paramOverlayItem);
populate();
}
public int size() {
return this.mOverlays.size();
}
}
public static abstract interface OnGroupCarTappedListener {
public abstract void OnGroupCarTapped(String paramString);
}
}