a60146c082aa48c69e9b93ab17c44454e44c60bf
[platform/core/location/maps-plugin-here.git] / inc / engine / common / GeoBoundingCircle.h
1 /*
2  * Copyright (C) 2013 HERE Global B.V. All rights reserved.
3  * This software, including documentation, is protected by copyright controlled by
4  * HERE Global B.V. (“Software”). All rights are reserved. Copying, including reproducing,
5  * storing, adapting or translating, any or all of this material requires the prior
6  * written consent of HERE Global B.V. You may use this
7  * Software in accordance with the terms and conditions defined in the
8  * HERE Location Platform Services Terms and Conditions, available at
9  * http://developer.here.com/terms-conditions-base
10  *
11  * As an additional permission to the above, you may distribute Software,
12  * in object code format as part of an Application, according to, and subject to, terms and
13  * conditions defined in the Tizen Software Development kit (“SDK”) License Agreement.
14  * You may distribute such object code format Application under terms of your choice,
15  * provided that the header and source files of the Software have not been modified.
16  */
17
18 #ifndef GEOBOUNDINGCIRCLE_H
19 #define GEOBOUNDINGCIRCLE_H
20
21 #include "common/HereMaps_global.h"
22 #include "common/GeoBoundingArea.h"
23
24 HERE_MAPS_BEGIN_NAMESPACE
25
26 class GeoCoordinates;
27
28 /**
29  * This class encapsulates a bounding circle defined in terms of the geographic
30  * coordinates of its center and a radius. 
31  */
32 class EXPORT_API GeoBoundingCircle : public GeoBoundingArea
33 {
34 public:
35     /**
36      * This method is the default constructor. 
37      */
38     GeoBoundingCircle();
39
40     /**
41      * This method is a copy constructor. 
42      * 
43      * @param rRhs A constant reference to an object whose contents are to be
44      *        used to set the properties of a new instance of this class. 
45      */
46     GeoBoundingCircle(const GeoBoundingCircle& rRhs);
47
48     /**
49      * This method is a constructor that creates a new instance, using the
50      * coordinates of the center of the circle and the length of its radius.
51      * 
52      * @param rCenter A constant reference to an object providing the
53      *        geographic coordinates of the center of the given
54      *        bounding circle.
55      * 
56      * @param rRadius A value providing the length of the radius in meters.
57      */
58     GeoBoundingCircle(const GeoCoordinates& rCenter, double rRadius);
59
60     /**
61      * This method is the destructor. 
62      */
63     ~GeoBoundingCircle();
64
65     /**
66      * This is the assignment operator.
67      * 
68      * @param rRhs A constant reference to the right-hand object whose contents
69      *        are to be copied to the given instance of the class.
70      * 
71      * @return A reference to the given instance of the class after the
72      *        assignment. 
73      */
74     GeoBoundingCircle& operator = (const GeoBoundingCircle& rRhs);
75
76     /**
77      * This method sets the coordinates of the center of the given
78      * instance of <code>GeoBoundingCircle</code>.
79      * 
80      * @param A constant reference to an object containing the new geographic
81      *        coordinates of the center of the bounding circle.
82      */
83     void SetCenter(const GeoCoordinates& rCenter);
84
85     /**
86      * This method retrieves the coordinates of the center of the given
87      * instance of <code>GeoBoundingCircle</code>.
88      * 
89      * @return A constant reference to an object containing the geographic
90      *        coordinates of the center of the bounding circle.
91      */
92     const GeoCoordinates& GetCenter() const;
93
94     /**
95      * This method sets the radius of the given
96      * instance of <code>GeoBoundingCircle</code>.
97      * 
98      * @param rRadius A value providing the length of the radius in meters.
99      */
100     void SetRadius(double aRadius);
101
102     /**
103      * This method retrieves the radius of the given
104      * instance of <code>GeoBoundingCircle</code>.
105      * 
106      * @return A value providing the length of the radius in meters.
107      */
108     double GetRadius() const;
109
110
111     /**
112      * This method retrieves a value indicating the area type applicable to the
113      * given object.
114      * 
115      * @return A value indicating the area type. 
116      */
117     AreaType GetType() const;
118
119     /**
120      * This method checks if the given bounding circle contains the location
121      * defined by the object provided by the caller.
122      * 
123      * @param rCoordinate An object containing the geographic coordinates of the
124      *        location to check. 
125      * 
126      * @return <code>true</code> if the location lies within the given bounding
127      *        box, otherwise <code>false</code>. 
128      */
129     bool Contains(const GeoCoordinates& rCoordinate) const;
130
131 private:
132     class GeoBoundingCircleImpl;
133     GeoBoundingCircleImpl* m_pImpl;
134 };
135
136 HERE_MAPS_END_NAMESPACE
137
138 #endif /* GEOBOUNDINGCIRCLE_H */