1 // SPDX-License-Identifier: LGPL-2.1-or-later
2 //
3 // SPDX-FileCopyrightText: 2013 Mayank Madan <maddiemadan@gmail.com>
4 //
5 
6 #ifndef GEODATALATLONQUAD_H
7 #define GEODATALATLONQUAD_H
8 
9 #include "GeoDataCoordinates.h"
10 #include "GeoDataObject.h"
11 #include "MarbleGlobal.h"
12 
13 namespace Marble {
14 
15 class GeoDataLatLonQuadPrivate;
16 
17 /**
18  */
19 class GEODATA_EXPORT GeoDataLatLonQuad: public GeoDataObject
20 {
21 public:
22     GeoDataLatLonQuad();
23 
24     GeoDataLatLonQuad( const GeoDataLatLonQuad &other );
25 
26     GeoDataLatLonQuad& operator=( const GeoDataLatLonQuad &other );
27     bool operator==( const GeoDataLatLonQuad &other ) const;
28     bool operator!=( const GeoDataLatLonQuad &other ) const;
29 
30     ~GeoDataLatLonQuad() override;
31 
32     /** Provides type information for downcasting a GeoNode */
33     const char* nodeType() const override;
34 
35     qreal bottomLeftLatitude( GeoDataCoordinates::Unit unit ) const;
36     qreal bottomRightLatitude( GeoDataCoordinates::Unit unit ) const;
37     qreal topRightLatitude( GeoDataCoordinates::Unit unit ) const;
38     qreal topLeftLatitude( GeoDataCoordinates::Unit unit ) const;
39 
40     qreal bottomLeftLongitude( GeoDataCoordinates::Unit unit ) const;
41     qreal bottomRightLongitude( GeoDataCoordinates::Unit unit ) const;
42     qreal topRightLongitude( GeoDataCoordinates::Unit unit ) const;
43     qreal topLeftLongitude( GeoDataCoordinates::Unit unit ) const;
44 
45     void setBottomLeftLatitude( qreal latitude, GeoDataCoordinates::Unit unit );
46     void setBottomRightLatitude( qreal latitude, GeoDataCoordinates::Unit unit );
47     void setTopRightLatitude( qreal latitude, GeoDataCoordinates::Unit unit );
48     void setTopLeftLatitude( qreal latitude, GeoDataCoordinates::Unit unit );
49 
50     void setBottomLeftLongitude( qreal longitude, GeoDataCoordinates::Unit unit );
51     void setBottomRightLongitude( qreal longitude, GeoDataCoordinates::Unit unit );
52     void setTopRightLongitude( qreal longitude, GeoDataCoordinates::Unit unit );
53     void setTopLeftLongitude( qreal longitude, GeoDataCoordinates::Unit unit );
54 
55     GeoDataCoordinates& bottomLeft() const;
56     void setBottomLeft( const GeoDataCoordinates &coordinates );
57 
58     GeoDataCoordinates& bottomRight() const;
59     void setBottomRight( const GeoDataCoordinates &coordinates );
60 
61     GeoDataCoordinates& topRight() const;
62     void setTopRight( const GeoDataCoordinates &coordinates );
63 
64     GeoDataCoordinates& topLeft() const;
65     void setTopLeft( const GeoDataCoordinates &coordinates );
66 
67     bool isValid() const;
68 
69 private:
70     GeoDataLatLonQuadPrivate* const d;
71 };
72 
73 }
74 
75 #endif
76