GEOS  3.13.1
CurvePolygon.h
1 /**********************************************************************
2  *
3  * GEOS - Geometry Engine Open Source
4  * http://geos.osgeo.org
5  *
6  * Copyright (C) 2024 ISciences, LLC
7  *
8  * This is free software; you can redistribute and/or modify it under
9  * the terms of the GNU Lesser General Public Licence as published
10  * by the Free Software Foundation.
11  * See the COPYING file for more information.
12  *
13  **********************************************************************/
14 
15 #pragma once
16 
17 #include <geos/geom/SurfaceImpl.h>
18 
19 namespace geos {
20 namespace geom {
21 
22 class GEOS_DLL CurvePolygon : public SurfaceImpl<Curve> {
23  friend class GeometryFactory;
24 
25 public:
26  ~CurvePolygon() override = default;
27 
28  double getArea() const override;
29 
30  std::unique_ptr<Geometry> getBoundary() const override;
31 
32  std::unique_ptr<CoordinateSequence> getCoordinates() const override;
33 
34  std::string getGeometryType() const override;
35 
36  GeometryTypeId getGeometryTypeId() const override;
37 
38  bool hasCurvedComponents() const override;
39 
40  void normalize() override;
41 
42 protected:
43  using SurfaceImpl::SurfaceImpl;
44 
45  Geometry* cloneImpl() const override;
46 
47  int
48  getSortIndex() const override
49  {
50  return SORTINDEX_CURVEPOLYGON;
51  }
52 
53  Geometry* reverseImpl() const override;
54 };
55 
56 
57 }
58 }
GeometryTypeId
Geometry types.
Definition: Geometry.h:74
Basic namespace for all GEOS functionalities.
Definition: Angle.h:25