1 // SPDX-License-Identifier: LGPL-2.1-or-later
2 //
3 // SPDX-FileCopyrightText: 2013 Mayank Madan <maddiemadan@gmail.com>
4 //
5 
6 #include "GeoDataLatLonQuad.h"
7 #include "GeoDataTypes.h"
8 
9 namespace Marble {
10 
11 class GeoDataLatLonQuadPrivate
12 {
13 public:
14     GeoDataCoordinates m_bottomLeft;
15     GeoDataCoordinates m_bottomRight;
16     GeoDataCoordinates m_topRight;
17     GeoDataCoordinates m_topLeft;
18 
19     GeoDataLatLonQuadPrivate();
20 };
21 
GeoDataLatLonQuadPrivate()22 GeoDataLatLonQuadPrivate::GeoDataLatLonQuadPrivate() :
23     m_bottomLeft(),m_bottomRight(),m_topRight(),m_topLeft()
24 {
25     // nothing to do
26 }
27 
GeoDataLatLonQuad()28 GeoDataLatLonQuad::GeoDataLatLonQuad() : GeoDataObject(), d( new GeoDataLatLonQuadPrivate )
29 {
30     // nothing to do
31 }
32 
GeoDataLatLonQuad(const Marble::GeoDataLatLonQuad & other)33 GeoDataLatLonQuad::GeoDataLatLonQuad( const Marble::GeoDataLatLonQuad &other ) :
34     GeoDataObject( other ), d( new GeoDataLatLonQuadPrivate( *other.d ) )
35 {
36     // nothing to do
37 }
38 
operator =(const GeoDataLatLonQuad & other)39 GeoDataLatLonQuad &GeoDataLatLonQuad::operator=( const GeoDataLatLonQuad &other )
40 {
41     *d = *other.d;
42     return *this;
43 }
44 
operator ==(const GeoDataLatLonQuad & other) const45 bool GeoDataLatLonQuad::operator==(const GeoDataLatLonQuad& other) const
46 {
47     return equals( other )
48            && d->m_bottomLeft == other.d->m_bottomLeft
49            && d->m_bottomRight == other.d->m_bottomRight
50            && d->m_topLeft == other.d->m_topLeft
51            && d->m_topRight == other.d->m_topRight;
52 }
53 
operator !=(const GeoDataLatLonQuad & other) const54 bool GeoDataLatLonQuad::operator!=(const GeoDataLatLonQuad& other) const
55 {
56     return !this->operator==(other);
57 }
58 
~GeoDataLatLonQuad()59 GeoDataLatLonQuad::~GeoDataLatLonQuad()
60 {
61     delete d;
62 }
63 
nodeType() const64 const char *GeoDataLatLonQuad::nodeType() const
65 {
66     return GeoDataTypes::GeoDataLatLonQuadType;
67 }
68 
bottomLeftLatitude(GeoDataCoordinates::Unit unit) const69 qreal GeoDataLatLonQuad::bottomLeftLatitude( GeoDataCoordinates::Unit unit ) const
70 {
71     return d->m_bottomLeft.latitude(unit);
72 }
73 
setBottomLeftLatitude(qreal latitude,GeoDataCoordinates::Unit unit)74 void GeoDataLatLonQuad::setBottomLeftLatitude( qreal latitude, GeoDataCoordinates::Unit unit )
75 {
76     d->m_bottomLeft.setLatitude( latitude, unit );
77 }
78 
bottomLeftLongitude(GeoDataCoordinates::Unit unit) const79 qreal GeoDataLatLonQuad::bottomLeftLongitude( GeoDataCoordinates::Unit unit ) const
80 {
81     return d->m_bottomLeft.longitude( unit );
82 }
83 
setBottomLeftLongitude(qreal longitude,GeoDataCoordinates::Unit unit)84 void GeoDataLatLonQuad::setBottomLeftLongitude( qreal longitude, GeoDataCoordinates::Unit unit )
85 {
86     d->m_bottomLeft.setLongitude( longitude, unit );
87 }
88 
bottomRightLatitude(GeoDataCoordinates::Unit unit) const89 qreal GeoDataLatLonQuad::bottomRightLatitude( GeoDataCoordinates::Unit unit ) const
90 {
91     return d->m_bottomRight.latitude( unit );
92 }
93 
setBottomRightLatitude(qreal latitude,GeoDataCoordinates::Unit unit)94 void GeoDataLatLonQuad::setBottomRightLatitude( qreal latitude, GeoDataCoordinates::Unit unit )
95 {
96     d->m_bottomRight.setLatitude( latitude, unit );
97 }
98 
bottomRightLongitude(GeoDataCoordinates::Unit unit) const99 qreal GeoDataLatLonQuad::bottomRightLongitude( GeoDataCoordinates::Unit unit ) const
100 {
101     return d->m_bottomRight.longitude( unit );
102 }
103 
setBottomRightLongitude(qreal longitude,GeoDataCoordinates::Unit unit)104 void GeoDataLatLonQuad::setBottomRightLongitude( qreal longitude, GeoDataCoordinates::Unit unit )
105 {
106     d->m_bottomRight.setLongitude( longitude, unit );
107 }
108 
topRightLatitude(GeoDataCoordinates::Unit unit) const109 qreal GeoDataLatLonQuad::topRightLatitude( GeoDataCoordinates::Unit unit ) const
110 {
111     return d->m_topRight.latitude( unit );
112 }
113 
setTopRightLatitude(qreal latitude,GeoDataCoordinates::Unit unit)114 void GeoDataLatLonQuad::setTopRightLatitude( qreal latitude, GeoDataCoordinates::Unit unit )
115 {
116     d->m_topRight.setLatitude( latitude, unit );
117 }
118 
topRightLongitude(GeoDataCoordinates::Unit unit) const119 qreal GeoDataLatLonQuad::topRightLongitude( GeoDataCoordinates::Unit unit ) const
120 {
121     return d->m_topRight.longitude( unit );
122 }
123 
setTopRightLongitude(qreal longitude,GeoDataCoordinates::Unit unit)124 void GeoDataLatLonQuad::setTopRightLongitude( qreal longitude, GeoDataCoordinates::Unit unit )
125 {
126     d->m_topRight.setLongitude( longitude, unit );
127 }
128 
topLeftLatitude(GeoDataCoordinates::Unit unit) const129 qreal GeoDataLatLonQuad::topLeftLatitude( GeoDataCoordinates::Unit unit ) const
130 {
131     return d->m_topLeft.latitude( unit );
132 }
133 
setTopLeftLatitude(qreal latitude,GeoDataCoordinates::Unit unit)134 void GeoDataLatLonQuad::setTopLeftLatitude( qreal latitude, GeoDataCoordinates::Unit unit )
135 {
136     d->m_topLeft.setLatitude( latitude, unit );
137 }
138 
topLeftLongitude(GeoDataCoordinates::Unit unit) const139 qreal GeoDataLatLonQuad::topLeftLongitude( GeoDataCoordinates::Unit unit ) const
140 {
141     return d->m_topLeft.longitude( unit );
142 }
143 
setTopLeftLongitude(qreal longitude,GeoDataCoordinates::Unit unit)144 void GeoDataLatLonQuad::setTopLeftLongitude( qreal longitude, GeoDataCoordinates::Unit unit )
145 {
146     d->m_topLeft.setLongitude(longitude, unit );
147 }
148 
149 
bottomLeft() const150 GeoDataCoordinates &GeoDataLatLonQuad::bottomLeft() const
151 {
152     return d->m_bottomLeft;
153 }
154 
setBottomLeft(const GeoDataCoordinates & coordinates)155 void GeoDataLatLonQuad::setBottomLeft(const GeoDataCoordinates &coordinates)
156 {
157     d->m_bottomLeft = coordinates;
158 }
bottomRight() const159 GeoDataCoordinates &GeoDataLatLonQuad::bottomRight() const
160 {
161     return d->m_bottomRight;
162 }
163 
setBottomRight(const GeoDataCoordinates & coordinates)164 void GeoDataLatLonQuad::setBottomRight(const GeoDataCoordinates &coordinates)
165 {
166     d->m_bottomRight = coordinates;
167 }
168 
topRight() const169 GeoDataCoordinates &GeoDataLatLonQuad::topRight() const
170 {
171     return d->m_topRight;
172 }
173 
setTopRight(const GeoDataCoordinates & coordinates)174 void GeoDataLatLonQuad::setTopRight(const GeoDataCoordinates &coordinates)
175 {
176     d->m_topRight = coordinates;
177 }
178 
topLeft() const179 GeoDataCoordinates &GeoDataLatLonQuad::topLeft() const
180 {
181     return d->m_topLeft;
182 }
183 
setTopLeft(const GeoDataCoordinates & coordinates)184 void GeoDataLatLonQuad::setTopLeft(const GeoDataCoordinates &coordinates)
185 {
186     d->m_topLeft = coordinates;
187 }
188 
isValid() const189 bool GeoDataLatLonQuad::isValid() const
190 {
191     return d->m_bottomLeft.isValid() && d->m_bottomRight.isValid()
192            && d->m_topLeft.isValid() && d->m_topRight.isValid();
193 }
194 
195 }
196