GEOS 3.15.0dev
SplitLinealAtPoint.h
1/**********************************************************************
2*
3 * GEOS - Geometry Engine Open Source
4 * http://geos.osgeo.org
5 *
6 * Copyright (C) 2026 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/export.h>
18#include <memory>
19#include <utility>
20
21// Forward declarations
22namespace geos::geom {
23class CircularString;
24class CompoundCurve;
25class CoordinateXY;
26class Curve;
27class LineString;
28class SimpleCurve;
29}
30
31namespace geos::operation::split {
32
33class GEOS_DLL SplitLinealAtPoint {
34
35public:
47 static std::pair<std::unique_ptr<geom::SimpleCurve>, std::unique_ptr<geom::SimpleCurve>>
48 splitSimpleCurveAtVertex(const geom::SimpleCurve& sc, std::size_t i);
49
57 static std::pair<std::unique_ptr<geom::SimpleCurve>, std::unique_ptr<geom::SimpleCurve>>
58 splitSimpleCurveAtPoint(const geom::SimpleCurve &sc, std::size_t i, const geom::CoordinateXY &pt);
59
68 static std::pair<std::unique_ptr<geom::Curve>, std::unique_ptr<geom::Curve>>
69 splitCompoundCurveAtPoint(const geom::CompoundCurve &sc, std::size_t i, std::size_t j, const geom::CoordinateXY &pt);
70
72 static std::pair<std::unique_ptr<geom::CircularString>, std::unique_ptr<geom::CircularString>>
73 splitCircularStringAtPoint(const geom::CircularString &ls, std::size_t i, const geom::CoordinateXY &pt);
74
77 static std::pair<std::unique_ptr<geom::CircularString>, std::unique_ptr<geom::CircularString>>
78 splitCircularStringAtVertex(const geom::CircularString &cs, std::size_t i);
79
81 static std::pair<std::unique_ptr<geom::LineString>, std::unique_ptr<geom::LineString>>
82 splitLineStringAtPoint(const geom::LineString &ls, std::size_t i, const geom::CoordinateXY &pt);
83
85 static std::pair<std::unique_ptr<geom::LineString>, std::unique_ptr<geom::LineString>>
86 splitLineStringAtVertex(const geom::LineString &ls, std::size_t i);
87
88};
89
90}
Definition Angle.h:26