34 #include "MeshKernel/Definitions.hpp"
35 #include "MeshKernel/Mesh2D.hpp"
36 #include "MeshKernel/UndoActions/CompoundUndoAction.hpp"
37 #include "MeshKernel/UndoActions/UndoAction.hpp"
54 [[nodiscard]] std::unique_ptr<UndoAction>
Compute(
Mesh2D& mesh,
const UInt edgeId)
const;
61 UInt SplitEdge(
Mesh2D& mesh,
const UInt edgeId, std::vector<UInt>& edgesToDelete, CompoundUndoAction& undoActions)
const;
66 void SplitElement(
Mesh2D& mesh,
70 CompoundUndoAction& undoActions,
71 std::vector<UInt>& edgesToDelete)
const;
74 void SplitFirstLoopElement(
Mesh2D& mesh,
79 CompoundUndoAction& undoActions,
80 std::vector<UInt>& edgesToDelete)
const;
83 void SplitAlongRow(
Mesh2D& mesh,
84 const std::vector<UInt>& elementIds,
85 const std::vector<UInt>& edgeIds,
86 CompoundUndoAction& undoActions,
87 std::vector<UInt>& edgesToDelete)
const;
90 void CollectElementsOneSideOfEdge(
const Mesh2D& mesh,
93 std::vector<UInt>& partialElementIds,
94 std::vector<UInt>& partialEdgeIds,
95 bool& loopDetected)
const;
98 void CollectElementsToSplit(
const Mesh2D& mesh,
const UInt edgeId, std::vector<UInt>& elementIds, std::vector<UInt>& edgeIds)
const;
104 bool CanBeSplit(
const Mesh2D& mesh,
const UInt edgeId)
const;
107 bool IsValidEdge(
const Mesh2D& mesh,
const UInt edgeId)
const;
110 UInt OppositeEdgeId(
const Mesh2D& mesh,
const UInt elementId,
const UInt edgeId)
const;
113 bool IsQuadrilateral(
const Mesh2D& mesh,
const UInt elementId)
const;
116 UInt GetNextElement(
const Mesh2D& mesh,
const UInt elementId,
const UInt edgeId)
const;
119 void GetNextEdge(
const Mesh2D& mesh,
UInt& elementId,
UInt& edgeId)
const;