--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/location/landmarks/src/coordinates.cpp Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,109 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: JNI implementation of Coordinates class
+ *
+*/
+
+
+// INTERNAL INCLUDES
+#include "javax_microedition_location_Coordinates.h"
+#include <lbsposition.h>
+#include "logger.h"
+
+LOCAL_C void CalculateBearingToL(TCoordinate* aSrc, TCoordinate* aDest,
+ TReal32* aBearing)
+{
+ TReal32 bearing;
+ User::LeaveIfError(aSrc->BearingTo(*aDest, bearing));
+ *aBearing = bearing;
+}
+
+/*
+ * Class: javax_microedition_location_Coordinates
+ * Method: _azimuthTo
+ * Signature: (IDDDD)F
+ */
+JNIEXPORT jfloat JNICALL Java_javax_microedition_location_Coordinates__1azimuthTo(
+ JNIEnv* /*aJniEnv*/,
+ jobject /*aPeer*/,
+ jdouble aSrcLatitude,
+ jdouble aSrcLongitude,
+ jdouble aDestLatitude,
+ jdouble aDestLongitude)
+{
+ JELOG2(EJavaLocation);
+
+ TReal32 azimuth = 0.0f;
+
+ TCoordinate src(aSrcLatitude, aSrcLongitude);
+ TCoordinate dest(aDestLatitude, aDestLongitude);
+
+ TRAPD(error, CalculateBearingToL(
+ &src,
+ &dest,
+ &azimuth));
+
+ if (error != KErrNone)
+ {
+ ELOG1(EJavaLocation,
+ "Java_javax_microedition_location_Coordinates__1azimuthTo - error %d", error);
+ }
+
+ return azimuth;
+}
+
+LOCAL_C void CalculateDistanceL(TCoordinate* aSrc, TCoordinate* aDest,
+ TReal32* aDistance)
+{
+ TReal32 distance;
+ User::LeaveIfError(aSrc->Distance(*aDest, distance));
+ *aDistance = distance;
+}
+
+/*
+ * Class: javax_microedition_location_Coordinates
+ * Method: _distance
+ * Signature: (IDDDD)F
+ */
+JNIEXPORT jfloat JNICALL Java_javax_microedition_location_Coordinates__1distance(
+ JNIEnv* /*aJniEnv*/,
+ jobject /*aPeer*/,
+ jdouble aSrcLatitude,
+ jdouble aSrcLongitude,
+ jdouble aDestLatitude,
+ jdouble aDestLongitude)
+{
+ JELOG2(EJavaLocation);
+
+ TReal32 distance = -1.0f;
+
+ TCoordinate src(aSrcLatitude, aSrcLongitude);
+ TCoordinate dest(aDestLatitude, aDestLongitude);
+
+ // TInt error = src->Distance( *dest,distance);
+ TRAPD(error, CalculateDistanceL(
+ &src,
+ &dest,
+ &distance));
+
+ if (error != KErrNone)
+ {
+ ELOG1(EJavaLocation,
+ "Java_javax_microedition_location_Coordinates__1distance - error %d", error);
+ }
+
+ return distance;
+}
+
+// End of file