--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/epoc32/include/mw/lbtgeocircle.h Tue Mar 16 16:12:26 2010 +0000
@@ -0,0 +1,231 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Geographical circular area class definition.
+*
+*/
+
+
+#ifndef LBTGEOCIRCLE_H
+#define LBTGEOCIRCLE_H
+
+#include <lbtgeoareabase.h>
+#include <lbsposition.h>
+
+/**
+ * Geographical circular area.
+ *
+ * A geographical circular area is defined by the center of the
+ * circle and the radius. The radius is in meters. The altitude in
+ * the center's coordinate is always ignored. It is optionally also possible
+ * to provide additional geographical area information of CLbtGeoCell
+ * type. Providing additional cell information would enable further
+ * optimization by reducing the number of GPS fixes required to
+ * supervise the trigger, there by, reducing the impact on battery
+ * consumption. Triggers would, initially, be monitored using the cell
+ * information provided. GPS would be used to check the coordinates
+ * only when the mobile terminal reaches the cell / cells specified.
+ * If a particular location is served by multiple cells, then it is
+ * important to mention all available cell information. If not, there
+ * is a possibility of missing triggers even when the mobile terminal
+ * reaches the location specified by the coordinates.
+ *
+ * @lib lbt.lib
+ *
+ * @since S60 5.1
+ */
+class CLbtGeoCircle : public CLbtGeoAreaBase
+ {
+public:
+ /**
+ * Allocates and constructs a new geographical circular area object.
+ * In the returned object, the latitude, longitude and altitude
+ * are set to NaN, and the radius is set to NaN.
+ *
+ * @return Pointer to the new geographical circular area object.
+ */
+ IMPORT_C static CLbtGeoCircle* NewL();
+
+ /**
+ * Constructs a new geographical circular area object and pushes
+ * it onto cleanup stack.
+ * In the returned object, the latitude, longitude and altitude
+ * are set to NaN, and the radius is set to NaN.
+ *
+ * @return Pointer to the new geographical circular area object.
+ */
+ IMPORT_C static CLbtGeoCircle* NewLC();
+
+ /**
+ * Allocates and constructs a new geographical circular area object
+ * with specified center coordinate and radius.
+ *
+ * @panic ELbtErrArgument If the input radius is negative.
+ *
+ * @param[in] aCenter The coordinate of the center.
+ * @param[in] aRadiusInMeters The radius of the circle in meters.
+ * @return Pointer to the new geographical circle area object.
+ */
+ IMPORT_C static CLbtGeoCircle* NewL(
+ const TCoordinate& aCenter,
+ TReal aRadiusInMeters );
+
+ /**
+ * Allocates and constructs a new geographical circular area object
+ * with specified center coordinate and radius. The constructed
+ * object is pushed onto cleanup stack.
+ *
+ * @panic ELbtErrArgument If the input radius is negative.
+ *
+ * @param[in] aCenter The coordinate of the center.
+ * @param[in] aRadiusInMeters The radius of the circle in meters.
+ * @return Pointer to the new geographical circle area object.
+ */
+ IMPORT_C static CLbtGeoCircle* NewLC(
+ const TCoordinate& aCenter,
+ TReal aRadiusInMeters );
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CLbtGeoCircle();
+
+ /**
+ * Returns the type of geographical area, CLbtGeoAreaBase::ECircle
+ *
+ * @return CLbtGeoAreaBase::ECircle.
+ */
+ virtual TGeoAreaType Type() const;
+
+ /**
+ * Gets the center of the area. If the center has not been set
+ * before, the returned coordinate has latitude, longitude and
+ * altitude set to NaN,
+ *
+ * @return The center of the area.
+ */
+ virtual TCoordinate Center() const;
+
+ /**
+ * Sets the center of the circle.
+ *
+ * @param[in] aCenter The coordinate of the center.
+ */
+ IMPORT_C void SetCenter(const TCoordinate& aCenter);
+
+ /**
+ * Gets the radius of the circle. If the radius has not been
+ * set before, the returned value is NaN.
+ *
+ * @return The radius of the circle in meters.
+ */
+ IMPORT_C TReal Radius() const;
+
+ /**
+ * Sets the radius of the circle.
+ *
+ * @panic ELbtErrArgument If the input radius is negative.
+ *
+ * @param[in] aRadiusInMeters The radius of the circle in meters.
+ */
+ IMPORT_C void SetRadius(TReal aRadiusInMeters);
+
+ /**
+ * Gets geographical area information. The following method is currently not
+ * supported. This method will only return empty array when invoked.
+ *
+ * @return An array of geographical area instances
+ */
+ IMPORT_C RPointerArray< CLbtGeoAreaBase >& GetAdditionalGeoAreaInfo();
+
+ /**
+ * Sets additional geographical area information. The geographical
+ * information provided can only be of CLbtGeoCell type. This is optional
+ * and clients may specify this information when available.The following method
+ * is currently not supported.
+ *
+ * @panic ELbtErrArgument if argument passed is NULL or if the argument
+ * passed is of any other type other than CLbtGeoCell.
+ *
+ * @param[in] aGeoArea A pointer representing a geographical area.
+ */
+ IMPORT_C void SetAdditionalGeoAreaInfo(CLbtGeoAreaBase* aGeoArea);
+
+ /**
+ * Validates cell information.
+ *
+ * @leave KErrArgument if any of the mandatory parameters have not
+ * been specified.
+ */
+ void ValidateCircleInformationL();
+
+protected:
+
+ /**
+ * Externalize method that subclass must implement.
+ * @param[in] aStream Stream to which the object should be externalized.
+ */
+ virtual void DoExternalizeL(RWriteStream& aStream) const ;
+
+ /**
+ * Internalize method that subclass must implement.
+ * @param[in] aStream Stream from which the object should be internalized.
+ */
+ virtual void DoInternalizeL(RReadStream& aStream) ;
+
+private:
+ /**
+ * Default constructor
+ */
+ CLbtGeoCircle();
+
+ /**
+ * By default, prohibit copy constructor
+ */
+ CLbtGeoCircle(const CLbtGeoCircle&);
+
+ /**
+ * Prohibit assigment operator
+ */
+ CLbtGeoCircle& operator= (const CLbtGeoCircle&);
+
+ /**
+ * Symbian 2nd phase constructor
+ */
+ void ConstructL();
+
+ /**
+ * Symbian 2nd phase constructor
+ */
+ void ConstructL(TCoordinate aCenter,TReal aRadius);
+
+
+private:
+ /**
+ * The center of the circle.
+ */
+ TCoordinate iCenter;
+
+ /**
+ * Radius of the circle in meters.
+ */
+ TReal iRadius;
+
+ /**
+ * An array of instances representing additional geographical area
+ * information
+ */
+ RPointerArray< CLbtGeoAreaBase > iAdditionalGeoAreaInfo;
+ };
+
+#endif // LBTGEOCIRCLE_H